l

2012年2月7日 星期二

Scrum 是什麼(13):為什麼不建議使用focus factor?

February 07 09:26~10:39

螢幕截圖 2015-06-12 08.50.15

 

前情題要:

 

寫了〈Scrum 是什麼(12):不要再用focus factor與unplanned items了〉之後有鄉民問Teddy是不是會再寫一篇談「不再用focus factor的原因」?Teddy以為看完〈Scrum 是什麼(12):不要再用focus factor與unplanned items了〉之後鄉民們就應該會瞭了,沒想到…那就再寫一篇解釋一下吧,正愁沒東西可寫…XD。

Focus factor原本的目的是用來協助團隊觀察自己有多投入在工作當中,focus factor的值介於0到1之間(跟機率一樣…XD),0表示某人(或某個團隊)在某個sprint中完全沒有投入或參與專案。1表示某人(或某個團隊)在某個sprint中全部的工作天(假設一天工作八個小時)都在參與這個專案。可想而知,focus factor 1幾乎是不可能的,因為在江湖上走跳總是會有需要參與武林大會(參加各種大大小小的meeting)、路見不平,拔刀相助(幫助同事解決問題或是喬 代誌 事情)、走累了在路邊喝杯茶或是喝碗酒(下午茶時間)、到處打探消息(以實體或虛擬的方式閒扯蛋)、以及傳遞消息(打電話,寫e-mail)等種種活動。以上這些活動都會導致於團隊成員不可能一天八小時都投入在直接與專案開發有關的活動當中,所以正常來講,focus factor有0.6~0.7就算是不錯的了

古早以前Teddy剛開始實施Scrum的時候,在sprint planning meeting開始時,會決定團隊的focus factor,假設說鄉民們的團隊有六個全職開發人員,團隊的focus factor為’0.65,一個sprint長度是兩周,那麼這個sprint可以使用的工作小時就是:

(6 人)X (10天)X (8小時)X(0.65)= 312 小時

有了這個時間,就可以估算這個sprint可以完成多少個stories。等一下…講到這邊鄉民們應該會有一個問題,這個focus factor等於0.65是怎麼來的?說實話,當初都是Teddy「憑感覺」訂出來的。基本上是參考上一個sprint所訂的focus factor,然後看看上個sprint是否全部的stories都有做完,如果有,那麼可以考慮把這個sprint的focus factor稍稍調高一點點,如果沒有則可以考慮是否調降。有時候當sprint planning meeting快結束的時候,發現最後一個story可能還差個幾小時才能夠完成,此時甚至可以「偷偷」把focus factor調高一點點,耶,原本不夠的那幾個小時不就跑出來了。

鄉民們仔細想一下,Scrum團隊每個sprint所要觀察與生產力直接相關的數值,其實只要看estimated velocity與actual velocity就好了,例如:

  • 當estimated velocity比actual velocity大很多的時候,例如原本預估這個sprint可以做完49 story points,但是實際上只完成了38 story points,此時團隊就應該要檢討為什麼有一些原本排入的工作無法完成(被抓去開太多無意義的會,遇到太多不預期或是很難解的bugs等等)。這個現象如果以focus factor的角度來看,相當於團隊把focus factor估太高了,但實際上團隊並沒有足夠的時候投入工作當中,所以有一些story無法完成。
  • 相反地,當estimated velocity比actual velocity小很多的時候,例如原本預估這個sprint可以做完21 story points,但是實際上卻完成了36 story points。這個現象如果以focus factor的角度來看,相當於團隊把focus factor估太低了,但實際上團隊還有充裕的時間可以完成更多的工作。

所以,只要直接觀察estimated velocity與actual velocity便可看出團隊的專注力與生產力,以及是否遭遇到什麼「人力不可抗拒的因素」,多了一個focus factor反而增加麻煩。這個觀念有點像是iPhone手機只有用一個實體按鈕就可以搞定全部的事情,何必像「他牌手機」搞到三個甚至是四個按鈕呢(以上言論,不代表本人本台立場)。

***

寫到這邊最後還剩下一個問題,不使用focus factor之後,要如何估算每個sprint有多少小時可以使用?這個問題Teddy在「如何估算 story point?」中已經提到過了,這裡再簡短說明一下。基本上每個人每天實際可以投入工作的時間直接以五個小時來估算就好了,所以上述那個例子用這種方法來估算的話,該sprint的工時就變成:

(6 人)X (10天)X (5小時)= 300 小時

***

下一集:〈Scrum 是什麼(14):好問題

***

友藏內心獨白:這樣解釋應該夠清楚了吧。

沒有留言:

張貼留言