l

2014年12月17日 星期三

敏捷性從哪裡來?

Dec. 16 16:45~17:21

image

先打個廣告,「Kanban方法與精實開發實作班」招生中,早鳥優惠到2015/1/9。

***

這學期Teddy在北科資工所兼任一門「敏捷與精實軟體開發」課程,課程內容除了介紹XP、Scrum、Kanban、精實開發以外,還經常討論到各種方法之間的比較。有一次上課提到iteration-based的方法,像是XP、Scrum,與flow-based的方法,像是Kanban,透過哪些方式來提供敏捷(靈活)性?

先談鄉民們比較熟悉的iteration-based方法,藉由value-driven開發精神,優先挑選高價值的需求,再透過每個iteration獲得客戶的回饋,來修正產品開發方向。因此iteration可以提供業務層面的敏捷性。但是,如果每個iteration所完成的軟體功能品質不佳,無法達到「潛在可交付給客戶」的標準,如此在軟體真正交付之前,勢必需要安排額外的時間來做所謂的「收尾」工作,也因此降低了敏捷性。所以,除了iteration以外,團隊還可以藉由拓展DoD(definition of done)來提升敏捷性。也就是降低技術債,落實各種敏捷開發實務做法。

***

Flow-based的看板方法則是透過推遲承諾來提供業務層面的敏捷性。因為沒有iteration,所以lead time變成衡量開發速度與團隊反應能力的一個重要指標。推過推遲承諾(請參考〈什麼是推遲承諾〉),團隊可以更即時(just in time;JIT)反應業務面的需求,而不是為了讓每個人看起來有事情做,就七早八早硬塞一堆價值還不是很明確的工作給團隊。

另一種拓展敏捷性的方式是拓展和上下游之間的關係(或是把看板方法往上下游拓展)。例如,功能都已經開發好了,但是因為維運團隊沒空,所以不能儘速上線,因而降低了敏捷性。或是客戶只願意一個月跟團隊開一次需求梳理會議,因此團隊被迫一次就要決定一個月預計的工作量。這也會降低業務層面或是開發流程的敏捷性。

***

雖然用iteration-based與flow-based來區分幾種增加敏捷性的方法,但這些方法其實是可以互相搭配使用。也就是說,在iteration-based的方法中也可以藉由推遲承諾與拓展和上下游之間的關係來提升敏捷性。在flow-based的方法中,可以藉由cadence(節奏)與拓展DoD來提升敏捷性。

***

友藏內心獨白:增強DoD可以提升敏捷性。

沒有留言:

張貼留言