13.4軟件項目的估計
阿超:大家都來談談我們如何估計軟件項目需要的時間吧。我們在第二篇中有過討論和練習。我先說一點,下面三個詞匯是有區(qū)別的:
估計(Estimation)——繞王屋村步行一圈,我估計要花一個小時。
目標(Goal)——領導說讓我們30分鐘就要完成。
決心(Commitment)——那我們決心豁出去了,跑步前進!爭取20分鐘完成任務!
用軟件項目為例子:
估計——估計這個項目要花至少5到7個月的時間。
目標——領導說:但是我們要向“十一”獻禮,只有4個月的時間了!
決心(之一)——那咱們拼了!我們爭取在“十一”之前完成所有任務,向“十一”獻禮!
決心(之二)——那我們爭取在“十一”拿出一個可用的產品,但是不一定有所有功能。
決心(之一)、(之二)是不一樣的。
另一件事情是,從一個粗略的模型到一個最終的產品需要很長的時間。一個演示版出現后,很多領導不理解為啥還要花N個月的時間做這個軟件,大部分功能不都已經在那兒了嗎?
對于一個時間驅動的項來說,如果你在“粗略的模型”階段浪費了一個月的時間,等待各級領導做決定(這是很容易發(fā)生的事情)。你就得在項目開發(fā)過程中把這一個月的時間奪回來——這是非常困難的事情。
二柱:在做上一個項目的時候,我們的領導大智在路上碰到我,提到客戶剛剛和他通了電話,有一個新的功能需求如此如此,問我需要多長時間。我脫口而出,也就是三五天吧。后來和大牛討論之后,三五天變成了七八天。然后在實施過程中,原來認為的小問題變成了大問題,最后花了半個月才勉強完成,而且另外兩個同事還幫了不少忙。聽說大智告訴了客戶“五天交貨”,弄得我非常下不來臺。所以我的教訓是不要“脫口而出做估計”——因為你在匆忙之中的估計會傳播得非常遠,你再也無法更改。
大拴:作為開放人員,我們還要為我們的領導和客戶設定正確的期望值——到底我需要多長時間才能開發(fā)出客戶滿意的產品。如果我們總是眼高手低——保證三五天,結果半個月。那即使我們在這半個月中拼了老命,做得很好,客戶和老板還是不滿意。
大牛:估計活動本身也需要時間。我很高興地看到我們有專門的時間來做“估計”這件事情。以前都是拍拍腦袋,或者在飯桌上你一言我一語就決定了。
阿亨:我們還要用上一次項目的數據作為參考,如果我們上一次過于樂觀地估計了進度,那么這次我們要引以為戒。
果凍:兵法云,置之死地而后生,不少成功的經理都有意地縮短估計時間,以激發(fā)團隊的士氣。
大家:(紛紛說)果凍,你在哪本書上看到這樣的妙計?你去投奔這些成功的經理去吧。
阿亨:(在白板上一邊畫圖,一邊說)果凍的兵法會產生這樣的惡性循環(huán)(如圖13-1所示)。
圖13-1果凍的兵法:惡性循環(huán)
阿超:還有一種可能是,團隊成員不再相信項目的計劃,項目經理的喊話會像“狼來了” 一樣沒有效果。