如何提高項(xiàng)目的生產(chǎn)率,保證項(xiàng)目按期交付是每個(gè)軟件開發(fā)項(xiàng)目經(jīng)理都需要面對(duì)的難題。關(guān)于這方面的研究,在《人月神話》、《人件》等書籍都有很詳細(xì)的論述。研究表明,不同程序員之間的生產(chǎn)率最高差別在40倍以上。雖然筆者沒有親睹這種樣例,但是筆者的開發(fā)和管理生涯中所發(fā)現(xiàn)的相同技術(shù)水平程序員之間的生產(chǎn)率最大差距可達(dá)4倍。這個(gè)數(shù)據(jù)就發(fā)生在筆者的一個(gè)項(xiàng)目中,這讓筆者感到非常的震驚。如果說40倍的生產(chǎn)率差距可能會(huì)有技術(shù)能力、工作經(jīng)驗(yàn)、熟悉程度諸多因素的影響。那么,筆者所發(fā)現(xiàn)的4倍生產(chǎn)率差距卻更讓筆者感到不可思議。
案例
程序員J:四年開發(fā)經(jīng)驗(yàn)
程序員L:三年開發(fā)經(jīng)驗(yàn)
程序員Y:五年開發(fā)經(jīng)驗(yàn)
技術(shù)能力:Y > J > L
J,L,Y同時(shí)進(jìn)入一個(gè)項(xiàng)目組,開發(fā)時(shí)間為30個(gè)工作日,即6周,包括需求分析、設(shè)計(jì)、編碼和集成。其中編碼和單元測(cè)試時(shí)間為10個(gè)工作日(2周)。產(chǎn)生的工作績效為:
程序員 規(guī)模(代碼行)
J 1500
L 3600
Y 6000
可見,當(dāng)程序員的技能達(dá)到一定水平后,技能與生產(chǎn)率并不成正比,并不是技術(shù)水平越高的程序的生產(chǎn)率越高。
一、最后期限
很多程序員都會(huì)有類似的經(jīng)歷:
1月1日,項(xiàng)目經(jīng)理說:“小張,在1月5日之前把這項(xiàng)工作做完,詳細(xì)的需求文檔我已經(jīng)發(fā)到你的郵箱中?!?/SPAN>
1月1日,小張對(duì)需求文檔瞥了幾眼,估計(jì)2天就可以完成,嘀咕:“現(xiàn)在才是1月1日嘛。這項(xiàng)任務(wù)要1月5日才提交。我還有時(shí)間,不用管它,還是先看我的小說吧?!?/SPAN>
1月2日,小張繼續(xù)看他那心愛的小說......
1月3日,小張繼續(xù)看他那心愛的小說......
1月4日 9:00,小張開始看需求文檔,2小時(shí)后中斷,因?yàn)樗枰迯?fù)系統(tǒng)的一個(gè)Bug。
1月4日 18:00,小張正在埋頭苦干,因?yàn)槊魈炀鸵峤还ぷ?,可是一個(gè)代碼還沒有寫呢。
1月4日 23:00,小張完成大部分工作,下班走人。
1月5日 9:00,項(xiàng)目經(jīng)理問:“小張,那個(gè)功能做完了吧?”小張答道:“就快了,今天提交沒有問題?!?/SPAN>
1月5日 14:00,小張發(fā)現(xiàn)有一部份代碼需要重寫。用戶的要求是需要一個(gè)可配置的功能,而小張卻寫成了硬代碼。
1月5日 17:00,項(xiàng)目經(jīng)理來到小張面前:“小張,你中午不是說今天提交沒有問題嗎?怎么現(xiàn)在還沒有看你提交代碼?”小張委屈地答道:“經(jīng)理,遇到一點(diǎn)小麻煩。不過相信我,下班之前一定完成。”
1月5日 18:00,項(xiàng)目經(jīng)理急匆匆趕到小張的座位旁:“小張,請(qǐng)馬上提交代碼,不然就來不及了。”小張這時(shí)也急了:“你不要催我。這個(gè)功能麻煩大了,沒有想象得那么簡單。我今天晚上得加班?!表?xiàng)目經(jīng)理無可奈何地走了。小張加班到凌晨1點(diǎn)。但程序還是有一些問題。
1月6日,小張仍然在修改程序......
1月7日,小張仍然在修改程序......
1月8日,總算是修改完成。已經(jīng)拖了三天,來不及測(cè)試,只能匆匆把代碼提交。
后來,又經(jīng)過5次修改,直到1月20日,這個(gè)功能總算是徹底完成。
小張向項(xiàng)目經(jīng)理請(qǐng)了一周假。因?yàn)檫@兩周來幾乎每天晚上都是加班解決問題。
許多的程序員還會(huì)有這樣的經(jīng)歷:
4月1日,項(xiàng)目經(jīng)理:“小王,這個(gè)功能交給你,需求你看了嗎?你看需要多長時(shí)間完成?”
小王:“哦,經(jīng)理,這個(gè)功能我剛看過,大約需要1周