高效的程序员是聪明和懒惰的
我之所以要用聪明和懒惰来形容高效的程序员,原因有以下几点:
- 聪明是因为能找出问题的正解
- 懒惰是因为不愿写多余的代码(即不会长时间地坐在电脑前)
好的软件开发过程应该是懒惰的软件开发,亦称耐心开发,原因是开发人员在写代码之前会先将时间花在透彻地考虑各种解决方案上。
这是懒惰开发的主旨,即在不了解之前就不会开始写代码。这个负责任的态度减少了他们所需要写的代码量。
主要需要做到以下几点:
- 真正了解需求、获得产品管理,关键是要明确什么才是实际要求
- 确保与团队中其他开发人员之间的顺利对接
这些过程都是需要时间的。然而,不少开发人员往往一拿到问题就开始急于敲代码,然后再花费大把大把的时间修改代码。
事实上,只有5%都不到的时间才真正是有生产力的。所以下回你要是看到某个开发人员将他100%的时间都紧盯着屏幕,不与其他人做任何互动,那么只能说你找来的程序员可不太好啊。
这是一个不好的迹象——如果开发人员总是写代码的话
高效的开发人员会时不时地检查对需求的理解,以确保与代码相一致。富有生产力的开发人员会经常与产品经理/业务分析员分析交流,也时常可以看到他们与同事和架构师出双入对。当然资深的开发人员也会因其自身丰富的经验而变得非常有效率。事实上,最好的开发人员与其他人相比:
- 编写初始编码所用的时间约为1比20
- 调试时间的比例超过1比25
- 程序执行速度大概是1比10
- 程序大小为1比5
然而,总的说来,随着时间的推移,开发人员的生产效率并没有随之而增长,即从成千上万的开发人员那儿可以证实,丰富的经验和生产力是无关的。事实上,我们的生产效率在过去50年间已经提高了8倍,所以,从总体上说,经验与生产力水平是不相干的。
为什么在代码上的懒惰会变得如此重要?
很多人很勤快,还没有好好理解需求就开始动手写代码。并且,迅速编写的代码往往不能很好的适应其他人的代码。而这一问题往往只有在集成代码的时候才能被发现,但是已经晚了。优秀的开发人员很有耐心,他知道快速编码的风险。
开发人员在心理上很重视他们的代码
差的开发人员往往不愿意去改变自己写得不好的代码。他们只会选择增添更多的代码来弥补不足,而不会重写不理想的代码。更糟的是,他们往往会去责怪其他人有不良的代码,而不愿意自我检讨。在他们手中,最终只会导致一个严重缺陷和不稳定的系统。
当然,好的开发人员也会写出差的代码,非最优的代码。所不同的是,他们愿意认识自己的不足,并且对于有问题的部分:
- 如果代码大致还是能正确运行的,那就重构代码
- 否则,就重写代码
当开发人员生产并维护了非最优代码,随着时间的推移,那么修改这些代码就会变得越来越难。这是因为你的同事需要在这些代码接口上写代码,然后再创建 繁杂的接口等等使用这些非最优代码。并且随着代码库的发展,会有更多更多的代码是依赖这些原始代码编写出来的。故而,后面写的代码再怎么好也几乎增加不了 代码的稳定性,也不能对略有改动时bug增殖的情况产生影响。总之,开发过程会变得越来越慢、越来越难。
所以,如果有什么疑问,那么不妨偷个懒,晚点再写代码,须知,磨刀不误砍柴工啊!
译文链接:http://原网站已经失效/article/productive-programmer-lazy-smart.html
英文原文:Productive Developers are Smart and Lazy
翻译作者:码农网 – 小峰