Scrum 真是害人不淺的東西,只是包裝很美好的「商業詞彙」罷了。
我們原本沒那麼多問題,在用了 Scrum 之後問題很多,當我們改回原本的開發方式之後,問題就瞬間又減少了。
前情提要
忘了多久之前,我在 Facebook Scrum Community in Taiwan 社團中,曾經講過一句話。
當時也有引起某些朋友的反駁,認為只要開發人員功力強,架構規劃得當,就不會有 bug,沒自動化測試也死不了人。
當時忙,也不想跟人家吵,就懶得詳細說明。
不過剛剛剛好又被 cue 到一次相關的話題,懷抱著有被 cue 到就是種證明專業價值的機會,也是種挑戰,索性就順手把圖也畫出來說明,為什麼我會那樣說 。
迭代很美好?有前提...
其實我那句話,針對的不只是 scrum,而是任何頻率高、週期短的短迭代產品增量交付,在沒有自動化回歸測試的保護下,最終會因為手動測試的範圍與成本越來越大,而拖慢交付速度,或是品質開始低落。
從上面那張圖可以看到,一般來說開發團隊的開發能量,長期平均來看是穩定的。
如果每個 sprint 都能交付 10 個 story point 的產品功能,那最一開始的測試範圍,也就是這 10 個 story point 的功能範圍。這時 effort 還是 1:1。
第二個迭代,開發團隊理想狀態下,仍然交付 10 個 story point 的 feature。但,測試的範圍呢?
所以,最差的情況下,手動測試的 effort 是兩個迭代的功能總產出,也就是 10 + 10 = 20,這時比例是 1:2。
恩...所以四個迭代之後就是 1:10 了。第五個迭代,1:15,第六個迭代,1:21。
這樣下去,產品跟團隊能撐多久?
到最後,大家就把問題都怪罪到【敏捷/Scrum 是個理想化、不落地的商業詞彙】,因為他們在用 scrum 之前,沒有這問題啊!
過去的瀑布開發反而沒這困擾
過去的瀑布式開發,是照需求系統分析、系統設計、開發、測試的階段來進行,也就是針對一整包要 release 的範圍(如果是 min-waterfall,就是「某階段要 release 的一整包功能」)來整包分析、整包設計、整包開發、整包測試。
如果一個 release phase 是半年,那等整包都開發完後,在最後一個月才做一次測試,沒有迴歸測試造成的 effort (嚴格來說,這個 effort 會在 phase 2 之後才出現,到時就是用人海戰術,趕快結案收錢就好)。
所以一般產品的開發測試團隊,在嚮往 Scrum 的種種美好而開始進行 Scrum 模式的開發與交付過程中,就會開始突顯出基礎建設不足,以及團隊工程實踐能力不足以支撐迭代式交付的問題。
所以,scrum 把產品與團隊的基礎建設與工程實踐不足的缺點血淋淋暴露出來之後,大部分的人並不樂意面對自己有這些缺點或問題,進而質疑 scrum 在實務上的問題很多、scrum 不適合我們公司或產品。
補充參考
- 【Fragile-Agile】脆弱的 Agile
- 自動化測試、迴歸測試的基底:【針對遺留代碼加入單元測試的藝術】
- 沒時間寫測試?交給【極速開發 +】吧
blog 與課程更新內容,請前往新站位置:http://tdd.best/