January 21 10:41~ 12:18
前情題要:
- 〈Scrum 是什麼(1):雙重回饋機制〉
- 〈Scrum 是什麼(2):Scrum 的內涵〉
- 〈Scrum 是什麼(3):三種補充文件〉
- 〈Scrum 是什麼(4):Product Backlog〉
- 〈Scrum 是什麼(5):初探 Sprint Planning Meeting〉
- 〈Scrum 是什麼(6):Sprint Planning Meeting 眉角〉
- 〈Scrum 是什麼(7):Daily Scrum〉
- 〈Scrum 是什麼(8):Sprint Review Meeting〉
在兔年年尾終於來到了Scrum最後一個活動Retrospective Meeting,還記得Scrum雙重回饋機制的那張圖嗎?Retrospective Meeting的目的就是要提供團隊一個反省與檢討「軟體開發流程」的機會,要如何反省與檢討呢?
Teddy的作法是將會議切成兩個階段:
- 感謝:第一個階段是請每一個團隊成員輪流表達對於其他團隊成員的謝意,詳細進行方式請參考「Retrospective Meeting 之我謝謝你」。 Teddy個人覺得這個活動的正面力量非常強大,可以讓團隊成員養成一種互相幫忙的風氣,強烈推薦Scrum團隊採用。有一點要補充說明一下,基本上感謝的範圍與對象是在這個sprint中幫助自己的同一個團隊成員(跟你一起開retrospective meeting的人),但是有時候團隊成員會「出軌」感謝其他部門的人,這也是OK。
- Good and Improvement:第二個階段是要列出這個sprint中關於開發流程上,哪些做法是好的要繼續維持,那些地方是有待改善的,以及討論出下個sprint的改善項目;活動進行方式請參考「Retrospective Meeting = 許願池」。
***
最近一次Teddy去參加ezScrum講座的時候有一位朋友問Teddy一個問題:「你們團隊實施了三年多Scrum,難道不會遇到retrospective meeting的時候發現沒有事情需要改善的困境嗎?」
這個問題問得很好,在軟體開發上可以改善的事情實在太多了,如果遇到不知道要改善什麼的時候很可能是Scrum Master沒有用心觀察團隊開發活動或是團隊成員太忙(通常是瞎忙)以至於腦袋空空想不出有什麼可以改善的。可從下列項目來思考改善的方向:
- 基礎practices達成度:團隊目前對於基本agile practices的功力練到了第幾級,是否還有更上一層樓的空間。例如,自動化單元測試的line coverage達到多少百分比了?如果有寫自動化單元測試但是不知道line coverage多少那麼可以先從在持續整合系統加上test coverage工具開始改善起。假設已經有test coverage但是line coverage只達到50%那麼可以把改善目標訂成「將line coverage提升至52%」。如果line coverage以及到達很高的水準,可以考慮提升branch coverage或是其他各式各樣的code coverage。如果自動化單元測試已經做得很好了,那麼團隊有做自動化功能測試嗎?除了測試以外還有很多可以改善的基本practices,例如pair programming實施狀況、有沒有導入持續整合、有沒有做到ten-minute build等等。
- 進階practices達成度:進階practices顧名思義就是上乘的武功秘笈,看過武俠小說的鄉民們一定都知道上乘武功像是玉女心經、九陰真經、六脈神劍這一等級,練武的時候是很容易走火入魔的,除了練武者需要有一定的武功底子以外,最好能找一個清靜沒人打擾的地方專心修煉。當團隊默契與成員的功力到了一定程度之後,可以視狀況逐步修練這些上乘武功。這一類的招式有shared code、single code base、daily deployment (continuous delivery)、real customer involvement、incremental deployment等等。
- 消除浪費:消除以下七種浪費可以當作改善的目標,包含Partially Done Work (In-Process Inventory)、Extra Features (Over-Production)、Relearning (Extra Processing)、Handoffs (Transportation)、Task Switching (Motion)、Delays (Waiting)、Defects (Defects)。
想要了解有哪些值得一試的agile practice可以參考《Extreme Programming Explained, 2nd》這本書。至於如何消除浪費請參考《Implementing Lean Software Development: From Concept to Cash》。
***
Retrospective Meeting是用來討論開發流程的議題,有時候團隊成員會把「產品改善」的意見與「流程改善」混為一談,當這種情況發生的時候Scrum Master要提醒團隊成員不要忘了Retrospective Meeting的目的,把焦點轉回到流程改善上面。
***
下一集:〈Scrum 是什麼(10):時程估算〉
***
友藏內心獨白:這一篇是用Windows Live Writer寫的...Mac上面有沒有其他好用的寫部落格軟體啊?
沒有留言:
張貼留言