Nov. 02 20:35~21:11
昨天晚上睡前利用一點空閒時間把「敏捷與精實軟體開發」課程第一次期中考的考卷拿出來改,突然能夠體會以前念書的時候,看到老師邊改考卷邊搖頭嘆氣的心情...Orz。改到某份考卷的時候Teddy突然心中一驚,有位學生寫了這麼一句話:
每個iteration都是mini waterfall
怎麼會說每個iteration都是mini waterfall呢?!Teddy上課沒有這麼教啊。以一個兩週的sprint來說,如果每個iteration(sprint)都是mini waterfall,就代表團隊可能利用前三天做分析,中間三天拿來開發寫程式,後面三天拿來測試與整合,最後一天demo。這是一種誤解iteration的開發方法,不要以為iteration就是將waterfall較長的開發週期切成較短的週期而已。
在iteration裡面,所規劃要實作的需求(假設需求以user story表示)必須是end-to-end story,然後每一個story實作過程都包含完成的分析、設計、開發、測試、整合等活動。此外,story的施工順序必須依據排定的優先順序來施工。雖然在iteration結尾通常會安排一個review會議來檢視這個iteration的成果,但如果客戶或是Product Owner時間可以配合,也可以在每一個story一完成就先請對方來看一下,降低iteration結束時才review的風險。如果iteration變成mini waterfall,就不可能有「先完成的story先review」這樣的彈性(因為所有的story在iteration結束才看得到結果),同一個iteration的story對團隊而言優先順序的重要性相對也比較不明顯。
***
最近Teddy學到三點心得:(1)溝通真的很難,連當面講話,你說YES對方都可以聽成是NO;(2)過去成功的經驗,有時會成為未來成功的阻礙。難的地方在於,你不肯定哪些經驗可以幫助你,哪些可能會阻礙你;(3)在假設前提不成立的情況下所衍生的討論,是沒有任何意義的。
終於知道,為什麼武俠小說經常會寫到「要練成絕世武功,要先把之前所學的武功招式全部忘光」這樣的橋段。不先放空,怎麼裝新東西?
***
友藏內心獨白:我又誤人子弟了。
"每一個story一完成就先請對方來看一下"
回覆刪除如果情況不適用(對方在國外),是不是要 commit 然後出一個 build 讓對方測試?這樣會不會無形中要維護很多版本?
"是不是要 commit 然後出一個 build 讓對方測試?" ---> 如果有CI,請對方到CI上自己下載系統下來測試即可,和維護多少版本沒有關係。
回覆刪除覺得學生所指的Waterfall只是指它經歷的流程活動(每一個story實作過程都包含完成的分析、設計、開發、測試、整合等活動),並不是真的指你所謂的那種很標準的Waterfall。不曉得為啥Waterfall變成是一個負面名詞了,對我來說它就是軟體開法的一種歷史、一種方法、一種流程,它沒有好壞,只有你的專案適不適合用而已。如果Waterfall那麼爛,敏捷SCRUM出來前難道沒有任何一個Waterfall開發出來的優良軟體嗎?我不認為。
回覆刪除