Martin Fowler:英國口音的軟體工程 (轉)

worldblog發表於2008-01-21
Martin Fowler:英國口音的軟體工程 (轉)[@more@]

劉天北

在一些罕見的情況下,大師會被闡釋者奪走自己的創見。比如在工程界就有這麼句話:“統一建模語言(UML)的發明者Grady Booch本人,都不一定比Martin Fowler更會用UML。”這說的是知名軟體工程專家,《UML Distilled(中譯UML精粹,清華大學出版社2002年出版)》的作者Martin Fowler。對於今天的者來說,UML是他們的麵包和黃油,但在1997年,大多數人面對剛剛推出的UML 1.0規範,卻都因其豐富和複雜而感到無所適從。就在這年,Fowler用那本兩百頁出頭的小書說出了初學者最渴望的內容,恰如其分地撫平了業界焦慮的神經。雖然隨後UML的官方機構也編撰了大量文件、論著,但不少朋友告訴我,他們關於UML的主要知識,都來自捧讀《UML Distilled》的那個週末——Fowler親切、流暢的敘述輕快地把他們引出了那個充滿抽象的標記、圖示的迷宮。
也許這就是官方文獻和經典著作之間的區別。一方面是嚴謹、準確,但又高度抽象化甚至形式化;一方面則是生動、直觀,不求面面俱到,但能讓人很快就對概念大廈的全貌一目瞭然。的確,對於UML中幾種最關鍵的檢視之間的關係,很難有其他作者能給出如此簡潔的解釋。但別誤解我的意思:這決非什麼通俗讀物或是縮寫本,你在每一頁上都能收穫關於軟體開發的真知灼見。而且Fowler的野心並不限於介紹作為一種工具的UML。比如對於被RUP長篇累牘、一口官腔的文件嚇退的朋友們,該書的第二章就是介紹統一軟體開發過程的最佳導引。
 
也許本文開頭的說法還不確切。Martin Fowler遠不止是一個簡單的“掠奪者”,事實上他本人就是一位大師。當然,與創立UML的“三位老友(the three amigos)”或是合寫《設計》的“四人幫(GoF)”相比,Fowler肯定是個晚輩。但是從1986年在故鄉英國拿到電子工程學位,到參與開發建模軟體Ptech,再到成為獨立開發顧問,參與國家保健服務的開發,再到移居美國,加入著名的克萊斯勒C3專案,到成為軟體顧問公司ThoughtWorks的首席科學家,Fowler以驚人的加速度獲得了業界的認同和仰視。如今,雖說還是比那些業界元勳年輕得多,但他的言論已經是開發領域最重要的之一,他在各地的演講、他對大量專案的實際諮詢,都直接引領著軟體開發科學的發展,指導著各國開發者的工作實踐。
當然,對大多數讀者而言,Fowler更多地還是意味著一部部經典著作。雖然《UML Distilled》是很多普通開發者的恩物,但是在Fowler本人那裡,它卻不是個寵兒——畢竟這只是關於特定工具、特定開發過程的導論。他似乎更看重自己的第一部著作《分析模式》,最近還在張羅該書的修訂。對於最近流行的極限思想,Fowler的兩部著作《重構(中國電力出版社即出中譯)》、《規劃極限程式設計(人民郵電出版社2002年出版中譯)》處於理論的核心,前一部更被權威網站World視作Java開發人員的聖經之一。而在日前評出的2002年度軟體開發“震撼(Jolts)”大獎中,他的新作《企業應用構架模式》獲得了大獎。
 
“編輯大人殘酷地扼殺了我的英國口音”,Fowler在《分析模式》的前言裡這麼抱怨。他是說美國編輯們改掉了所有的英國單詞拼法。我卻總覺得自己能從他每一部著作的行文、理念中聽出獨有的英國口音。這裡,英美文化差異扮演了微妙的角色:兩相比較,美國人天真、率直,而英國人則更加矜持、老練,注重距離和分寸;我個人體會,這也是Fowler與其他美國專家之間最大的差別:那些專家對自己要介紹的內容總有一種天真的狂熱,好像是在揭示什麼世界終極奧秘,而Fowler則更謙卑、隨和,樂意與所談的內容保持某種譏諷的親和性。文如其人,另一位大師Kent Beck曾經描述兩人初遇的情景。那是一次學術會議, Fowler對Beck這麼做的自我介紹:“I'm the only person here I've never heard of.——這麼多人裡我就沒聽過自己的名字。”這種親切,這種包含自省的醇厚,一經與過人的洞察力遇合,就形成了作品中難以錯認的優美和可讀性。
也不僅是可讀性的問題。我認為這更牽涉到關於軟體工程、關於“方法論”的理念。軟體工程界盛行各種大寫的方法論。作者們急於用刻板的語言推銷自己心目中的“最佳實踐”。在他們眼裡,方法論是數學意義上的嚴格科學,軟體開發中的操作非對即錯、涇渭分明。雖然Fowler的著作覆蓋了軟體專案的生命週期的大多數方面,並幾乎為開發實踐的每一個環節都畫出了嶄新的地圖,但他的工作還屬於一般認為的“方法論領域”。Fowler本人卻不會太樂意接受“方法論學家”這個稱號。畢竟,英國口音包含的距離感,與一般方法論者的一廂情願很難相容。在這個意義上,Fowler和他研究開發的朋友們算得上是軟體工程界的異數,他們似乎站在方法論的陣營中,卻又不時地質疑所有被奉為萬應良藥的方法論的意義。方法論的效用是不容忽視、但卻有限的。實際的軟體開發是一系列權衡、妥協的結果,其中抽象的方法論思考可能幫助、但無法取代這個困難的過程。
也許英國盛產的論是Fowler的另一個秘訣。作為一位獨立顧問,他曾審視過成百上千個案例。對這些專案的成敗、構架設計的優劣的反思,有效地構成了洞察力的核心來源。閱讀Fowler著作,我總能體會到一種來自實際問題的切實感。與此相比,方法論學家們鍾愛的“形式化”變成了名副其實的paperwork(紙上談兵)。
由此我想到,大師的產生需要特定的生態環境。軟體業是該看重經驗還是打字速度,什麼才是合理的開發者的年齡結構,軟體諮詢、培訓公司應該扮演何種角色...對這些問題的回答是這個環境的一部分。我還想到,之所以介紹Martin Fowler這位大師(這是我個人的榮幸),也許不僅是為了推動對經典的閱讀,更包含了我對產生大師的環境的期待,和對中國自己的大師的期待。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-997911/,如需轉載,請註明出處,否則將追究法律責任。

相關文章