敏捷方法論:極限編程,一次反思本文的作者Robert C. Martin,也就是大名大名鼎鼎的“uncle bob” 在我手里的是一本很薄的白皮書,14年前,它顛覆了整個軟件世界。這本薄書就是:《Extreme Programming Explained》,副標(biāo)題是:擁抱變化。作者是Kent Beck,出版于1999年。 這本書不到200頁,很小。字體印刷的很大,而且留白很多。撰寫風(fēng)格很隨意,通俗易懂。章節(jié)很短。里面提出的概念很簡單。 這本書的思想猶如一次地震,而且震撼至今仍無減弱跡象。 第十章,位于53頁,陳列了12條軟件開發(fā)實踐指導(dǎo),它讓軟件業(yè)陷入了大論戰(zhàn);并催生了一次革命,由此改變了我們軟件開發(fā)過程的各個方面。這些實踐方法是:
引起爭議? 很奇怪,不是嗎?這些看起來似乎沒有任何爭議呀。但在14年前,這些思想普遍受人質(zhì)疑。事實上,它們是如此的受人反對,以至于有人專門出版書籍來反駁這些實踐方法如何不可行,并斥責(zé)這些倡導(dǎo)者為烏托邦、騙錢者、從未寫過一行代碼的蠢貨….. 哦,抱歉,我不應(yīng)該讓這些過去的事情控制我的情緒….畢竟,他們都消失了,而我仍在這里。 看一下這12條實踐指導(dǎo),哪一個你沒用過?你們大部分人,我親愛的讀者,很可能每天都在實踐著大部分這些原則??鋸埖恼f,它們已經(jīng)無處不在,保守的說,它們現(xiàn)在已經(jīng)是主流。越來越多的沒有采用這些實踐方法的團隊正在試圖擁抱它們。這些實踐方法成為了一種目標(biāo),一種愿望,而不是當(dāng)初被人謾罵的異教。 風(fēng)云變幻 這14年來事情發(fā)展的有些意外。敏捷開發(fā)運動——在極限編程大討論中誕生的運動——迅速爆紅,隨后被一些什么身份都有、唯獨不是程序員的項目經(jīng)理們視為圣經(jīng)。我們看到了這場運動的誕生,廣泛接受,以及可以預(yù)見到的理想與現(xiàn)實的落差。我們看到了人們采納“計劃游戲(planning game)”方法(例如SCRUM),但卻忽略了其它11個實踐方法;于是我們看到了實施中的失敗——這被Martin Fowler稱之為氣虛的Scrum。由于理論和實踐的分裂,我們爆發(fā)了各種的口水仗,導(dǎo)致Kanban,Lean,以及其它新名詞相互競爭。我們看到了軟件工藝運動的成長,也看到了敏捷思想的淡化和蛻變腐蝕。 但是,盡管有人在炒作,有人失望的離去,這12條軟件開發(fā)實踐指導(dǎo)卻從未離去。有些名稱上有了小改動。每周工作40小時變成了可持續(xù)性比率(Sustainable Rate)。測試變成了測試驅(qū)動開發(fā)(TDD)。比喻(Metaphor)變成了DDD。小規(guī)模發(fā)布編程了持續(xù)集成和持續(xù)部署。盡管有這些變化,這些實踐方法仍然基本保留著它們14年前第一次被寫出來時的主旨。 我們也看見了極限編程這個詞慢慢完全淡出了人們的視野,不再被人使用?,F(xiàn)在只有為數(shù)不多的人知道這個術(shù)語。有一些人還在用它的簡稱XP;但對大多數(shù)人來說,這個詞已經(jīng)蒸發(fā)殆盡了。我已經(jīng)聽不到有團隊把他們的編程方法描述為極限編程——即使他們是完整按照這12種指導(dǎo)實踐的。名稱變了,實踐方法沒變。這些實踐方法論永存。 爭議,炒作,恐嚇,大話,唱衰。這種亂象一遍又一遍重演。混雜著人們的貪婪,熱情和驕傲。不管怎樣,這些實踐方法論永存。 堅實的價值基礎(chǔ) 我是這些實踐方法論的信徒,因為我知道它們有著堅實的價值基礎(chǔ)做支撐。Kent Beck在他的書里的29頁第七章里把這些價值描述為:
我想去解釋為什么我們的軟件開發(fā)需要這些;但我想它們已經(jīng)不言自明了。沒有哪個軟件行業(yè)的人會拒絕其中的任何一條。沒人哪個軟件人不在努力將這些價值體現(xiàn)在他們的工作中。它們是軟件開發(fā)藝術(shù)的核心價值。 成功 極限編程是成功的!它比那些最具幻想精神的擁護者的想象里的還要成功。因為它經(jīng)受住了考驗。因為它甚至比它自己的名字活的更長久。 極限編程的成功類似于結(jié)構(gòu)化編程的成功。沒有人還會去想結(jié)構(gòu)化編程——他們從來都是使用這種編程方式。沒有人再去想極限編程,我們一直都在這樣實踐著。 這才叫成功!真正的成功是一種身形不在,但它的精神已經(jīng)融入到我們每個人的日常生活中的成功。 回顧 今天,讓我們抽出一點時間回顧一下1999年。那一年,Kent Beck寫出了一本曠世之作。一本改變一切的著作。請記住:極限編程,并且要知道,它正是我們?nèi)缃竦娜似匠UJ為的“優(yōu)秀軟件開發(fā)實踐方法”的核心。 |
|