l

2014年3月18日 星期二

談談XP(3d):Primary Practice

Mar. 05 22:45~22:55  08:17~10:54

image

 

這系列的前三次介紹Sit Together、Whole Team、Informative Workspace、Energized Work、Pair Programming、Story,今天繼續介紹兩個XP Primary Practice:

  • Weekly Cycle(每週循環):一次規劃一週的工作,在每週開始時舉辦一個會議,在會議中討論:
    • 進度檢視,檢視專案整體的進度,以及上週預期與實際達成進度的差異。
    • 讓「客戶」挑選本週預計開發的story。
    • 將story切割成task,團隊成員認領task並且估算完成task所需時間。

至於會議要開多久,一開始不熟悉XP的團隊可能會花掉一整天,熟練之後可能一小時就可以完成。

會議結束之後開始施工,Kent Beck建議採用的開發方式就是現在流行的ATDD(Acceptance Test Driven Development)開發模式,一開始先針對story寫測試案例,當然這些測試案例一定會失敗。接下來這一週的工作目標就是讓這些測試案例通過。XP對於「完成story」的標準是很高的,必須達到每週結束之後即可部署本週所開發story給客戶使用的程度(Scrum所說的potentially shippable increment)。

至於認領工作的方式,Kent Beck傾向在切割task的時候就由開發人員簽名認領,但他也提到有些人喜歡把story寫得很小,這樣就不需要再切割task可以直接施工。也有些人把task放在一堆,當開發人員做完一件工作之後,再來拿下一件工作,不必事先簽名。

這個Weekly Cycle類似Scrum裡面的Sprint,只不過Sprint的長度一般建議介於2~4週,而XP的開發週期固定為一週。Sprint的開始也是會開一個會議,稱為Sprint Planning Meeting。Sprint結束之前還有兩個會議,Sprint Review和Retrospective,但是XP裡面就沒提到這兩個會議。

  • Quarterly Cycle(每季循環):一季規劃一次工作,在會議中討論:
    • 探討專案或團隊工作遇到的瓶頸,特別是團隊無法控制的外部因素。
    • 啟動修復(initiate repairs)。這一條看不太懂,不知要修理什麼東西?
    • 規劃這一季的工作主題(theme)。
    • 挑選與這個主題相關的story。
    • 從大方向來看,這個專案對於組織或客戶有何關聯。

Kent Beck覺得一季規劃一次工作除了符合「自然規律」(一年有四季),也跟很多企業的「專案步調」一致。例如,一季review一次專案,開季會,看季報。一季拜訪一次外部客戶或是供應商也是合適的間隔(如果是一週拜訪一次可能就太頻繁了)。

區分theme與story的目的是在每週施工的時候團隊只須關注story,但如果把story拿來做為較大尺度的規劃,例如行銷用途的產品路線圖(roadmap)又太詳細了。所以可以在大尺度的規劃上採用theme來表達。在〈需求的大小〉這一篇Teddy介紹了Investment Theme(投資主題)、Epic(史詩)、Feature(特性)、Story(故事)這四種不同的分類需求大小方式。Kent Beck在書中沒有說明他所謂的「theme」的尺度,這一點就有待日後看到相關資料再跟鄉民們報告。

最後,一季回顧一次工作上所遭遇到的困難,並且檢視與評估長期改善計畫的狀況。這一點和Scrum的retrospective meeting很像,只不過在Scrum中retrospective meeting舉辦的頻率是每個sprint一次。

從計畫的角度來看,Quarterly Cycle和Scrum的Release Plan有點類似,只不過Scrum的Release Plan沒有限定每次規劃產品釋出的長度,而Quarterly Cycle就是步調很明確,一季「3個月規劃一次」,就是time boxing的味道。當然Quarterly Cycle並不必然和產品釋出有關,從XP的角度來看,只要客戶喜歡,每個Weekly Cycle結束之後產品就可以立即交給客戶上線使用。

***

友藏內心獨白:名詞可以再多一點啊。

沒有留言:

張貼留言