軟體工程估算的技巧 - shubhro

banq發表於2022-05-12

Shubhro Saha 是 Facebook 的工程經理。他寫了一篇很棒的部落格文章,介紹瞭如何更好地估計一個專案需要多長時間才能完成。
一個很好的提示是始終清楚地將估計與目標與計劃分開。目標可能是最樂觀的,而計劃是最悲觀的(它解釋了可能遇到的任何問題)。

工程師們經常要互相詢問 "估算"--對專案所需時間的粗略預測。雖然有些團隊做了嚴格的估算儀式,取得了不同程度的成功,但許多情況下只需要根據直覺來回答。

儘管答案往往是基於直覺,但你如何要求和解釋估計仍然很重要。以下是我觀察到的一些行為上的小技巧,它們往往能使一次糟糕的估算談話和一次偉大的估算談話之間產生區別。

將估計與目標、承諾與計劃分開
考慮一個估計是否真的是你所尋找的東西。估算與目標、承諾或計劃是不同的。

在《軟體估算。解密黑科技》中,Steve McConnell對它們進行了相應的區分。
  • 估算:預測:"預測一個專案將需要多長時間或花費多少錢"
  • 目標:"一個理想的商業目標的宣告"
  • 承諾:承諾:"承諾在某一日期前以特定的質量水平交付規定的功能"
  • 計劃:如何 "尋求一個特定的結果 "的步驟


利益相關者之間的對話常常因為混淆了這四個術語而踏上了錯誤的道路。值得注意的是,麥康奈爾警告說 "你可以就承諾進行談判,但不要就估算進行談判"。

下面的一些小技巧可以同時適用於估算和承諾。

識別極端情況
識別一個專案可能完成的最晚/最早時間是很重要的,但團隊經常發現很難推理出這個問題--特別是當被要求當場給出答案時。

在《MFM Mini--提出更好的問題指南》中,Shaan Puri分享了Twitch CPO Dan Clancy的一句精彩提問。

(對於最壞的情況)"我知道我們不知道確切的時間表[......]你什麼時候會對我們沒有完成這個任務感到驚訝?"

(對於最好的情況)"最好的情況,你在想什麼?"

這些問題很有用,因為它們的非正式性鼓勵人們分享他們坦率的感受。

注意精確度
當聽完一個估計/承諾時,注意答案所表達的 "精確性"--無論是以天、周、月、季度還是年為單位。

然後,為了給自己設定期望值,在所提供的估計值上增加一個單位的表達精度。一個估計在 "第二季度的某個時候 "完成的專案,同樣可能在第三季度完成。

當然,專案的真正延遲最終可能是無限長的,但答案的精度至少可以讓你從機率上看到延遲可能有多長。

詢問一段時間內的信心水平
人們在分享他們的工程估計/承諾時,通常會分享信心水平(高、中、低)。但隨著專案的進展,持續更新這些信心水平的情況並不常見。

隨著時間的推移,更新信心水平是很有價值的,可以在發現風險的時候促進對話。

這對跨團隊的對話特別有用,因為在這種情況下,合作伙伴可能會猶豫不決,直到接近預期完成日期時才會溝通潛在的延誤。想象一下,聽到以下的每週更新。

(第六週)"還需要四個星期,我們有很高的信心"

(第七週)"仍然需要三週,但我們現在是中等信心"


瞭解是什麼將信心從高位變為中位,將告訴你更多關於潛在的結果,而不是估計本身。

結論
工程估算很少能100%準確地預測現實世界的結果;現實是大多數專案都會出現延誤。不過,注意我們如何要求和解釋估算,可以幫助適當地設定期望。
 

相關文章