《程序員的職業素養》十——預估

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、結論:

  1. 預估是業務人員和開發人員之間最主要的障礙,業務方覺得預估就是承諾,而開發方認爲預估就是猜測。

  2. 專業人士一旦做了承諾,就會按時兌現。

  3. 多數情況下,專業人士是提供概率預估來描述期望的完成時間及可能的變數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章