【DevCloud·敏捷智庫】如何利用故事點做估算
背景
在某開發團隊輔導的第二天,一個團隊負責人諮詢道:“領導經常管我要開發計劃,我如何能快速的評估出預計開發完成時間呢,我們目前用工時估算,我聽說過故事點估算,不知道適合嗎?”
問題分析
從這個團隊負責人那裡瞭解到,領導一般在接到專案大量新需求時會問這個問題。領導需要做到“心裡有數”,有一個預計的專案新需求完成時間。加上領導一直做傳統的瀑布開發專案,他非常關心專案中遠期計劃,也就是我們通常講的里程碑或關鍵結點的問題。
團隊目前使用敏捷開發方式初期,團隊成員本身也對如何更快、更好地做好估算感到困惑,目前糾結是否應該採用故事點估算。
從以上問題分析中可以得出:第一,團隊對故事點不瞭解,需要學習什麼是故事點;第二,解決如何快速提供給領導開發計劃的問題。
解決措施
解決問題我們來分兩步走。首先解決不熟悉故事點的問題,先給大家介紹一下故事點的定義及特性。然後大家瞭解一下兩層估算即產品待辦列表估算和Sprint待辦列表估算的簡單區別,解決開發計劃的問題。
如果有時間,建議可以先看看上篇《如何估算第二篇:利用核心概念理解估算》瞭解估算的核心概念。然後再來看這篇文章效果更好。這篇文章主要講故事點。具體的估算方法有沒有比較好的實踐呢?在《如何估算第四篇:利用2種常見方法做估算》中會介紹幾種比較好的估算方法,包括:“計劃撲 克估算”、“敏捷估算2.0(Agile Estimating 2.0)”等。本篇仍然在為估算做技能儲備(磨刀不誤砍柴功),即明確什麼是故事點。前面文章已經講過估算的一個核心概念即估算相對大小,這個相對大小我們用故事點為單位。工時和理想人天相信大家都理解,不做過多解釋。在這裡著重從故事點的定義、故事點的特性兩個方面解釋下什麼是故事點,然後解決給領導提供計劃的問題。
故事點的定義
故事點是表述一個使用者故事,一項功能或一件工作的整體大小的一種度量單位。當採用故事點估算時,我們為每個待辦項分配一個點數。待辦項估算結果的原生資料並不重要,我們只關注最後得到的相對估算結果。一個估算值為2的使用者故事應該是估算值為1的使用者故事的2倍。而它也應該是另一個估算值為3的使用者故事的三分之二。團隊不要採用100、200、300,而要使用1、2、3。估算結果是相對值,而不是絕對值。
“當使用故事點來估算使用者故事的大小時,並沒有固定的公式來規定如何計算故事點的數值。故事點估算用於評估為了交付一個使用者故事所包含的工作量(team effort),使用者故事的複雜度(complexity),風險,以及所有其他需要考慮的元素。——《Agile Estimating and Planning》, Mike Cohn.
故事點的特性說明
是相對單位
它是一個相對單位。比如,不同的組織團隊,對於同樣的使用者故事的故事點大小一般是不同的;即使同一團隊,針對不同使用者故事的故事點大小,甚至是針對同一使用者故事的故事點大小,都允許是不同的。但同時提醒,不同團隊不同使用者故事的故事點的設定,有利於組織能力的積累和橫向參考。
不等同於工作量估算
故事點估算不是簡單等同於工作量估算。如Mike Cohn所描述,它包含工作量、技術含量、各方面制約等多方面價值因素。有時其他的這些因素,在故事點估算中佔有比重會勝過工作量方面的考慮。
考慮“完成的定義”
以上介紹,有些朋友可能會問:有些團隊用工時(單位小時)來估算,不可以嗎?上一篇文章末尾提到,有些較成熟的團隊,也可以借鑑歷史資料和經驗,直接應用工時或理想人天估算也並非不可。 故事點估算必須要覆蓋直到實現產品待辦項待真正完成的所有事項。如果團隊的“完成的定義”中包括了建立自動化測試來驗證這個故事(並且這是一個好主意)這個事項,那麼建立這些測試的工作量也應該包含在故事點估算結果中。
如果一定要推薦工時(或理想人天)和故事點分別在什麼時候應用比較好,那麼我一般推薦在做產品待辦列表估算時用故事點,而Sprint待辦列表估算時用工時(單位是小時)。
原因很簡單,結合最開始團隊負責人的問題,其實老闆大多對什麼時間點可以交付多少需求(使用者故事形式體現)感興趣。最常見的問題是:“這50個需求什麼時間可以做完?”很明顯,老闆並不是在問本Sprint能做完多少需求,而是在問專案得有一個預計的時間點或里程碑。換句話說就是,需要對某個時間點可以交付什麼樣價值做出一個長期一點的預測。如果每個故事平均15分鐘估算,那麼50個使用者故事估算需要50*15分鐘=750分鐘=12.5小時。顯然估算所需要花費的時間代價比較高,ROI太低。如果採用準確度差不多的故事點估算,則效率會大大提升。前面提到過為什麼故事點估算容易,這裡不再重複解釋。此時建議團隊平均3分鐘完成一個使用者故事的估算,那麼估算需要50*3分鐘=150分鐘=2.5小時。這樣根據團隊正常速率,就可以預計完成時間,回答老闆的問題了。
對於Sprint列表的估算,其目標更多的是要確定團隊本Sprint要完成的工作量,故事點顯得有點抽象。團隊具體執行時,時間概念上有點困難,而小時數就容易得多。通常Sprint列表項也會比產品待辦列表項少得多,所以時間上不會花費太多。另外,就Sprint列表中的工作項而言,它會是更具體的需求,通常會進行任務細化和“完成定義”,進而很清楚如何去做,誰來做。這些因素綜合看,以工時(小時)來估算成為優勢。
參考附錄
1. Mark C. Layton. 敏捷專案管理[M].北京:人民郵電出版社。
作者:黃藥師(黃雋)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2718573/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【DevCloud · 敏捷智庫】如何拆分使用者故事devCloud敏捷
- 【DevCloud · 敏捷智庫】暴走在釋出前夜的開發,你怕不怕?devCloud敏捷
- 敏捷開發:使用者故事估算方法介紹敏捷
- 敏捷實戰分享:Runtastic停止了估算故事並改善衝刺,效率提高30%敏捷AST
- 敏捷史話(十五):我發明了敏捷估算 Poker —— James Greening敏捷
- 如何通過相對規模來估算使用者故事?
- 敏捷中需要分享故事點給利益相關者嗎?敏捷
- 敏捷中濫用故事點的幾種反模式 - Lloyd Atkinson敏捷模式
- 敏捷實施中的估算與實際效果 - Ottinger敏捷
- 如何估算Oracle資料庫每日資料增長量Oracle資料庫
- 減輕敏捷實戰中故事點發生漂移的風險 - modernanalyst敏捷NaN
- 敏捷開發中如何做質量管理?敏捷
- 需求變更,敏捷專案應如何做?敏捷
- 如何利用fiddler做mock測試Mock
- 使用者故事與敏捷開發敏捷
- WebSocket 的故事(四)—— Spingboot 中,如何利用 WebSocket 和 STOMP 快速構建點對點的訊息模式(2)Webboot模式
- WebSocket的故事(三)—— Springboot中,如何利用WebSocket和STOMP快速構建點對點的訊息模式(1)WebSpring Boot模式
- C# on DevCloudC#devCloud
- 如何利用GIS提升自然資源數智化能力
- 如何利用SEO做全網霸屏營銷?
- 敏捷史話(九):用做麵包的方式做敏捷——Alistair Cockburn敏捷AI
- 如何用Python和R對故事情節做情緒分析?Python
- 萬智牌設計故事:打破規則
- 懶人做開發系列:利用Object-C特性埋點Object
- 懂點EXCEL就行!教你利用Python做資料篩選(上)ExcelPython
- 5G基站電源配置如何估算?
- 你如何估算專案資源的成本?
- 萬智牌開發故事:神器與結界
- 雲端智創 | 批次化生產,如何利用Timeline快速合成短影片?
- 企業如何利用網際網路做口碑營銷?
- git連線華為雲DevCloudGitdevCloud
- Transformer 估算 101ORM
- thinkphp3.2 做的小故事網站PHP網站
- 利用notion做知識管理
- 如何利用RSI指標有效把握階段低點和高點指標
- Tower與DevCloud對比分析報告devCloud
- 分散式儲存系統可靠性如何估算?分散式
- 如何為 Cloud TPU 編寫自定義估算器模型Cloud模型