為了避免讓鄉民們說 Teddy 只會罵人不提供 solutions,今天來談一下 Iteration 0 要幹麼。在說明 Iteration 0 是什麼東東以及這個東東到底是要做什麼的之前,請鄉民們回顧一下 Teddy 之前寫的這一篇『萬事起頭難:如何開始第一個 Sprint? 』。
既然『捧油』在介紹 Scrum 的時候建議要先用一個 Iteration 0 來『打好基礎』,那麼 Teddy 就來幫這位『捧油』說明一下 Iteration 0 的目的與其內容。Teddy 第一次看到 Iteration 0 這個名稱是在 Becoming Agile: in an imperfect world 這本書的第 17 章,Start your engines: iteration 0。理想上,採用 Scrum 應該是不需要在 sprint 1 之前還來插花個 sprint 0 或是 iteration 0。如果 Teddy 沒有記錯的話,只要有 product backlog(就是說已經有可以開工的需求)就可以開始第一個 sprint。
Product backlog 是誰寫的?是 Product Owner 寫的。一般的書講到這邊就沒了,但是 Teddy 相信鄉民們一定會有一個疑問:那 Product Owner 何時寫 stories?難道是在 iteration -1 的時候寫的....XD。根據 Teddy 的研究發現,最有可能的答案是:『不關你的事』。沒錯,就是『不關你的事』。因為在專案開始之後 Product Owner 除了一定要參加 sprint planning meeting,sprint demo meeting 以外,剩下的時間他要幹麼咱們管不著。既然在專案開始之後都管不著了,在專案開始之前 Product Owner 何時要寫 stories 那咱們就更管不著了。所以,不管 Product Owner 何時寫 stories,總之就是 sprint 開始之前把開工所需的 stories 生出來就是了。
所以,只要 Product Owner 準備『足夠多』(何謂足夠多則又是一門學問了...XD)的 stories,就可以準備開工大吉了。但是在實務上,鄉民們的團隊可能對 Scrum (或是其他的 agile methods) 沒有那麼熟悉,在沒有『打好基礎』的情況下貿然開工心裡會毛毛的(或是極力反對)。所以此時先來個『無責任 iteration 0』給它『預演』或是『彩排』一下也許是個不錯的主意。
依據 Becoming Agile 的說法,iteration 0 要做的事有:
- Initial vision for the architecture:大家都說 architecture 很重要,而且要修改 architecture 成本很高。所以正式開工之前先偷偷研究一下 architecture 也是很合理滴。
- Completing contracts with third parties:看看專案會不會用到什麼 third parties 的軟體(例如資料庫或是 workflow engine 等等),如果需要軟體授權的話趕快趁現在簽一簽。
- Preparing environments and support tools:開工前先把『生產線與機器』給準備好。最常見的是把 svn 與 continuous integration server 架好,IDE 環境設定好,準備測試環境等等。
- Obtaining funding:如果案子沒錢的話快去找錢否則 iteration 0 就變成第一個,也是最後一個 iteration ...XD。
- Finalizing and dedicating the project team:沒工人的話快去把工人給找齊...最近缺工問題還滿嚴重滴...XD。
- Cheating: starting the work early:如果還有時間,就作弊先偷跑,做一點『先期研究』。例如:進一步分析需求,做一些假畫面,測試一些未來可能會是用的 libraries 或是 APIs,或是辦一些教育訓練等等。
***
看到這邊鄉民們應該會冒出另一個問題:iteration 0 需要執行多久?依據 Becoming Agile 的說法(p. 223):Iteration 0 work usually runs for about a week, but it can take less or more time depending on project complexity. 在此 Teddy 再次提醒,千萬不要把 Iteration 0 搞得太長,不然很容易變成 big up-front design。
***
友藏內心獨白:為什麼這些絕世武功練起來都是如此凶險?
沒有留言:
張貼留言