軟件估算的五大定律

jopen 9年前發布 | 8K 次閱讀 軟件估算

軟件估算的五大定律

英文原文:The 5 Laws of Software Estimates

編者按:軟件估算往往很扯,就像《人月神話》里面說的那樣,認為一切都將運作良好,每項任務僅花費它所 “應該” 花費的時間基本上就是鬼話,但是估算又是不得不做的事情。怎樣才能做好這又扯蛋又不得不做的事情呢?資深的軟件架構師 Steve Smith 總結了軟件估算的 5 大定律,供做開發的、做銷售的各位參考,也方便讓客戶理解一下。

估算是軟件開發的必要之惡。不幸的是,大家往往認為寫新軟件就跟搞建筑或者修車差不多,所以軟件工程師也應該像承包商或修理工一樣,事先能夠給 出工作量的完美估算。建筑或修車的確能夠做到,因為他們用的材料和手段都是已知的。車險公司事先就知道你的車應該可以走多遠,每一種零部件維修應該需要多 少錢。但是定制軟件里面很多東西都是要從頭做起,而且如何組合、最終如何工作、軟件究竟應該干什么等這些都是運動目標。一開始的時候路徑和目的都是未知 的,所以很難知道什么時候能干完。

估算是定制軟件開發的難題,不過還是存在一些普遍規律的:

估算第一定律:估算純屬浪費

在估算上花費的時間實際上是沒有產生價值的。在開發者需要多少時間才能完成工作上這是一場零和游戲—如果估算要求很緊急并且打斷了開發者正常的 開發工作的話情況可能會更糟。如果開發者平均每周(40 小時)要花 2-4 小時的時間去進行估算,那就是 5-10% 的生產力損失(因為用來估算的時間本來可以去寫代碼的)。如果開發者是兼職或只能用部分時間寫程序的話情況會更糟糕。

若干年前,微軟的一個部門在不增加任何新資源或者改變軟件工程任務(設計)代碼、測試)執行方式的情況下把生產力提升了 150%。其主要變化是任務估算的時機和方式。諷刺的是,原來大部分的頻繁和及時估算都是管理層要求的,為的是提高透明度,希望看看團隊生產力能夠如何改進。即便這些估算都是粗數量級的估計,但頻繁的估算仍然顯著破壞了團隊的整體生產力。

估算第二定律:估算不可互換

軟件估算不可互換,這主要是基于團隊成員不可互換的推論。也就是說,對一個人的估算并不能用來預測另一個人多久才能完成工作。

被迫根據團隊另一位成員的工作來完成估算已經夠糟的了,但更糟的是你被為了拿下單子的銷售做出的估算設定了任務的截止期限。

如果估算者和實現者水平相當甚至在同一團隊工作的話,估算的可轉移性顯然會有改善。像計劃撲克這樣的技術在估算任務時會利用整個團隊的經驗,確保不錯失某些關鍵的考慮因素而導致估算過于樂觀。這有助于確定估算或估算范圍,但是顯然也會消耗數倍(團隊成員規模)的估算時間。

估算第三定律:估算是錯的

估算不是承諾。是猜測,而且往往是范圍越大未來的估算活動越深入,出錯的可能性就越大。這又被稱為不確定圓錐

由于估算較小較近期的任務要比較大較遠期的精確,所以把任務分解是有意義的。理想情況下,用戶可以交互和測試的獨立子功能應該成為估算過程的單 元,如果這些是垂直切塊的話,從客戶或產品業主哪里獲得對新開發的功能快速反饋是可能。排隊論還認為,當系統中的工作很小且規模統一的情況下,吞吐量會得 到提升,這進一步支持了把工作分解為較小的、一致的工作事項的做法。

對個人工作事項和項目的估算往往越臨近工作完成就越精確。最精確的估算,就像最精確的天氣預報一樣,告訴你的是昨天發生了什么,而不是明天的。

估算第四定律:估算是暫時的

估算很容易變質。其保質期相對較短。開發者在項目開始前可能估計特定功能需要 1 周的開發時間。等項目開展 3 個月后,知道和拍板了很多事情后,同樣的功能也許就只用幾小時或者 1 個月了,或者由于優先級或方向的原因干脆放棄了。無論是哪一種情況,估算的價值都很小甚至是負面的,因為估算后太多事情都發生了改變。

為了處理這個問題,一些團隊和開發方法論建議定期對積壓工作的所有事項進行重新估算。然而,盡管這么做解決了估算容易過期的問題,但卻又會加大 第一定律所說的浪費。你是愿意團隊對同一批積壓事項重復進行 5、6 次估算卻從不開始工作,還是愿意他們每周哪怕提交一項功能也好?最好還是再看看微軟的白皮書,看看重復估算是如何摧毀整個團隊的生產力的。

我們從估算第三定律得知,估算越往后往往越準。也就是說,估算約合理地往后推遲,準確度就可以越高。這跟精益軟件開發的推遲決定直到最后責任時 刻原則很接近。估算也應該在最后責任時刻完成,以確保最高的精確度以及最少的重復。某些情況下,“估算” 實際上可以在工作完成后進行,這樣精確度可以達到 100%(而且成本幾乎為 0!)。

估算第五原則:估算是必要的

盡管前面四條原則說的似乎都是估算的壞處,但估算是必要的。如果對軟件開發的時間和成本沒有概念,企業就無法做出是否開發的決定。作為應用建設 提案或贏得項目的一部分,服務型公司經常必須提供估算。僅僅因為上述定律是正確的并不意味著估算就可以不要了。然而,你可以更好地管理客戶、項目經理、銷 售團隊等涉及到的人的期望和花在估算上的時間,在定制軟件估算時讓大家理解這些事實。

總結

以上就是軟件估算的五大定律。這些定律基本上適用于我碰到的每一個定制軟件項目。天下沒有免費的午餐,估算也一樣會產生真正的成本,考慮把估算 作為軟件開發過程的核心之前必須考慮清楚這一點。一旦項目審批前進行了足夠的高級估算和 ROI 分析,更多的估算工作未必會比實際工作的快速交付產生更多的價值。

來自: 36kr.com
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!