敏捷僅僅是目的嗎?
敏捷思想就是那四條敏捷宣言和十二條基本原則,很抽象也很乏味。就好像那個著名的“見山還是山,見水還是水” ,沒有過這種經(jīng)歷的人是無論如何也不能體會和理解它的含義,而有過這種經(jīng)歷的人則會感嘆佛的博大精深。Scrum、XP、FDD等等方法是敏捷實踐,他們是一些比較具體,看得見摸得著的東西,但同時也各有側(cè)重,對敏捷的反應(yīng)比較片面。
那么宣言、原則、實踐,他們是什么關(guān)系呢?宣言實際上就是核心思想,就說明了敏捷到底是一種什么樣的思考方式。但是這個東西真的很抽象,一百個人可以有一百種理解,因此又加上了十二條基本原則,原則指導(dǎo)你做事的方針,當(dāng)你在做一件事而又不確定哪種方法正確時,就可以參考一下原則,看看是否與原則相違背。但是原則這個東西也很抽象,就算是大家都遵守同樣的原則,也可能會有各種各樣的方法,這些方法中當(dāng)然也有效率高的,也有效率低的。那么現(xiàn)在流行的這些敏捷實踐方法,其實就是已經(jīng)被證明是效率比較高的方法,或者叫最佳實踐。從這些實踐開始,總比自己從頭摸索要快要好。
學(xué)習(xí)敏捷應(yīng)該從實踐開始,但是不能僅限于實踐,Scrum之所以這么流行是因為它比較對管理層的胃口。Scrum的特點也是在組織級提供支持,而在開發(fā)級則沒有什么支持。相反XP比較重視開發(fā)方面的實踐,TDD、Pair、CI無一不是與開發(fā)工作相關(guān)的實踐。因此可以說敏捷實踐各有特色,各有側(cè)重。但是也要看到,雖然龍生九子各有不同,可是他們卻都還是龍的后代,因此在骨子里這些實踐是遵循十二條基本原則和四條敏捷宣言的,這也是為什么他們可以叫“敏捷”實踐。所以說在具體應(yīng)用敏捷實踐時,一定要考慮這十二條基本原則,如果違反了,就是披著敏捷的殼,虛有其表,想不失敗都難。
當(dāng)你慢慢掌握了一些敏捷實踐后,就要想辦法改進了,世界總是在變化的,昨天行得通的方法今天未必行得通,別人那里行得通的方法,在你這里未必行得通。因此要根據(jù)自身情況選擇并修改敏捷實踐,形成有自己特色的實踐方法。那么在建立自己特色的方法時,就需要檢查是否遵循了十二條基本原則和敏捷宣言了。
當(dāng)你逐漸可以根據(jù)需要自己定義流程,并不斷總結(jié)和改進后,你會慢慢忘記十二條原則,因為它太多了太難背了,而你基本上也可以在忘記的情況下同樣遵守他們,那么恭喜了,你已經(jīng)理解了敏捷了,敏捷宣言就可以指導(dǎo)你的行為了,甚至你的思想也已經(jīng)敏捷了,敏捷宣言也不重要了。
敏捷是目的么?敏捷一定就比不敏捷好么?我為什么要敏捷呢?
敏捷并不是目的,我們的目的是創(chuàng)造優(yōu)秀的軟件。什么是優(yōu)秀的軟件,功能正確、易于維護、易于修改、能給客戶帶來價值、能為人類文明進步做出貢獻等等等等。有句話說得好:不管黑貓白貓,抓到耗子的就是好貓。軟件開發(fā)也是一樣,不管你用什么方法,只要能創(chuàng)造優(yōu)秀的軟件,就行了。
敏捷現(xiàn)在就是那個抓耗子效率比較高的貓,之所以用敏捷就是要提高抓到耗子的概率,遲早有一天會出現(xiàn)更厲害的貓來代替這只貓;而各種敏捷方法就是抓耗子的招數(shù),對于某些耗子這個招數(shù)好使,對于某些耗子那個招式好用,因此需要根據(jù)具體問題來采用合適的招數(shù)應(yīng)對。
說了這么多敏捷的好,我就一定要用它么,我一定要學(xué)它么?不一定,敏捷不是銀彈,它不能解決所有的問題,事實上在某些環(huán)境下還不如不敏捷。但是如果你不學(xué)習(xí)它,你又怎么知道何時可以使用它來提高生產(chǎn)率,何時不使用來避免失敗的苦果呢?
敏捷也好,.NET也罷,都不是目的,只是手段,或者是一種可選的方法和工具。關(guān)注軟件的價值,建造優(yōu)秀的軟件,才是最終的目的。
【編輯推薦】