1、承諾
如果你承諾在某天做成某事,就必須按時完成,即使它意味着你必須每天工作12個小時,放棄週末的休假。承諾是關於確定性,其他人會把你的承諾當真,據此擬定計劃。如果不能兌現承諾,他們的損失以及你的聲譽都會受到很大的影響。
2、預估
預估是一種猜測,不包含任何承諾的色彩。大多數軟件開發人員都很不擅長預估,這不是因爲他們沒有掌握關於預估的訣竅,而是根本沒有這樣的訣竅。
預估不是個定數,預估的結果是一種概率分佈。
Mike:你估計要多久完成Frazzle任務?
Peter:3天。
Mike:3天完成的概率有多大?
Peter:相當有可能。
Mike:能說個準數嗎?
Peter:百分之五六十吧。
Mike:也就是說如果給你4天,概率會更大點。
Peter:是的,其實可能需要5到6天,雖然我估計不用這麼久。
Mike:到底有多少把握呢?
Peter:嗅,我不清楚……6天內完成的把握有95%吧。
Mike:你的意思是可能也需要7天?
Peter:呢,如果事事都不順利的話。其實,如果事事都不順利,也可能需要10天到11天。但情況不太可能這麼糟糕。
現在我們開始接觸到真相了。Peter想的預估是概率分佈,概率分佈圖可能如下所示:
3、預估任務
在預估時,最重要的資源是你周圍的人,他們可以看到你看不到的東西。相比於自己單幹,他們可以幫你更精確地預估任務。
“德爾菲法”是一種估量方法,到現在已經演化出許多變種,其中一些是正式的,一些是非正式的。常見的方式如“亮手指”、規劃撲克等。
儀式雖然多樣,但相通點就是一組人一起預估完成時間,然後重複“討論——預估”的過程,直到意見統一。
4、大數定律
把大任務分成許多小任務,分開預估再加總,結果會比單獨評估大任務要準確很多。這是因爲小任務的預估錯誤幾乎可以忽略,不會對總的結果產生明顯影響。
5、結論:
-
預估是業務人員和開發人員之間最主要的障礙,業務方覺得預估就是承諾,而開發方認爲預估就是猜測。
-
專業人士一旦做了承諾,就會按時兌現。
-
多數情況下,專業人士是提供概率預估來描述期望的完成時間及可能的變數。