對於第一次接觸 Scrum 或 Planning Poker 的團隊,在一開始的估算過程中,往往會產生一些摸不著邊際或尷尬的場面。大家不曉得到底該怎麼比較,比較的基底為何?我這樣估會不會跟大家不一樣,不一樣時是不是應該從善如流,下一次就跟大家估一樣?當估得比其他人高時,是不是我就顯得能力比較弱?這些疑惑,會使得團隊成員不容易享受於輕鬆輕快的估算流程,而影響了團隊的節奏。
因此,本篇文章將介紹一個基於相對估算的簡單遊戲:Dog Point。透過把軟體開發中的 story 轉換成小狗的情況,來幫助大家瞭解估算的運作方式、意義。
前言
在上一篇文章(Scrum Estimation-Story Points and Planning Poker)中提到了一些估算的基本原則,包含了:
- 應該在決定誰做之前估
- 應該由做事的人一起估,請 PO 參與估算過程,但不干涉實際估算
- 相對比較,比絕對估算來得簡單
- 公開、透明、容易達成共識
然而在 Scrum 的估算過程中,絕大部分都是建議使用 Planning Poker 來讓團隊每個成員進行估算。雖然 Planning Poker 的使用方式相當簡單,但對於第一次接觸 Scrum 或 Planning Poker 的團隊,往往會產生一些摸不著邊際或尷尬的場面。大家不曉得到底該怎麼比較,比較的基底為何?我這樣估會不會跟大家不一樣,不一樣時是不是應該從善如流,下一次就跟大家估一樣?當估得比其他人高時,是不是我就顯得能力比較弱?
這些疑惑,會使得團隊成員不容易享受於輕鬆輕快的估算流程,而影響了團隊的節奏。因此,本篇文章將介紹一個簡單的遊戲:Dog Point。透過把軟體開發中的 story 轉換成小狗的情況,來幫助大家瞭解估算的運作方式、意義。從遊戲中學習效果最好,這也很適合當在團隊剛成立時 team build 的活動。這樣的方式適用於:
- 團隊成員尚未使用過 Planning Poker,預計開始導入這樣的估算方式
- 使用 Planning Poker 時覺得有點卡卡頓頓的
- 想嘗試看看新的估算方式
Dog Point 原則一:「相對比較」要比「絕對估算」來得簡單且容易有共識
主持人:「這隻吉娃娃有多大呢?」這個問題,就像 PO 問開發人員:「這個需求需要花多少時間完成呢?」
開發團隊每個人的答案可能都不一樣,也因此這樣的估算不容易達成共識。當我們換個方式,透過相對比較的方式來比較大小時,往往容易達成共識。
例如下圖哪一隻狗比較大?
Dog Point 原則二:「粒度小」的估算比「粒度大」的估算精準且容易有共識
主持人:「要做出這架紙飛機,你覺得需要花多少時間呢?」 主持人:「如果是要做出這架戰鬥機,你覺得需要花多少時間呢?」 「紙飛機」跟「戰鬥機」的估算,哪一個比較精準?比較有信心?大家估算的誤差比較小呢?可以發現絕大部分的人認為,任務粒度較小的估算,團隊成員之間估算出的誤差較小,且也比較容易達成共識。
Dog Point 原則三:估算單位以「費氏數列」為參考
因為估算過程是團隊決策,讓整個團隊做事的人一起參與估算,且期望全部人員達成共識時才算估算完畢。所以,如果估算出來的數字不容易達成一致的共識,就會導致估算的過程冗長而沒有效率。因此在 planning poker 透過費氏數列的數字來輔助更快地達成團隊共識。
費氏數列在估算中有兩個特性:
- 第n個數字/第n-1個數字,趨近於 1.618,也就是後面每個級距都差了 1.5 倍以上。
- 越後面的數字,兩兩之間差距越大。
舉個例子來說,如果有兩棟房子,分別是 1 層樓與 2 層樓,要比較它們誰比較高,通常不難,因為它們差了一倍的高度。 2 層樓與 3 層樓,也不難比較。但如果是 20 層樓跟 21 層樓,對一般人來說可能就開始不容易比較出大小,又或者是說相差這 1 層樓,對 20 層樓來說,影響或差距不大。
因此,當團隊使用費氏數列當作估算單位的參考,有幾個好處:
- 當數字小時,即使取最大數,也不會對專案資源造成太大的影響,容易達成共識。
- 當數字大時,可以減少因為一點點數字的差異,而需重新估算所造成的會議成本。例如:要嘛 13 ,要嘛 20 ,要嘛 40 。不會在「18 與 20」或「40 與 44」之間僵持不下。
- 如果團隊估出的數字有兩個級距以上(1.5 倍 ~ 3 倍以上),其差距往往可以大到「團隊成員之間一定有資訊落差」,這時請估最高與最低的成員討論其想法時,往往可以讓整個團隊(包含 PO 在內),獲得最大效益,因為會獲得團隊之間的最佳解,或在這個時間點釐清 PO 真實的需求。
Dog Point Workshop 練習-Step 0 準備道具
邀請你的 Scrum team 成員參加,最好 PO 也可以一起參加,直接擔任 PO 的角色。主持人則是 Scrum Master 的角色。
請準備好兩樣道具:
- 準備 8-10 張(團隊成員總數的 1.5 ~ 2 倍)不同種類的小狗圖片,忽略順序地疊成一疊。其中裡面應包含「吉娃娃」,另外也可以準備一隻看不出來是什麼狗的圖片,可以在 workshop 中練習連 PO 都說不清楚的需求。例如:
- 準備好 planning poker ,可以自己依據費氏數列,自製幾張小卡或使用便利貼填上數字即可。
這邊用幾個圖示來簡介整個活動的運行過程,首先是團隊成員組成如下:
Dog Point Workshop 練習-Step 1 比大小
Step 1 最後呈現的結果,是由團隊決定出這些狗狗,由左至右、由小到大的順序。例如:
規則
- 將疊起來的狗狗圖片(疊起來的順序,可以由 PO 決定),從最上面第一張,一張一張的進行比較
- 每個人輪流(PM除外),一次移動一張狗狗的圖片
- 吉娃娃放在最左邊
- 右邊的狗要比左邊的狗大
- 可以挪動既存在的狗狗圖片,但一樣一次只能挪動一張,且右邊仍要比左邊大
- 該狗無法進行比較時,請放到最右邊
- 每張狗的圖片都已經排列上去,且自己認為這樣的大小順序是符合自己期待時,喊出「Pass」
- 每個人都喊出「Pass」後,結束 Step 1
注意事項
- 挪動既存在的狗狗圖片時,請大聲說出理由。因為這代表你與其他成員的認知產生差異。
- 對狗有任何疑問時,都可以對你的 PO 提問。但請不要問「這隻狗有多大」或是「這兩隻狗誰大」,而是問類似「這隻狗平常的食量有多少?」、「這隻狗年紀有多大?」、「這隻狗是公的還是母的?」諸如此類可能可以用來評斷狗大小的資訊
- PO 只能說明跟回答狗相關的資訊,不能干涉團隊成員如何排列順序
示範過程
1. 先將吉娃娃放上來2. Alice 詢問下一張「臘腸狗」的相關資訊,並判斷臘腸狗比吉娃娃大,所以放到吉娃娃右邊。3. Bob 認為下一張的「西施犬」比「臘腸狗」大,所以放到「臘腸狗」的右邊。4. Cindy 看到下一張「大丹」的圖片,問到這是算一隻還是兩隻?PO 回答:這是兩隻。因此,Cindy 認為大丹應該是裡面最大的,所以排到最右邊。5. David 認為,原本排第三的「西施犬」其實只是毛比較長,真要比較「臘腸狗」應該比「西施犬」大。6. 當 Alice, Bob, Cindy, David 都認同這樣由小到大的順序,喊出「Pass」後,結束 Step 1。
Dog Point Workshop 練習-Step 2 排數字
以 Step 1 的結果為基礎,以吉娃娃為單位,在狗狗圖片底下,依照 planning poker 的卡片,排出相對於「吉娃娃大小」的倍數。例如:
規則
- 以「吉娃娃」為比較單位,所以吉娃娃對應的 card 為 1
- 每個人依照狗狗相對於吉娃娃的幾倍大,一次擺放一張 planning poker 到對應的狗狗圖片底下
- 一樣可以挪動已經存在的 planning poker card ,但右邊仍要比左邊大
- 覺得這樣的大小比例,已經符合自己預期時,可以喊出「Pass」
- 每個人都喊出「Pass」後,結束 Step 2
注意事項
- 挪動既有 planning poker card 時,仍須大聲說出理由。因為你的評估與其他成員不一樣。
- 不一定每一隻狗狗底下都會有一張 planning poker card,以上面的例子來說,「黃金獵犬」就是介於 5~8 之間。至於要被歸類為 5 ,還是歸類為 8 ,只要團隊有共識即可。
- 不一定每一張 planning poker card 都會使用到。
- Step 2 若對狗狗仍有疑問,仍可對 PO 提問,也可以挪動既有狗狗的順序,但請符合 Step 1 與 Step 2 的規則。
示範過程
1. 吉娃娃的單位為 1 。先將 planning poker 中 1 的 card 放到吉娃娃底下。2. Alice 認為,「臘腸狗」是「吉娃娃」的 2 倍大。 3. Bob 認為,「西施犬」才是「吉娃娃」的 2 倍大。4. 接著 Cindy 認為,那「臘腸狗」應該是「吉娃娃」的 3 倍大。5. David 認為「大丹」比「吉娃娃」大 20 倍。6. 在 Alice Pass 後, Bob 認為一隻「大丹」應該就有「吉娃娃」的 20 倍大,這一張是「兩隻大丹」,所以應該把 20 改成 40 。7. 在所有人都喊出 Pass 後,結束 Step 2 。代表這樣的大小順序以及比例,是團隊一同的共識。
Dog Point Workshop 練習-Step 3 定義「吉娃娃」
最後的 Step 3 相當簡單,還記得我們前面提到的準則嗎?粒度越小的評估,誤差越小,且越容易達成共識。團隊只需要針對「吉娃娃」定義出絕對的複雜度或是對應絕對的工時,例如「吉娃娃」如果代表了一個「單表自訂查詢」的 UI ,團隊一致認為只需要「0.5 hr」即可完成,如下所示
那麼所有狗狗(或是 user story/task)的絕對大小,就可以依此推估出來。如下所示:
結論
Dog Point 的估算遊戲,與前面提到的估算準則相呼應:
- SPA:簡單(Simple)、公開(Public)、容易有共識(Agreeable)
- 相對比較,比絕對估算容易。全部都是相對比較大小,絕對估算只有針對吉娃娃進行。
- 粒度越小的估算,越容易有共識,誤差越小。吉娃娃是最小的單位,只針對它進行絕對的估算,可以節省時間、容易達成共識,後續推估出來的數字,也容易被團隊接受。
最後,還是有幾點要請讀者們留意的部分:
- 在實務的 Scrum 估算中,建議要把 Dog Point 的 Step 3 放到最前面,也就是先由團隊決定出何謂「吉娃娃」,這樣後續在使用 planning poker 做比較與估算時,方能得知比較的基底為何。
- 這樣子推估出來的數字,當然仍有可能有誤差,因為越大的數字,誤差會等比例放大。但是,這樣子估出來的數字,絕對是團隊成員可以接受,且 PO 也從整個過程中得知,這些數字究竟是如何被討論與決定出來的。
- 每個人都有表達自己想法的權利,每個人也都可以決定出自己想要的順序或數字。不會有人放馬後砲,不會有人被強迫接受別人估算的結果。
- 不管最後在實務上是對是錯,這都是團隊一起估算出來的結果,這是團隊估算最重要的精神。如果這次 sprint planning 的估算,在 review 時發現有所誤差,那麼就在 retrospective 中提出來這個問題,並由團隊共同決定出「該如何改善」這個問題,於下一個「sprint」中落實改善。
其他 Reference
- 附上我在 2015 年微軟實戰課程日,針對 Dog Point 估算的演講影片,裡面的示範過程以動畫呈現,相信能讓讀者更加有感。也期望這樣的估算遊戲,能幫助到許多團隊在遊戲中學習與體驗 Scrum 估算的精神、準則與方式。
- 閉嘴也不錯 – 如何用靜音排序(Mute Mapping)快速估算需求
blog 與課程更新內容,請前往新站位置:http://tdd.best/