如何提高项目的生产率,保证项目按期交付是每个软件开发项目经理都需要面对的难题。关于这方面的研究,在《人月神话》、《人件》等书籍都有很详细的论述。研究表明,不同程序员之间的生产率最高差别在40倍以上。虽然笔者没有亲睹这种样例,但是笔者的开发和管理生涯中所发现的相同技术水平程序员之间的生产率最大差距可达4倍。这个数据就发生在笔者的一个项目中,这让笔者感到非常的震惊。如果说40倍的生产率差距可能会有技术能力、工作经验、熟悉程度诸多因素的影响。那么,笔者所发现的4倍生产率差距却更让笔者感到不可思议。
案例
程序员J:四年开发经验
程序员L:三年开发经验
程序员Y:五年开发经验
技术能力:Y > J > L
J,L,Y同时进入一个项目组,开发时间为30个工作日,即6周,包括需求分析、设计、编码和集成。其中编码和单元测试时间为10个工作日(2周)。产生的工作绩效为:
程序员 规模(代码行)
J 1500
L 3600
Y 6000
可见,当程序员的技能达到一定水平后,技能与生产率并不成正比,并不是技术水平越高的程序的生产率越高。
一、最后期限
很多程序员都会有类似的经历:
1月1日,项目经理说:“小张,在1月5日之前把这项工作做完,详细的需求文档我已经发到你的邮箱中。”
1月1日,小张对需求文档瞥了几眼,估计2天就可以完成,嘀咕:“现在才是1月1日嘛。这项任务要1月5日才提交。我还有时间,不用管它,还是先看我的小说吧。”
1月2日,小张继续看他那心爱的小说......
1月3日,小张继续看他那心爱的小说......
1月4日 9:00,小张开始看需求文档,2小时后中断,因为他需要修复系统的一个Bug。
1月4日 18:00,小张正在埋头苦干,因为明天就要提交工作,可是一个代码还没有写呢。
1月4日 23:00,小张完成大部分工作,下班走人。
1月5日 9:00,项目经理问:“小张,那个功能做完了吧?”小张答道:“就快了,今天提交没有问题。”
1月5日 14:00,小张发现有一部份代码需要重写。用户的要求是需要一个可配置的功能,而小张却写成了硬代码。
1月5日 17:00,项目经理来到小张面前:“小张,你中午不是说今天提交没有问题吗?怎么现在还没有看你提交代码?”小张委屈地答道:“经理,遇到一点小麻烦。不过相信我,下班之前一定完成。”
1月5日 18:00,项目经理急匆匆赶到小张的座位旁:“小张,请马上提交代码,不然就来不及了。”小张这时也急了:“你不要催我。这个功能麻烦大了,没有想象得那么简单。我今天晚上得加班。”项目经理无可奈何地走了。小张加班到凌晨1点。但程序还是有一些问题。
1月6日,小张仍然在修改程序......
1月7日,小张仍然在修改程序......
1月8日,总算是修改完成。已经拖了三天,来不及测试,只能匆匆把代码提交。
后来,又经过5次修改,直到1月20日,这个功能总算是彻底完成。
小张向项目经理请了一周假。因为这两周来几乎每天晚上都是加班解决问题。
许多的程序员还会有这样的经历:
4月1日,项目经理:“小王,这个功能交给你,需求你看了吗?你看需要多长时间完成?”
小王:“哦,经理,这个功能我刚看过,大约需要1周