為什麼專案估算偏差如此之大?
在軟體開發過程中,估算是一個非常重要的環節,對於專案計劃、進度控制等都具有重要的意義。但是估算也是一個比較難的“技術活”,因為是“估”,所以往往會存在一些偏差,而這些偏差對於一個專案來說,有時可能會導致多花費一些不必要的金錢,還有可能影響公司的聲譽和員工的積極性。
而哪些因素會導致估算偏差呢?開發者Alex E. Fish給出了以下提示。
沒有充分考慮需求
如果你沒有充分考慮到所有的需求,那麼估算一個任務將花費多長時間是毫無意義的。更多的需求意味著更復雜的實現,這當然也需要更多的時間來完成。
估算了測試時間,但沒有估算修復時間
估算應該考慮到所有的測試時間以及修復bug的時間。單元測試、BDD(Behavior Driven Development,行為驅動開發)測試、測試人員進行手工測試,這都是需要花費時間的。並且,開發人員查詢和修復bug同樣也需要時間。更復雜的任務有可能會包含更多的bug,這意味著需要花費更多的時間來跟蹤和修復它們。
假定開發者每天8小時都在編碼
就算開發者每天上班8個小時(不加班情況下),但是這不代表8個小時都在編碼,其他一些瑣事往往會令生產率大大降低,比如會議、電子郵件、同事之間的IM訊息、詢問問題等。開發者從工作中斷恢復到工作狀態,往往也需要15分鐘時間。有些時候,開發者一天只有2個小時的時間用於編碼。
按天估算,沒有按小時估算
所有的任務都應該被分解成2~16小時的塊任務。這是一個很好的規則,可以讓你獨立地看待每個任務,並能夠把所有因素都考慮在內,減少估算偏差的機會。
讓非專案人員來估算
應該由參與編寫軟體的開發者們來進行估算。他們可以根據自身經驗、開發速度對專案有一個更準確的把握。這也避免了由於A設定的進度過快,而導致B被追究責任。
忘記過去
George Santayana曾說:“忘記過去的人註定要重蹈覆轍。”如果這不是你的第一個專案,那麼最好回頭看看過去的專案。查詢你以前曾參與過的同一領域中的類似規模/要求的專案,並將它作為一個參考點。
忽略停工期
如果專案是一個長期專案,或者開發者在夏季需要有一個假期,那麼在估算時也應該考慮在內。必要時,考慮設定一個適當的緩衝期。
過於確切
將專案估算在一個確切的期限內或小時數內是不現實的,這也是無法實現的,最好的辦法是估算一個範圍,包括最好的情況下、最有可能的情況下、最壞的情況下的範圍。
總結:儘管你不喜歡估算,但也要認真對待
估算是一個應該認真對待的工作,也是每一個開發者必備的技能。你和你的同事都應該掌握並進行實踐。一個好的估算的做法是人人蔘與。
估計沒有人喜歡估算,我個人認為這是軟體開發工作中最糟糕的部分。而估算也從來都不會真正可靠或者完全準確,但還是希望上文這些內容可以為你帶來一些幫助。
相關文章
- 專案里程碑是什麼?為何如此重要?
- 國產App為什麼如此“臃腫”?!APP
- Python 為什麼如此設計?Python
- 為什麼Web3如此重要?Web
- AngularJS 為什麼如此火呢?AngularJS
- 為什麼專案會延期?
- 為什麼我如此討厭scrums? - RedditScrum
- 程式設計師,為什麼如此迷茫?程式設計師
- 為什麼JavaScript開發如此瘋狂JavaScript
- 為什麼Lisp語言如此先進?Lisp
- 專案成本估算快速指南
- 有關專案的估算
- 雲同步: 什麼是雲同步以及為什麼它是如此重要?
- 為什麼程式設計師不擅長估算時間程式設計師
- Redis為什麼是單執行緒?為什麼有如此高的效能?Redis執行緒
- 為什麼GetHashCode方法需要如此設計?
- Windows如此普及,為什麼要學LinuxWindowsLinux
- 為什麼網路攻擊如此之多?
- 為什麼格鬥遊戲如此老而彌堅?遊戲
- 專案管理中的自下而上估算專案管理
- 專案規模估算方法論
- 為什麼GOPROXY對Golang開發如此重要Golang
- 為什麼擴散diffution模型如此強大? - Reddit模型
- 譯文 | 為什麼軟體架構如此重要?架構
- 為什麼 Python 增長如此之快?Python
- 為什麼學習效率如此低,我很迷茫?
- 為什麼你的程式碼如此難以理解
- 為什麼開發者對Java 9如此的興奮Java
- 為什麼Lisp語言如此先進?(譯文)Lisp
- 資訊化為什麼需要專案管理?(轉)專案管理
- 專案研發為什麼失敗?(轉)
- 為什麼專案老夭折?這份專案管理指南請收好專案管理
- 為什麼網站安裝SSL證書如此重要?網站
- 為什麼 Reddit 如此緩慢和不可靠? | HackerNews
- 為什麼Kubernetes的儲存如此艱難?
- 為什麼async/await關鍵字是如此重要AI
- 為什麼資料庫調整大小如此困難?資料庫
- 轉-為什麼Lisp語言如此先進?(譯文)Lisp