估算需求複雜度(2)Dog Point Game by joeychen | CodeData
top

估算需求複雜度(2)Dog Point Game

分享:

估算需求複雜度(1)Story Point 與 Planning Poker << 前情

前言

在上一篇文章中提到了一些估算的基本原則,包含了:

  1. 應該在決定誰做之前估
  2. 應該由做事的人一起估,請 PO 參與估算過程,但不干涉實際估算
  3. 相對比較,比絕對估算來得簡單
  4. 公開、透明、容易達成共識

在 Scrum 的估算過程中,絕大部分都是建議使用 Planning Poker 來讓團隊每個成員進行估算。雖然 Planning Poker 的使用方式相當簡單,但對於第一次接觸 Scrum 或 Planning Poker 的團隊,往往會產生一些摸不著邊際或尷尬的場面。大家不曉得到底該怎麼比較,比較的基底為何?我這樣估會不會跟大家不一樣,不一樣時是不是應該從善如流,下一次就跟大家估一樣?當估得比其他人高時,是不是我就顯得能力比較弱?

這些疑惑,會使得團隊成員不容易享受於輕鬆輕快的估算流程,而影響了團隊的節奏。因此,本篇文章將介紹一個簡單的遊戲:Dog Point。透過把軟體開發中的 story 轉換成小狗的情況,來幫助大家瞭解估算的運作方式、意義。從遊戲中學習效果最好,這也很適合當在團隊剛成立時 team build 的活動。這樣的方式適用於:

  • 團隊成員尚未使用過 Planning Poker,預計開始導入這樣的估算方式
  • 使用 Planning Poker 時覺得有點卡卡頓頓的
  • 想嘗試看看新的估算方式

Dog Point 原則一:「相對比較」要比「絕對估算」來得簡單且容易有共識

主持人:「這隻吉娃娃有多大呢?」

這隻吉娃娃有多大

這個問題,就像 PO 問開發人員:「這個需求需要花多少時間完成呢?」

開發團隊每個人的答案可能都不一樣,也因此這樣的估算不容易達成共識。

當我們換個方式,透過相對比較的方式來比較大小時,往往容易達成共識。

3-相對比較

[註]當然在某些比較的情況下,還是可能出現有一半的人覺得左邊的狗比較大,另一半的人覺得右邊的狗比較大。這時其實只是代表,這兩隻狗的大小差不多一樣大,他們之間的差距幾乎可以被忽略。

Dog Point 原則二:「粒度小」的估算比「粒度大」的估算精準且容易有共識

主持人:「要做出這架紙飛機,你覺得需要花多少時間呢?」

主持人:「如果是要做出這架戰鬥機,你覺得需要花多少時間呢?」

5-戰鬥機

「紙飛機」跟「戰鬥機」的估算,哪一個比較精準?比較有信心?大家估算的誤差比較小呢?

可以發現絕大部分的人認為,任務粒度較小的估算,團隊成員之間估算出的誤差較小,且也比較容易達成共識。

Dog Point 原則三:估算單位以「費氏數列」為參考

因為估算過程是整個團隊做事的人一起參與估算,且期望以全部人員達成共識才算估算完畢。所以,如果估算出來的數字不容易達成一致的共識,就會導致估算的過程冗長而沒有效率。

費氏數列在估算中有兩個特性:

  1. 第n個數字/第n-1個數字,趨近於 1.618,也就是每個級距基本上都差了 1.5 倍以上。
  2. 越後面的數字,彼此之間差距越大。

舉個例子來說,如果有兩棟房子,分別是 1 層樓與 2 層樓,要比較它們誰比較高,通常不難,因為它們差了一倍的高度。 2 層樓與 3 層樓,也不難比較。但如果是 20 層樓跟 21 層樓,對一般人來說可能就開始不容易比較出大小,又或者是說相差這 1 層樓,對 20 層樓來說,影響或差距不大。

因此,當團隊使用費氏數列當作估算單位的參考,有幾個好處:

  1. 當數字小時,即使取最大數,也不會對專案資源造成太大的影響,容易達成共識。
  2. 當數字大時,可以減少因為一點點數字的差異,而需重新估算所造成的會議成本。例如:要嘛 13 ,要嘛 20 ,要嘛 40 。不會在「18 與 20」或「40 與 44」之間僵持不下。
  3. 如果團隊估出的數字有兩個級距以上,其差距往往可以大到「團隊成員之間一定有資訊落差」,這時請估最高與最低的成員討論其看法時,往往可以讓整個團隊包含 PO 在內,獲得最大效益,因為會獲得團隊之間的最佳解,或在這個時間點釐清 PO 真實的需求。

Dog Point Workshop 練習-Step 0 準備道具

邀請你的 Scrum team 成員參加,最好 PO 也可以一起參加,直接擔任 PO 的角色。主持人則是 Scrum Master 的角色。

請準備好兩樣道具:

  1. 準備 8-10 張(團隊成員總數的 1.5 ~ 2 倍)不同種類的小狗圖片,忽略順序地疊成一疊。其中裡面應包含「吉娃娃」,另外也可以準備一隻看不出來是什麼狗的圖片,可以在 workshop 中練習連 PO 都說不清楚的需求。例如:
    7-吉娃娃7-unknown
  2. 準備好 planning poker ,可以自己依據費氏數列,自製幾張小卡或使用便利貼填上數字即可。
    費氏數列

這邊用幾個圖示來簡介整個活動的運行過程,首先是團隊成員組成如下:

9-roles

狗的圖卡先以 4 張當簡介:

9-dogs 

Dog Point Workshop 練習-Step 1 比大小

結果:

Step 1 最後呈現的結果,是由團隊決定出這些狗狗,由左至右、由小到大的順序。例如:

8-step1

規則

  • 將疊起來的狗狗圖片(疊起來的順序,可以由 PO 決定),從最上面第一張,一張一張的進行比較
  • 每個人輪流(PM除外),一次移動一張狗狗的圖片
  • 吉娃娃放在最左邊
  • 右邊的狗要比左邊的狗大
  • 可以挪動既存在的狗狗圖片,但一樣一次只能挪動一張,且右邊仍要比左邊大
  • 該狗無法進行比較時,請放到最右邊
  • 每張狗的圖片都已經排列上去,且自己認為這樣的大小順序是符合自己期待時,喊出「Pass」
  • 每個人都喊出「Pass」後,結束 Step 1

注意事項

  • 挪動既存在的狗狗圖片時,請大聲說出理由。因為這代表你與其他成員的認知產生差異。
  • 對狗有任何疑問時,都可以對你的 PO 提問。但請不要問「這隻狗有多大」或是「這兩隻狗誰大」,而是問類似「這隻狗平常的食量有多少?」、「這隻狗年紀有多大?」、「這隻狗是公的還是母的?」諸如此類可能可以用來評斷狗大小的資訊
  • PO 只能說明跟回答狗相關的資訊,不能干涉團隊成員如何排列順序

示範過程:

1. 先將吉娃娃放上來
step1-1 

2. Alice 詢問下一張「臘腸狗」的相關資訊,並判斷臘腸狗比吉娃娃大,所以放到吉娃娃右邊。
step1-2
step1-3 

3. Bob 認為下一張的「西施犬」比「臘腸狗」大,所以放到「臘腸狗」的右邊。
step1-4

4. Cindy 看到下一張「大丹」的圖片,問到這是算一隻還是兩隻?PO 回答:這是兩隻。因此,Cindy 認為大丹應該是裡面最大的,所以排到最右邊。
step1-5
step1-6
step1-7

5. David 認為,原本排第三的「西施犬」其實只是毛比較長,真要比較「臘腸狗」應該比「西施犬」大。
step1-8 

6. 當 Alice, Bob, Cindy, David 都認同這樣由小到大的順序,喊出「Pass」後,結束 Step 1。
step1-9

Dog Point Workshop 練習-Step 2 排數字

結果:

以 Step 1 的結果為基礎,以吉娃娃為單位,在狗狗圖片底下,依照 planning poker 的卡片,排出相對於「吉娃娃大小」的倍數。例如:

step2-1 

規則:

  • 以「吉娃娃」為比較單位,所以吉娃娃對應的 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 放到吉娃娃底下。
step2-2

2. Alice 認為,「臘腸狗」是「吉娃娃」的 2 倍大。
step2-3

3. Bob 認為,「西施犬」才是「吉娃娃」的 2 倍大。
step2-4

4. 接著 Cindy 認為,那「臘腸狗」應該是「吉娃娃」的 3 倍大。
step2-5

5. David 認為「大丹」比「吉娃娃」大 20 倍。
step2-6

6. 在 Alice Pass 後, Bob 認為一隻「大丹」應該就有「吉娃娃」的 20 倍大,這一張是「兩隻大丹」,所以應該把 20 改成 40 。
step2-7
step2-8

7. 在所有人都喊出 Pass 後,結束 Step 2 。代表這樣的大小順序以及比例,是團隊一同的共識。
step2-9

Dog Point Workshop 練習-Step 3 定義「吉娃娃」

最後的 Step 3 相當簡單,還記得我們前面提到的準則嗎?粒度越小的評估,誤差越小,且越容易達成共識。團隊只需要針對「吉娃娃」定義出絕對的複雜度或是對應絕對的工時,例如「吉娃娃」如果代表了一個「單表自訂查詢」的 UI ,團隊一致認為只需要「0.5 hr」即可完成,如下所示:

step3-1 

那麼所有狗狗(或是 user story ,或是 task)的絕對大小,就可以依此推估出來。如下所示:

step3-2 

結論

Dog Point 的估算遊戲,與前面提到的估算準則相呼應:

  • SPA:簡單(Simple)、公開(Public)、容易有共識(Agreeable)
  • 相對比較,比絕對估算容易。全部都是相對比較大小,絕對估算只有針對吉娃娃進行。
  • 粒度越小的估算,越容易有共識,誤差越小。吉娃娃是最小的單位,只針對它進行絕對的估算,可以節省時間、容易達成共識,後續推估出來的數字,也容易被團隊接受。

最後,還是有幾點要請讀者們留意的部分:

  • 在實務的 Scrum 估算中,建議要把 Dog Point 的 Step 3 放到最前面,也就是先由團隊決定出何謂「吉娃娃」,這樣後續在使用 planning poker 做比較與估算時,方能得知比較的基底為何。
  • 這樣子推估出來的數字,當然仍有可能有誤差,因為越大的數字,誤差會等比例放大。但是,這樣子估出來的數字,絕對是團隊成員可以接受,且 PO 也從整個過程中得知,這些數字究竟是如何被討論與決定出來的。
  • 每個人都有表達自己想法的權利,每個人也都可以決定出自己想要的順序或數字。不會有人放馬後砲,不會有人被強迫接受別人估算的結果。
  • 不管最後在實務上是對是錯,這都是團隊一起估算出來的結果,這是團隊估算最重要的精神。如果這次 sprint planning 的估算,在 review 時發現有所誤差,那麼就在 retrospective 中提出來這個問題,並由團隊共同決定出「該如何改善」這個問題,於下一個「sprint」中落實改善。

我再重複一次最重要的精神:「團隊在當下,一起做出每個成員都可以接受的決定,那個決定就是當下的最佳解。」所有做事的人,都估出同樣的數字時,即使這個數字跟實務上的執行有所落差,那也是團隊一起認同、共同承擔與接受的。

最後附上我在 2015 年微軟實戰課程日,針對 Dog Point 估算的演講影片,裡面的示範過程以動畫呈現,相信能讓讀者更加有感。也期望這樣的估算遊戲,能幫助到許多團隊在遊戲中學習與體驗 Scrum 估算的精神、準則與方式。

後續 >> 估算需求複雜度(3)如何評估專案時程

分享:
按讚!加入 CodeData Facebook 粉絲群

相關文章

留言

留言請先。還沒帳號註冊也可以使用FacebookGoogle+登錄留言

熱門論壇文章

熱門技術文章