雖然這系列的課程是設計給工程師的,然而在學習敏捷開發(Scrum 為主)的過程中,我們是從如何做「產品」的角度去做切入,也因此在課程接近尾聲的時候我們再次討論了產品跟專案的差異,也是這一週課程中各種安排的理由所在。
產品與專案的差異
我們在開發產品的時候,大多會用專案的方式去思考。也就是預期我們的產品是被設計好的,並且依照規格進行開發跟製作。類似瀑布流的方式,我們到了一個階段後進行驗收,修正問題後就釋出。
然而,敏捷開發之所以要能夠「適應變化」就是因為我們並無法預期產品的發展如何。也許我們推出了一個新的功能使用者反應不好,可能就要暫停這個功能的後續開發,而改為其他更受歡迎的功能來繼續進行。
也因此,我們在執行專案的過程中會預期所有事情都是「事先規劃」好的狀態,在產品的開發上,則需要不斷的根據使用者的回饋跟反應,去調整產品的功能來適應市場的變化。
改變思考
在課程開始的時候就已經提到這個課程會帶來一些衝擊(Impact),在這一週的課程中確實有非常多不同以往的觀念被提出。
如果我們在開發上的思考,會很習慣的用「專案」的方式來看問題,而忽略了我們正在進行的是一個產品的開發。同時在遭遇到變化的時候,也會因為「規格變更」而感受到非常多的痛苦。
正因如此,在敏捷開發中採取的驗收測試開發、衝刺、結隊程式設計等等方式,都是用來對應「變化」的技巧,我們盡可能「專注在當下」的情況中,只完成(Done)必要的功能,當遭遇變化的時候才能夠更加彈性的去對應。
我想,對大部分的人來說習慣是難以改變的,然而我也相信這些「衝擊」應該也讓很多人過去說不出的違和感有了解答。