程序員軟件項(xiàng)目預(yù)估的寶貴經(jīng)驗(yàn)
非常常見的例子
我們經(jīng)常能聽到項(xiàng)目經(jīng)理和開發(fā)人員之間類似于這樣的對話:
PM:“你能不能給我一個開發(fā)某某功能所需要的預(yù)估時間?”
程序員:“一個月”
PM:“一個月時間太長了,我們只有一周時間!”
程序員:“***三周”
PM:“我只能最多給你兩周時間”
程序員:“好吧,成交!”
呵呵!猜猜接下來是什么情況?如果你在下決定之前能快速考慮一下預(yù)算與目標(biāo)之間的差距,那你就不至于這樣草率,也不至于在接下來的時間里焦頭爛額。
結(jié)論截然不同的簡圖
在課程中有這么一張圖片,它強(qiáng)調(diào)了精確預(yù)估的重要性。我粗略地照著原圖重新畫了一張:
圖片表達(dá)的中心思想為,我們需要將精確預(yù)估作為目標(biāo)。對此我不置可否。事實(shí)上,我想說的是,我們的預(yù)估永遠(yuǎn)達(dá)不到100%的精確。
為什么呢?因?yàn)轭A(yù)估本身就是一種并不精確的科學(xué)。雖然有很多很多方法(可能甚至比我們需要都要多)可以讓我們擅長估計,但是總會有一些不確定性。沒錯,100%精確自然是***的,但是在實(shí)踐過程中,這是不可能的。
不僅如此,低估時間的成本也是不可承受之重。先看看例子:
- 項(xiàng)目可能會失?。ㄗ顗牡那闆r)。
- 不斷地通宵達(dá)旦
- 高壓和焦慮
- 項(xiàng)目可能會延遲
- 質(zhì)量會受影響
- 成本增加
- 用戶表示不滿
有時候預(yù)估時間結(jié)果是非常重要的。因?yàn)槿绻愎栏吡?,功能依然可以完成,其代價為耗費(fèi)的時間多。但是如果你估低了時間,那么可能指定功能你甚至就完成不了。
預(yù)估后項(xiàng)目出現(xiàn)異常的原因之一
軟件項(xiàng)目中的混亂源于精確的預(yù)估。
你知道是什么原因造成一個軟件項(xiàng)目出現(xiàn)混亂的嗎?原因就是項(xiàng)目進(jìn)度落后于計劃!我們將這種現(xiàn)象稱之為正反饋效應(yīng)(不要望文生義,正的反饋并不都是好的)。
還有一個預(yù)估方法是給出一個范圍。這么做的效益/成本我們暫時不考慮,下面是使用范圍估計***卻發(fā)現(xiàn)低估的例子:
下面是高估的例子:
曲線下面的陰影部分代表需要付出的努力、成本和計劃進(jìn)度,看上去明顯比上圖高估所需要的少得多。
當(dāng)然100%的預(yù)估精準(zhǔn)度自然是最為理想的,但是在實(shí)際操作中,其錯誤成本太高。
你的團(tuán)隊(duì)是否需要常常加班熬夜?下面這句話是我在一篇文章中看到的,印象非常深刻:
大多數(shù)軟件開發(fā),項(xiàng)目總是落后于原定計劃。這樣團(tuán)隊(duì)中的人就沒有時間偷懶。
這種思想在我們這個行業(yè)非常普遍。我真心是想舉雙手雙腳反對!這種想法顯然是不公平不公正的。
因?yàn)楹芏嚅_發(fā)人員在預(yù)估時,大多會有20%-30%樂觀余度,換言之就是,開發(fā)人員普遍性會低估實(shí)際完成項(xiàng)目所需要的時間。這一點(diǎn)我深信不疑。
由此看來,精確的預(yù)估精度很有必要。但是結(jié)合這些簡圖,更重要的是,寧可高估??!