極限程式設計,一次反思

發表於2014-03-14

在我手裡的是一本很薄的白皮書,14年前,它顛覆了整個軟體世界。這本薄書就是:《Extreme Programming Explained》,副標題是:擁抱變化。作者是Kent Beck,出版於1999年。

這本書不到200頁,很小。字型印刷的很大,而且留白很多。撰寫風格很隨意,通俗易懂。章節很短。裡面提出的概念很簡單。

這本書的思想猶如一次地震,而且震撼至今仍無減弱跡象。

第十章,位於53頁,陳列了12條軟體開發實踐指導,它讓軟體業陷入了大論戰;並催生了一次革命,由此改變了我們軟體開發過程的各個方面。這些實踐方法是:

  • 計劃遊戲:如今的SCRUM敏捷方法論的原型。核心概念是拆分軟體開發任務,排優先順序,迭代式增量開發。
  • 小規模釋出:主要思想是軟體釋出/部署應該提高頻度,增量釋出/部署。
  • 簡單設計:是指讓系統保持越簡單越好——無論將來的變化會讓我們如何擔憂。
  • 測試:是指程式設計師,甚至客戶,應該編寫自動化測試程式,來驗證產品程式碼是否是按設計的方式執行。如今我們把它稱作測試驅動開發(TDD)和確認測試驅動開發(ATDD)。
  • 重構:是指軟體的內部結構可以、並且應該做持續的改進。
  • 結隊程式設計:是說團隊成員如果各自獨立工作就不能稱之為團隊。團隊成員必須有規律的合作——在鍵盤上。這樣,他們能充分分享團隊其他成員應該知道的知識。
  • 集體所有制:是指程式碼歸團隊共有,不屬於個人。
  • 每週工作40小時:是說經常加班的團隊是失敗的團隊。
  • 現場客戶:是指來自業務方、負責需求的人,必須有準備的全程和開發團隊保持暢通交流。
  • 編碼標準:是指開發團隊要採用一種固定的程式碼風格,用來提高程式碼整潔和方便交流。

引起爭議?

很奇怪,不是嗎?這些看起來似乎沒有任何爭議呀。但在14年前,這些思想普遍受人質疑。事實上,它們是如此的受人反對,以至於有人專門出版書籍來反駁這些實踐方法如何不可行,並斥責這些倡導者為烏托邦、騙錢者、從未寫過一行程式碼的蠢貨…..

哦,抱歉,我不應該讓這些過去的事情控制我的情緒….畢竟,他們都消失了,而我仍在這裡。

看一下這12條實踐指導,哪一個你沒用過?你們大部分人,我親愛的讀者,很可能每天都在實踐著大部分這些原則。誇張的說,它們已經無處不在,保守的說,它們現在已經是主流。越來越多的沒有采用這些實踐方法的團隊正在試圖擁抱它們。這些實踐方法成為了一種目標,一種願望,而不是當初被人謾罵的異教。

Uncle Bob

Uncle Bob

風雲變幻

這14年來事情發展的有些意外。敏捷開發運動——在極限程式設計大討論中誕生的運動——迅速爆紅,隨後被一些什麼身份都有、唯獨不是程式設計師的專案經理們視為聖經。我們看到了這場運動的誕生,廣泛接受,以及可以預見到的理想與現實的落差。我們看到了人們採納“計劃遊戲(planning game)”方法(例如SCRUM),但卻忽略了其它11個實踐方法;於是我們看到了實施中的失敗——這被Martin Fowler稱之為氣虛的Scrum。由於理論和實踐的分裂,我們爆發了各種的口水仗,導致Kanban,Lean,以及其它新名詞相互競爭。我們看到了軟體工藝運動的成長,也看到了敏捷思想的淡化和蛻變腐蝕。

但是,儘管有人在炒作,有人失望的離去,這12條軟體開發實踐指導卻從未離去。有些名稱上有了小改動。每週工作40小時變成了可持續性比率(Sustainable Rate)。測試變成了測試驅動開發(TDD)。比喻(Metaphor)變成了DDD。小規模釋出程式設計了持續整合和持續部署。儘管有這些變化,這些實踐方法仍然基本保留著它們14年前第一次被寫出來時的主旨。

我們也看見了極限程式設計這個詞慢慢完全淡出了人們的視野,不再被人使用。現在只有為數不多的人知道這個術語。有一些人還在用它的簡稱XP;但對大多數人來說,這個詞已經蒸發殆盡了。我已經聽不到有團隊把他們的程式設計方法描述為極限程式設計——即使他們是完整按照這12種指導實踐的。名稱變了,實踐方法沒變。這些實踐方法論永存。

爭議,炒作,恐嚇,大話,唱衰。這種亂象一遍又一遍重演。混雜著人們的貪婪,熱情和驕傲。不管怎樣,這些實踐方法論永存。

堅實的價值基礎

我是這些實踐方法論的信徒,因為我知道它們有著堅實的價值基礎做支撐。Kent Beck在他的書裡的29頁第七章裡把這些價值描述為:

  • 交流
  • 簡化
  • 反饋
  • 鼓勵

我想去解釋為什麼我們的軟體開發需要這些;但我想它們已經不言自明瞭。沒有哪個軟體行業的人會拒絕其中的任何一條。沒人哪個軟體人不在努力將這些價值體現在他們的工作中。它們是軟體開發藝術的核心價值。

成功

極限程式設計是成功的!它比那些最具幻想精神的擁護者的想象裡的還要成功。因為它經受住了考驗。因為它甚至比它自己的名字活的更長久。

極限程式設計的成功類似於結構化程式設計的成功。沒有人還會去想結構化程式設計——他們從來都是使用這種程式設計方式。沒有人再去想極限程式設計,我們一直都在這樣實踐著。

這才叫成功!真正的成功是一種身形不在,但它的精神已經融入到我們每個人的日常生活中的成功。

回顧

今天,讓我們抽出一點時間回顧一下1999年。那一年,Kent Beck寫出了一本曠世之作。一本改變一切的著作。請記住:極限程式設計,並且要知道,它正是我們如今的人平常認為的“優秀軟體開發實踐方法”的核心。

相關文章