極限編程,一次反思

jopen 10年前發布 | 6K 次閱讀 編程

極限編程,一次反思

本文的作者Robert C. Martin,也就是大名大名鼎鼎的“uncle bob”

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

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

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

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

  • 計劃游戲:如今的SCRUM敏捷方法論的原型。核心概念是拆分軟件開發任務,排優先級,迭代式增量開發。

  • 小規模發布:主要思想是軟件發布/部署應該提高頻度,增量發布/部署。

  • 簡單設計:是指讓系統保持越簡單越好——無論將來的變化會讓我們如何擔憂。

  • 測試:是指程序員,甚至客戶,應該編寫自動化測試程序,來驗證產品代碼是否是按設計的方式運行。如今我們把它稱作測試驅動開發(TDD)和確認測試驅動開發(ATDD)。

  • 重構:是指軟件的內部結構可以、并且應該做持續的改進。

  • 結隊編程:是說團隊成員如果各自獨立工作就不能稱之為團隊。團隊成員必須有規律的合作——在鍵盤上。這樣,他們能充分分享團隊其他成員應該知道的知識。

  • 集體所有制:是指代碼歸團隊共有,不屬于個人。

  • 每周工作40小時:是說經常加班的團隊是失敗的團隊。

  • 現場客戶:是指來自業務方、負責需求的人,必須有準備的全程和開發團隊保持暢通交流。

  • 編碼標準:是指開發團隊要采用一種固定的代碼風格,用來提高代碼整潔和方便交流。

引起爭議?

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

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

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

風云變幻

這 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寫出了一本曠世之作。一本改變一切的著作。請記住:極限編程,并且要知道,它正是我們如今的人平常認為的“優秀軟件開發實踐方法”的核心。

[英文原文: Extreme Programming, a Reflection ]
來自: 外刊IT評論 http://www.vaikan.com/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!