如何看待程序员开发效率的悖论

程序员看起来是非常高效的人。你经常看到他们在桌子上码字。他们迫不及待的开完会议,快点回到他们的桌子上继续编程。当被问起来为什么这样,他们会说他们没有足够的时间完成编码,越早开始,就能越快完成。

武汉PHP程序猿

 

因此写代码一定是最重要的事情,是这样吗?

如果普通程序员每天写50行产品代码。一个50000行的程序需要1000人天来完成。这50000行的代码清单可以由一个程序员一天写1000行左右或大概50人天完成。

那么开发者剩余的950天到底做了什么?

在回答这个疑问之前,让我们做一个简单的观察。Capers Jones比较了很多方法论(RUP、XP、Agile、Waterfall等)和许多项目上的编程语言,断定了程序员每个月的代码行数在325和750之间,少于上面提到的1000代码行每月的数量。即使程序员平均每天没有达到50行代码,下列的也是很清楚的。

  • 方法论不能解释明显的生产力差距

  • 任何语言都不占明显的生产力差距的比重

实际上只有很小部分开发者的时间是真正花在写有效代码上的。如果一个开发者一直在写代码,那么他们在努力尝试不同的代码组合,直到他们最终发现有效的代码组合。

武汉PHP-ABC

或者更加准确的说,在QA或业务分析人员返回来跟他们说出现问题之前,这个组合看起来是符合需求的。这就是为什么那些在敲键盘前规划代码的开发者常常比其他开发者做得更好。不仅只有一小部分开发者在编码前真的对代码做计划,拥有多年经验的人也不教开发者学着做计划。实际上,超过40年的研究表明,开发者效率不会随着经验年限而改变。

经验年限不会推动高效率

有趣的是,很多方法论围绕着强调规划代码这个话题已经有很长一段时间了。Watts Humphrey就是创建于个人软件过程(PSP)。 已经可以测量出使用PSP:

PSP可以提高21.2%的生产效率和31.2%的质量。

如果你感兴趣,还有很多其他不太经常使用的提高代码质量的证明方法。

如果你的开发者没有在白板上计划就在写代码,那么你的生产力效率不会有本应有的那么高。