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