最近公司里的Scrum Master在一個PPT里把所有失敗的傳統流程的項目的案例的缺點組合成了一個“典型的”傳統軟件開發模式,用以對比可以自適應任何情況的無懈可擊的Agile。并且告訴我們,使用了Agile的項目失敗是因為你不夠Agile,不然你怎么會不能夠立刻調整到合適的狀態呢。然后緊接著又批判了一個因為沒有做Retro就被貼上“不完善”標簽的團隊。等等,剛才誰說可以自己調整到合適狀態的來著。。。
首先,我承認Agile中的很多理論是相當有效的,并且實踐證明也能廣泛的應用于不小的一部分項目當中。
然而流程之類的東西,感覺應該是團隊自發選擇或是通過總結經驗建立出來的,就好像是從多處邏輯里提取出來的抽象和通用方法一樣。而通過類似傳教的方式四處宣揚和強行灌輸來影響大眾并吸收黨羽,還以一種革命者的態度來推翻所謂的“傳統方法”的做法,只會遭到反感。
仔細想下Agile和傳統方法的區別,對比一下不就知道他們各自的長處的軟肋了嗎?傳統的軟件開發模式關注大格局,軟件架構師會在項目早期就思考系統在未來的演進并考慮所有其他相關的系統以及他們之間的通訊問題。而Agile側重于快速創建原型然后在進行不斷迭代,重構,持續交付從而克服各種項目前期的不確定因素。傳統的流程講究層次,每個階段都會是從設計,開發到測試交付的流程。而Agile強調端到端feature的交付,產品會被分解成很多feature然后由各個成員各自完成。那么當你的feature很難甚至沒有辦法進行正交分解時,你又怎么能保證你的持續交付能夠順利呢。
總的來說,不要為了用而用。不同的風格和流程是很正常的,適合的才是最好的。
說到底,好的設計和好的流程哪個才是產品質量的決定因素呢。不要天真的以為只要遵從某個速效減肥藥似的流程就可以奇跡般的獲取成功。不然說不定哪天會有人告訴我項目之所以成功是依靠公司的dress code呢。
所以程序員還是應該多提高自己的姿勢水平。周圍大談Agile的Scrum Master,也許連一行代碼都沒寫過呢:)
也有人告訴我,很多我知道的大神都在用Agile,而且另外也有很多大公司在用,你怎么能拒絕這么流行炫酷的東西呢。那么我建議你讀一下王垠的[我和權威的故事],當然你也可以了解下[他是怎么看待Agile的]。
所以說到底用不用Agile呢。結論就是要自己思考然后決定。相信熟悉項目和團隊的你肯定比所謂的Agile教練或是軟件工程專家更能做出正確的決定吧。