十届MVP大牛教你如何成为技术牛人,不,软件工匠!

简介:

中生代技术走进冰鉴科技,10届微软MVP朱永光老师带来了一场《如何成为技术牛人软件工匠》的精彩分享 。


朱老师作为一个写了20年程序的前辈,为我们分享了如何成为一名软件工匠师。在我们技术人的心目中,朱老师就是我们的偶像。


如何让一个技术人永葆年轻,不至于因为技术的进步而落伍,朱老师给出了一个肯定的答案。


那就是:我们应该稳打稳打,以提高成就感为目标,而非为了单纯的工作而工作。


同时老朱老师给我们着重推荐了一本书: 《软件工艺师:专业、务实、自豪》。


以下是朱老师在沙龙中的精彩分享视频实录





软件工匠宣言(Manifesto for Software Craftsmanship)

作为有理想的软件工匠,我们一直在身体力行,提升专业软件开发的标准,并帮助他人学习此工艺。

通过这些工作,我们建立了如下价值观:


不仅要让软件工作,

更要精益求精


不仅要响应变化,

更要稳步增加价值


不仅要有个体与交付,

更要形成专业人员的社区


不仅要与客户合作,

更要建立卓有成效的伙伴关系


也就是说,左项固然重要,右项同样不可或缺。


所谓精益求精,就是你写出来的代码,3个月后、乃至3年后,自己和其他人也看得懂,也敢碰。


就是说,无论应用程序有多旧,开发者都能轻易理解其原理;程序的副所用都在明确掌控之中;测试用例的覆盖度很高,测试代码也写得比较可靠,程序的设计清晰而简洁,业务逻辑也都很好地表述在代码之中。


代码必须可维护,其行为也必须可预知。开发者必须知道修改某部分代码所产生的后果,这样一来,他们就不用再担心会把什么地方改错了。


为了完善程序,开发者必须敢于修改代码。以测试驱动的方式来开发程序,令设计保持简洁,并把业务语言表述在代码之中,可以最好地保持代码的整洁与精良。


软件开发项目,大部分目的还是为了获取回报。


要持续提升软件的价值,就需要对软件不断进行优化,持续改善代码结构,令代码整洁、易于扩展、易于测试,并易于维护。


软件工匠应该保证:软件做得越久、做得越大,公司从中获得的收益就越多。在项目中添加新功能或修改现有功能的速度,应该和项目创设之初一样迅捷。


Bob大叔最先把这条纪律套用到软件开发上面,那就是:修改完代码时,应该把它整理得比修改前更干净。


要想编写能够持久运行的程序,必须首先关注软件质量。大型程序在开发出来几年之后,又重写一遍,这是相当不划算的。许多时候,决定重写程序的原因在于,继续维护下去的代价实在太高了。


反复做同一件事,却盼着能有不同的结果,这是精神错乱的表现。

——阿尔伯特·爱因斯坦

既然类似于手艺人,那么最主要的工作之一就是带徒弟。三人行必有我师,师徒关系不是固定的,是相互学习的过程。


相互学习是提升开发者水平的最佳方式。撰写博客文章、为开源项目做贡献、公开发布代码、参与本地社团、与其他开发者结对编程——这些都是促进软件行业发展的好办法。

不管作为雇员还是乙方,和雇主客户的关系不应该是单纯的雇佣关系。专业的开发者不应该是那种每天只顾按时上班、埋头工作,并按指令办事的人。


会积极参与项目并帮助其成功,会对需求提出质疑、理解业务、提出改进方案,也会与客户或雇主更有效率地合作。


软件工匠需要也想要以成功的项目来提升自己的名望,希望因自己的成就而自豪。交付高质量的软件并令客户满意,这对软件工艺师的职业生涯来说尤为重要。


把代码写好是特别关键的技能,然而它只是项目得以成功的因素之一。此外,还要帮助客户改进流程,为他们提供多种可行的方案,帮助他们删减毫无必要的规定,理解他们的业务领域,考虑他们所提出的需求是否真能提升软件产品的价值,给他们提供准确的信息和知识,帮助他们规划各项任务,帮助他们设定各任务的优先级,并参与那些虽与编码无关,但却对项目很重要的事务。所谓“建立高效的伙伴关系”,意思就是要给客户提供全方位的增值服务。


有些开发者认为,凡是与代码无关的事就不用操心,这样的开发者不是真正的软件工匠。

反例:

Ex1:程序员小张遇到了一个开发问题,很着急,想到了有几个群,于是到群里发了他的问题,坐等回答,发现没有人回答,就直接对话群主的QQ,群主也不回答,于是小张就搜索,突然搜到博客园有个帖子讲解了相关话题,他看完就给博主留言,我的邮箱是:XXXXX@qq.com,麻烦博主把源码发给我一下,谢谢。


Ex2:程序员小张学.NET已经工作3年了,工资还是10000,和公司提涨工资也没答应,想跳槽又犹豫,这时某个前辈对他说,你去看书吧,多看一些书,例如 《Visual C# 从入门到精通》,《CLR via C#》《Javascript权威指南》等等,于是小张买回来了, 随手翻了翻发现有些东西是他已经会的,有些看不懂的好像又用不到,而且书这么厚,要不要浪费时间去看呢?小张就这样反复纠结了半年,依然每天上班工作,下班LOL,偶尔还抱怨一下工资低。

小编建议

多写作练习,多给中生代投稿

(全文完)


来源:中生代技术

原文链接

相关文章
|
机器学习/深度学习 搜索推荐 自然语言处理
KDD 2019 | 基于知识的个性化推荐理由生成解析
当前电商场景之下,单纯的商品推荐已不足以满足用户需求,基于内容的推荐应运而生。那么其中的关键问题就是我们要为推荐的商品产出优质的推荐理由,从而可以:帮助消费者做出选择;开拓用户对商品的兴趣;引导多种产品以提高多样性。
3661 0
|
8月前
|
人工智能 边缘计算 安全
《探秘鸿蒙NEXT中的人工智能核心架构》
华为HarmonyOS NEXT将AI与操作系统深度融合,开启智能新时代。其核心架构包括:1) 基础层的全栈硬件和云端协同算力系统,提供强大动力支持;2) 模型层的盘古大模型,赋予小艺智能助手超强能力;3) 框架层的鸿蒙原生智能框架与意图框架,实现多模态个性化场景体验;4) 应用层的开放API和控件,支持第三方应用集成;5) 安全隐私层的星盾安全架构,保障数据安全。各层协同工作,为用户带来智能、便捷、安全的体验,并推动智能生态发展。
495 14
|
人工智能 算法 Java
AI:互联网程序设计竞赛之蓝桥杯大赛的简介、奖项设置、大赛内容以及蓝桥杯与ACM(ICPC)的四个维度对比之详细攻略
AI:互联网程序设计竞赛之蓝桥杯大赛的简介、奖项设置、大赛内容以及蓝桥杯与ACM(ICPC)的四个维度对比之详细攻略
AI:互联网程序设计竞赛之蓝桥杯大赛的简介、奖项设置、大赛内容以及蓝桥杯与ACM(ICPC)的四个维度对比之详细攻略
|
8月前
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
201 3
|
运维 监控 安全
构建高效运维体系
本文将探讨如何通过科学的方法与先进的技术,实现高效、稳定、安全的IT运维管理。我们将从运维流程优化、自动化工具应用、监控告警机制、故障应急处理以及团队建设等方面,全面解析高效运维体系的构建方法与实践。
212 2
|
算法 安全 Unix
常见加密算法介绍及比较
常见加密算法介绍及比较
585 0
|
弹性计算 异构计算 AI芯片
2023阿里云GPU服务器租用价格、配置选择及购买指南
2023阿里云GPU服务器租用价格、配置选择及购买指南,阿里云GPU服务器租用价格表包括包年包月价格、一个小时收费以及学生GPU服务器租用费用,阿里云GPU计算卡包括NVIDIA V100计算卡、T4计算卡、A10计算卡和A100计算卡,GPU云服务器gn6i可享受3折优惠,阿里云百科分享阿里云GPU服务器租用价格表、GPU一个小时多少钱以及学生GPU服务器收费价格表
512 0
|
存储 数据管理 数据处理
阿里云对象存储价格
阿里云对象存储价格,阿里云对象存储OSS收费有两种计费模式,即包年包月和按量付费,包年包月是指购买存储包、流量包来抵扣OSS产生的存储费核流量费,OSS标准(LRS)存储包100GB优惠价33元、500GB存储包半年162元、OSS存储包40GB一年9元,OSS流量包100G 49元/月
945 0
|
JavaScript 前端开发 数据安全/隐私保护
用vitepress十分钟肝了一个博客,并把过去一年半每天的日常记录汇总了过来
其实一直有这样一个想法,想把自己的流水账记录,稍微整理一下,放在一个自己打造的个人博客下面,让知识不在孤零零的呆在哪里,有时候可能更方便自己,甚至可以启发很多同行......
907 0
|
Linux 网络安全 Windows
如何开启/关闭服务器防火墙
本文介绍了部分开启/关闭Windows和Linux系统防火墙的方法。
4606 0
如何开启/关闭服务器防火墙