圖片來源:www.freepik.com
在上回讓 Scrum 團隊有更好的預估之二提到一些應該要避免的措施,以及時時梳理 product backlog 讓團隊有較好的估算,這回則是作為一位 scrum master,我們該如何自省與發現估算的問題,也是以自我反省的方式完結這個系列。
其實從每天的 daily scrum meeting 就能觀察出預估與實際執行的落差,但即使出現落差,先別急討論預估的問題,這比較適合在每次 sprint 結尾的的自省會議中討論,自省會議 PO 可以參加,但如果要討論對預估的調整,我個人比較建議 PO 不參加自省,通常 PO (特別是兼主管職時) 參加會讓團隊不說話或是口頭上應付。討論時,scrum master 可以將該 sprint 的 story 與 task 的 burn down chart 作為會議討論的參考素材,也比較不會失焦。通常兩張圖擺在一起看可以看到三種類型:
因此,遇到下圖的情況,恐怕要 case by case 請團隊找出原因,而不是一開始就討論下次是否要少安排一點 stories,像是剛剛所說的第三方套件引起問題,那改進方向可能可以是下次在 refinement 後若有要使用不確定的技術,可以跟 PO 協調安插 prior study 的 story,在受控制的環境中實驗新技術;或是,太晚與 PO 確認完成的 story 導致 review 前一天才發現某個地方做錯了,那可能的改進方向就更不一樣了。
當其他原因都排除了,就可以重新檢視這次排入的 stories 數量與點數,未完成的 stories 點數,然後訂出下個 sprint 的 stories 點數上限,並在下次的 planning meeting 嚴格執行,否則團隊會覺得自省是玩假的:明明都做不完了,還是要我們吃下去。
可能有人覺得怎麼可能出現下圖?在 sprint 的一半時間就做完所有預估的事情?但事實上我擔任 scrum master 期間遇到過,而且不只一次,當出現下圖時,偶而出現是還好,畢竟團隊如果沒有一些盈餘時間,是無法學習新技術與改善團隊的。此時,scrum master 可以讓開發團隊與 PO 討論是否要再拉新的 stories 進來,或是用剩餘的時間處理技術債,又或是研究接下來可能用到的新技術,不論是哪種,都要與 PO 討論,確保真正重要的事被優先執行。
但如果這現象是頻繁地出現,可能就是一個團隊過度保守的信號,在估點與估時的時候,數字帶有過多的 buffer,雖然說 PO 依舊可以在 sprint 期間加入新的 stories,但會讓本來穩定的 velocity 貶值,表面上 velocity 數字好像變大了,但其實整體來看完成的功能並沒有變多,此時,可能要決定是讓 velocity 續貶 (讓每個 sprint 能納入的 story 點數繼續增加),或是修正基礎點維持 velocity 的相對穩定 (從已完成的 story 中挑選一個作為新的比較基準),也可以跟團隊檢討,如何能有比較不虛胖的點數出現。當然,這也可能是團隊開發速度提升的信號,所以 scrum master 要小心應對,不然會讓本來開始進步的火苗又被澆熄了。
Scrum 框架其實很簡單,卻是易學難精,若沒有理解藏在背後的 agile 精神,就容易變成只是依樣畫葫蘆卻沒有得到好處,例如,為了有『精確的』預估,為了有『漂亮的』的 burn down chart,一個 refinement meeting 開整整一天 (若是兩周為一個 sprint,一般是建議 refinement 不要超過 4 小時),把所有的設計細節全部寫下來,卻忘記當初使用 user story 的初衷是一個 placeholder 讓大家看到時,能用說故事的方式讓別人了解為什麼需要這功能,以及要完成什麼功能,怎麼完成是到 planning 及施工時,讓團隊發揮的,一次 planning meeting 要一天甚至兩天 (一樣,若是兩周為一個 sprint,planning meeting 也不建議超過 4 小時),task 切到小到不行,但卻又互相依賴,變成一次要領好幾個 task,這時恐怕是走火入魔,忘記當初這兩個會議的本意了。
從上面看下來,怎麼覺得開發團隊好像小朋友似的,都要 scrum master 像保母一樣照顧,但如果 scrum master 或 PO 真的像保母一樣帶團隊,那團隊就真的永遠是小朋友了,要讓一個團隊成長,要像對待成年人一樣,放手讓團隊走自己的路,上述很多觀察或是方法,能讓團隊發自內心提出來是最好的,甚至讓團隊想出更好的辦法,這時靠的是引導而不是教導 ,更不是指示,scrum master 要能從團隊的表現與現象觀察出問題,但切記別揠苗助長,適當地授權,團隊慢慢就能自我組織,自己解決問題。