程序员似乎是一群很有生产力的人。你总能看到他们在电脑桌前咯咯作响;他们焦急地等待着会议结束,希望能马上回去编程。当被问及时,他们总是说他们没有足够的时间来编写这些程序,需要立即开始编码,以便早日完成。看来敲代码肯定是最重要的事情,不是吗?如果一个普通的程序员一天能写出50行代码。一个50,000行代码的程序将需要1,000人/天来开发。在电脑中输入5万行代码,一个程序员一天可以记录1000行,需要50人/天。那么,这些程序员在剩下的950天里都在做什么呢?在搞清楚这个问题之前,让我们先来看一些简单的资料。CapersJones研究了数以万计的软件项目。通过比较各种软件开发方式(RUP、极限编程、敏捷开发、瀑布开发等)和各种编程语言,他发现一个程序员平均写的代码大约是325到750行,比1000行还少我们上面提到的每月线数。就算程序员不是每天只写50行代码,但是以下两点是很清楚的。开发方法的差异并不能解释程序员代码生产的不平衡。使用的编程语言无关紧要。现实情况是,程序员只有一小部分时间花在编写代码上。如果程序员将所有时间都花在敲代码上,那么他一定会尝试不同的代码组合,直到找到有效的代码组合。找到似乎符合要求的“代码组合”会更准确——如果测试人员或业务分析师不来告诉这些代码被破坏的话。这就是为什么喜欢在把手放在键盘上之前计划如何编写代码的程序员会比其他程序员更有效率。其实,不仅小部分程序员在写代码前做好计划,很多有多年编程经验的老程序员都不知道这个道理。一项长达40年的研究表明,程序员的开发效率不会随着经验的增加而增加。(见NoExperienceRequired!)多年的编程经验并不一定会带来高开发效率有趣的是,各种强调在编码之前进行计划的软件开发方法论已经存在了很长时间。例如,PersonalSoftwareProcess(PSP)创始人WattsHumphrey,据统计称:PSP可使生产效率提高21.2%,质量水平提高31.2%。像这样优秀的实用方法还有很多。简而言之,就像作家在写作之前必须构思文章的结构和内容一样,如果程序员在按下键盘之前没有思考片刻,那么他的开发效率很可能不会很高。英文原文:TheProgrammerProductivityParadox翻译链接:http://www.vaikan.com/the-programmer-productivity-paradox/
