程序员生产力悖论

本文是翻译,版权归原作者所有


程序员好像是比较有生产力的人群。

你总是看到他们在桌子上打字;他们反感会议因为他们想回到桌子前继续写代码。当被询问的时候,他们会说没有足够时间写代码,他们越早开始写代码,就越早完成工作。

因此写代码必须是最重要的事情,对吗?

如果程序员平均每天写50行生产代码。一个50,000行的程序将需要1,000个人天来完成。这个50,000行的清单能够被一名程序员以每天1,000行的速度或大约50个人天来完成。

那么开发人员在剩下的950天里到底在做什么?

在提出这个问题之前,先做一个简单的观察。Capers Jones已经就成千上万个项目比对了很多方法论(RUP, XP, Agile, Waterfall等)和编程语言,得出结论,认为程序员每个月写325-750行代码,低于上面建议的每月1000行。即使程序员每天不能达到平均的50行代码,下面也是明显的:

代码的不同组合

现实是开发人员只有一部分时间是实际花在写代码上的。如果一个开发者一直在敲代码,那么他们会真正试着代码的不同组合,直到他们最后找到管用的组合。

或更准确地说,直到QA或业务分析人员回来后、让他们知道有一个问题时,才能满足需求的组合。

这就是为什么在使用键盘之前规划他们代码的开发人员要比其他开发人员更优秀。不仅仅只有很少开发人员在写代码之前会真正规划代码,而且经验年限也不能教会开发人员去学习规划。事实上,过去40年的研究表明,开发人员的生产力不会随着经验年限而改变。(参考《No Experience Required!》)

经验年限不会带来更高的生产力。

更有意思的是,强调规划代码的方法论已经存在相当长时间了。Watts Humphrey是个体软件过程(Personal Software Process,PSP)的创造者。使用PSP已经被测量出来了:

PSP能够提高21.2%的生产力和31.2%的质量。

jquery白板制作者笔记

如果有兴趣,还有很多其他论证过的提高代码质量、但通常没有使用的方法(参考《Not Planning is for Losers》)。

如果你的开发人员在键盘旁边、而没有在白板上规划,那么很可能你的生产力不会高到哪去。

书目

原文地址:http://java.dzone.com/articles/programmer-productivity 注1:http://book.douban.com/subject/25788705/

译文:程序员生产力悖论 》| 腊八粥