譯注:用戶故事點估算為什么不可能精確?除了“規劃撲克”,還有什么有效的估值方法和策略?本文討論的“水桶方法”解答了這幾個問題。原文來自敏捷先驅之一Mike Cohn的博客文章:Story Point Estimates: For Accuracy, Use Ranges & Round Up。公眾號【碼斯基之矛】翻譯了這篇文章。在不影響內容理解的情況下,為簡潔起見,譯文中許多地方將Product Backlog Item這一英文概念翻譯為“用戶故事”(或故事,雖然它與故事并不完全是一回事)。
進行故事點估算時,大部分團隊會使用某個預先定義的、不包含所有可能情況的數值范圍來進行,如團隊會使用一個2次冪的序列(1,2,4,8,16,...)、或斐波那契數列(1,2,3,5,8,13,...)來進行這種估算。
通過有意將一些數值排除在可接受的估值范圍之外,團隊避免了陷入某些無休止的討論之中。如某個故事到底該估值為15還是16,若真要達到“是15還是16”那樣的估算精確度,一般是非常困難和耗時的,通常也不可能完成。
我常遇到有人提出這樣的問題:我怎么能確定一個具體的用戶故事(Product Backlog Item)估值為8還是13?
這篇文章里,我將嘗試用“水桶估值法”來部分解答該問題。
假如你有10升的水要儲存,并且你有一個8升的桶和一個13升的桶。你會選擇用哪個桶來存儲這些水?
顯然,你會選擇13升的那個桶。10升水沒法裝進8升的桶,水會溢出。
進一步推斷,你還會用13升的桶來裝入體積在9升到13升這個范圍的水。如果你有14升的水,你就需要一個比13升更大的桶了。
這個思考策略與故事點估算是一致的??紤]將每個預設的參考估值作為一個桶,所有體積在這個桶與鄰近的小一號桶之間的用戶故事都可以用這個"估值桶"(估值范圍)來裝。例如,許多團隊在使用“規劃撲克”玩敏捷規劃游戲時,會采用一種調整后的斐波那契數列:1、2、3、5、8、13、20、40、100。13這個參考數值,可用于故事點大于8、且小于等于13之間的所有故事的估值。
即,每個故事點估值的隱含意義是一個估值范圍--正如一個桶可以存儲在其容量范圍之內各種體積的水,問題的關鍵在于如何選擇合適的桶。
選擇合適的桶
要得到更準確的估算和計劃,團隊需要轉變思路:他們不是在給某個用戶故事估一個數值,而是要想辦法為這個故事找一個合適的“估值桶”。我知道很多時候人們在做故事點估算時,習慣的做法是拿支筆、為某個用戶故事寫個數字,但更好的思路應該是找一個能裝下這個故事的足夠大的數字(桶)。
所以,估算時的推薦做法是:讓團隊成員想象自己面前有一堆標有數字1,2,3,5,8,13,...(或其他序列)的桶,對每個故事進行估值時,想象著將故事卡片扔進一個大小合適的桶里。
這有助于團隊成員脫離“估算要完美和精確”的執念,因為這不可能做到。故事被扔進了合適的桶里,就已經達到估算的要求。
為什么“向上舍入估值法”是有效的?
你可能注意到,這種“向上舍入”(譯注:指類似有9點的故事用13點的桶來裝,這種做法使得估算都比實際故事點要大,類似四舍五入的做法)的估值方式有可能導致故事點膨脹(inflated or padded schedules)。我解釋一下為什么這樣的事不會發生。
假如你認為某個故事應該有10點,使用上面提到的斐波那契數列及向上舍入的估值策略,這個故事將被估值為13點。進一步,我們假設這個13點的故事因為太大而沒法在一個迭代里完成,所以團隊將它分解成3個小的故事,故事點分別為5,5,2。
這里注意數值發生的變化。這3個小故事加起來點數為12,這比前面13點的大故事估值少1點,卻比最初大故事的合理估值10點多2點。
通過強行讓估值向上舍入的方式,提升了準確預測項目交付日期的可能。
當然,如果你偏要使用“向下舍入”的方式給故事估值為8,項目將會產生4個點的延遲。而當你使用自己認為準確的估值10時,項目將又產生2個點的延遲。
所以,使用水桶方法及向上舍入的估值策略,你更可能按時交付項目。
但10點的故事難道真的不能是8個點嗎?當然可能,但它也可能是14點或15點,或其他任何數字。
“水桶方法”和“向上舍入法“是有效的估算工具
“向上舍入估值法”不會導致估值膨脹--我在另一篇博文,“How to Prevent Estimate Inflation”里論述過該問題。相反,“水桶方法”結合“向上舍入法”,是估值不確定性的一種反映。將故事點視為一系列有容量限制的桶正好說明了這種不確定性,有助于制定更合理的項目計劃。
作者簡介:
熊俊,技術工程師,敏捷研發教練、精益實踐者。10多年軟件開發、技術架構與研發團隊管理經驗,曾在社交網絡、企業級Saas方向創業2年多。技術上以Python/Django體系見長,在代碼重構、領域驅動設計(DDD)方面有豐富的實戰經驗。...
公眾號:碼斯基之矛
如需轉載,請關注公眾號與作者聯系。