衝刺計畫這碼事兒
好的計劃是敏捷成功的開始
在前面我已經大致描繪了一個衝刺(Sprint)大致的輪廓,而衝刺計畫(Sprint Planning)首當其衝,則是進入敏捷開發的第一道關卡。所謂的衝刺計畫,從Scrum Guide中可以給予一個定義:
在衝刺週期一個月下,計畫時間不超過8小時的活動,主要目的是為了描繪該Sprint所需要完成的樣貌,決定要完成的工作項目,並明訂執行計畫,產出衝刺目標(Sprint Goal)
從定義裡面我們可以衍生出幾個要點:
- 衝刺週期: 一個Sprint通常建議不要超過1個月,避免因時程過長導致風險上升,因此若團隊將Sprint週期縮短,例如每兩周一次或者一周一次,那麼衝刺計畫的時間則分別不要超過4小時即2小時。
- 情境的描繪: 由於待辦清單(Product Backlog, 簡稱PB)的擁有者是產品負責人(Product Owner, 簡稱PO),因此在衝刺計畫中他有義務將專案的整體樣貌解釋清楚,並展示目前所規劃的PB,協同開發團隊一起討論各PB的粒度、切割以及執行方式等等。
- 執行計畫: 針對開發團隊所認領的PB,需逐項討論執行的細項,包含切割的粒度、項目大小、優先權、預估時間、項目完成的定義以及外部資源等等,最後形成由開發團隊接手的任務(task)。通常開發團隊所挑選的PB又稱為Sprint Backlog,簡稱SB,因為已經交付,此時開發團隊擁有決定如何完成這些項目的權利。
- 衝刺目標: 即衝刺計畫的最後產物,預期在衝刺周期結束時,能夠產出潛在可釋出的增量(Potentially-Releasable Increment)。
衝刺計畫之3大主題
- 為何這次衝刺是有價值的?
簡單來說就是,我們為何而戰?,產品負責人手中掌握了整個專案的樣貌,須明確說明每個PB所可以為市場所帶來的商業價值,並且排定PB之間的優先權,這樣開發團隊在討論衝刺目標時才能有更足夠的依據決定各項目的實作順序及切割方法。必要時,敏捷團隊可以邀請利益關係人或是領域專家一起加入討論,而教練則需要在旁協助他們融入敏捷的規則,避免失焦。這也為後續領域驅動設計(DDD, Domain Driven Design)的應用留下伏筆。
- 有哪些項目可以在本次衝刺完成?
在和產品負責人討論完各項目需求之後,開發團隊可以依據過去前幾個衝刺的經驗,挑選這次衝刺所需要完成的項目,可能會考慮到項目執行的速度、項目大小、項目結案的標準、最近期的增量狀況等等,最後形成這次衝刺所需要的衝刺待辦清單(Sprint Backlog, 簡稱SB)。
- 要如何完成挑選的項目?