為什麼專案估算偏差如此之大?

csdn發表於2013-09-17

  在軟體開發過程中,估算是一個非常重要的環節,對於專案計劃、進度控制等都具有重要的意義。但是估算也是一個比較難的“技術活”,因為是“估”,所以往往會存在一些偏差,而這些偏差對於一個專案來說,有時可能會導致多花費一些不必要的金錢,還有可能影響公司的聲譽和員工的積極性。

  而哪些因素會導致估算偏差呢?開發者Alex E. Fish給出了以下提示。

為什麼專案估算偏差如此之大?

  沒有充分考慮需求

  如果你沒有充分考慮到所有的需求,那麼估算一個任務將花費多長時間是毫無意義的。更多的需求意味著更復雜的實現,這當然也需要更多的時間來完成。

  估算了測試時間,但沒有估算修復時間

  估算應該考慮到所有的測試時間以及修復bug的時間。單元測試、BDD(Behavior Driven Development,行為驅動開發)測試、測試人員進行手工測試,這都是需要花費時間的。並且,開發人員查詢和修復bug同樣也需要時間。更復雜的任務有可能會包含更多的bug,這意味著需要花費更多的時間來跟蹤和修復它們。

  假定開發者每天8小時都在編碼

  就算開發者每天上班8個小時(不加班情況下),但是這不代表8個小時都在編碼,其他一些瑣事往往會令生產率大大降低,比如會議、電子郵件、同事之間的IM訊息、詢問問題等。開發者從工作中斷恢復到工作狀態,往往也需要15分鐘時間。有些時候,開發者一天只有2個小時的時間用於編碼。

  按天估算,沒有按小時估算

  所有的任務都應該被分解成2~16小時的塊任務。這是一個很好的規則,可以讓你獨立地看待每個任務,並能夠把所有因素都考慮在內,減少估算偏差的機會。

  讓非專案人員來估算

  應該由參與編寫軟體的開發者們來進行估算。他們可以根據自身經驗、開發速度對專案有一個更準確的把握。這也避免了由於A設定的進度過快,而導致B被追究責任。

  忘記過去

  George Santayana曾說:“忘記過去的人註定要重蹈覆轍。”如果這不是你的第一個專案,那麼最好回頭看看過去的專案。查詢你以前曾參與過的同一領域中的類似規模/要求的專案,並將它作為一個參考點。

  忽略停工期

  如果專案是一個長期專案,或者開發者在夏季需要有一個假期,那麼在估算時也應該考慮在內。必要時,考慮設定一個適當的緩衝期。

  過於確切

  將專案估算在一個確切的期限內或小時數內是不現實的,這也是無法實現的,最好的辦法是估算一個範圍,包括最好的情況下、最有可能的情況下、最壞的情況下的範圍。

  總結:儘管你不喜歡估算,但也要認真對待

  估算是一個應該認真對待的工作,也是每一個開發者必備的技能。你和你的同事都應該掌握並進行實踐。一個好的估算的做法是人人蔘與。

  估計沒有人喜歡估算,我個人認為這是軟體開發工作中最糟糕的部分。而估算也從來都不會真正可靠或者完全準確,但還是希望上文這些內容可以為你帶來一些幫助。

  英文原文:Poor developer estimations AKA Guesstimation

相關文章