[視訊]Martin Fowler:我希望可以創造永恆的價值(圖靈訪談)

盼盼姐發表於2012-06-11

圖靈訪談之二十六:專訪敏捷之父Martin Fowler

Martin是一個看起來有些嚴厲的人,他會在他演講時和竊竊私語的人說:“Very distracting.”也會用“I have no idea”回答很多問題。但是我在他身上看到的是作為一個科學家的專注和嚴謹,在激情澎湃的演講中他不喜歡被打擾,在回答不瞭解的問題時他也不想妄作解答。

圖靈社群:Martin Fowler先生,很高興有機會代表圖靈公司的幾百萬讀者跟您交流。因為圖靈公司是您的代表作《重構》在中國的出版商,所以我們的話題就從圖書開始吧。圖靈公司一直在引進全球在軟體開發,特別是敏捷開發領域的最佳圖書,並欣喜地看著這個市場不斷成長,相關圖書銷量穩步上漲。去年,《重構》創造了1萬多冊歷史最佳年銷量。請問,這是全球性的現象嗎?這是否暗示著敏捷已經成為主流?

M:我也不是很清楚,因為我從來都不知道書的銷量方面的資訊。這對我來說也是一個新聞,我從來都不知道在中國,這本書銷量達到了歷史新高。但是由於沒有什麼可比較的資訊,所以也不好作出什麼結論。但是這麼老的書還能創下銷售記錄還是很振奮人心的。我一直以來都想寫這樣的書,縱使已經出版了很多年,其中的很多理念仍然是很受用的。能做到這點其實很困難,因為技術領域的更新總是很快。所以我儘量聚焦在更加根基性的東西上,即使很多其他事情已經改變了。這個做法我也用在了《重構》這本書上,在過去十年間,有很多東西有了很大的變化,但是書中的建議仍然和十年前一樣行之有效。

圖靈社群:所謂永恆的價值也正是如此吧。

M:沒錯,能發現事物有這樣的特質是很好的。如果你想在軟體領域裡學些東西的話,你會發現需要學習的東西是數不勝數的,能學習到在很長時間內都有效的知識很讓人欣慰。很多語言的細節和框架都不停地改變。十年前,你可能是Rails方面的專家,但是由於框架的改變,你的知識可能現在一點用都沒有了。但是如果你有重構方面的技術和設計模式方面的知識的話,這些東西會在很長時間內都有價值,而這些知識和技術也是我的興趣所在,是我一直以來都希望能夠捕捉到的。

圖靈社群:您一直積極推廣敏捷運動,這項注重軟體開發過程的全流程革新運動受到了中國很多重視質量的程式設計師的熱捧。但是也有很多人認為敏捷已經變得有些誇大其詞。關於它的推廣和衍生概念都有些過熱或者說華而不實。您對此有什麼看法?您認為敏捷的缺陷在哪裡?

M:確實是這樣,敏捷處在這樣一個階段,很多關於它的東西有些過熱,會讓人覺得很多東西都屬於“偽敏捷”。但是這也是技術發展過程中無法避免的一個階段,技術發展的早期會引起很多人的注意並出現一些成功的例子,很多人就跟著進入了這個領域,然後就會產生泡沫,但是泡沫遲早會破滅的。很多人可能會因此有些失望,但是我並沒有“那麼”失望。有一部分的原因是因為只有這樣,這個技術才會吸引很多注意力,這樣總比默默無聞要好得多。所以,這只是一個無法避免的階段,所以我會欣然接受,承認事物發展的正常規律。

圖靈社群:我也曾經聽到過一些關於Unix發展軌跡的說法。比如它從一開始的默默無聞到很多人都想插一腳,直到最後進入一個相對成熟穩定的時期,Linux也在這期間問世。

M:也並不只是Linux,蘋果也是建立在Unix的基礎上的,Unix現在已經是很標準化的東西,如果現在看主流作業系統的話,只有Unix和Windows而已。這些都是事物發展成熟的表現,敏捷也會有這樣一天,我很期待有這樣一天,人們不再談論敏捷,因為大家都是這麼做的。我相信這天遲早會來到。

圖靈社群:您在十來年的時間裡完成了多本影響深遠的著作,成為軟體開發行業的里程碑。請問,您在寫作方面有哪些方法和祕訣?寫作跟工作是如何協調的?

M:就目前來說,我的生活主要都是寫作,所以也不用怎麼協調寫作和工作的關係。在年輕的時候,那時我還是一位全職獨立諮詢師,在不工作的時候我就會寫作。我很享受寫作的過程,這是我最喜歡做的事情,這樣的效果總是很好的,因為我總是對寫作充滿熱情。對於其他也想寫作的人來說,首先是要找到能夠吸引你的問題,最好是別人還沒有寫過的東西。我總是從受歡迎的事情出發,然後找到其中不是很能引起大家注意的部分,深入地研究下去。然後你要意識到寫作是一場馬拉松,它要比你想象中的漫長,然後還要一次又一次地返工⋯⋯這就是漫長的寫作過程,我本人很享受這個過程。

圖靈社群:我想這也正是你能寫出如此通俗易懂的書的原因,讓人可以從頭讀到尾。

M:很高興你能這麼說,這也是我的目標之一。我一直都儘量寫出通俗易懂、對話式的東西。我不知道中國是不是這樣,但是在西方有這樣一種說法,大意是說話和寫作是兩件事,寫作可不能和說話一樣。我總是對此不屑一顧,我寫的東西就和我說的話差不多,我覺得這可能是我的書比較易讀的重要原因。

圖靈社群:中國很多職業程式設計師都對於緊跟技術發展的方向感到精疲力竭,您是如何在軟體開發領域的前沿不斷創新的呢?

M:這在很大程度上歸功於ThoughtWorks, 很多人都在做很多不同且有趣的事情,我總是傾聽大家最近都在忙碌些什麼,我猜這就是我的探測機制。我總是從ThoughtWorks的不同部分得到很多有用的資訊,知道什麼是重要又有趣的技術,我會想:也許我該在這個方面多學習一下了,特別是這些東西在很多其他地方還沒有引起重視的時候。所以說這些訊號都是從ThoughtWorks中來的,他們是我資訊的主要來源。

圖靈社群:中國的很多讀者都是從《重構》、《UML精粹》這些書中學習到物件導向的精髓,進而從《分析模式》、《企業應用架構模式》等圖書對這些模式應用有了一定的瞭解。請談談您自身學習理解物件導向的過程,其中又有哪些或有趣,或枯燥的經歷?

M:說到物件導向,在我學習的時候,Smalltalk還是一門很火的語言,我對其中建模相關的方面很感興趣,這是很多好模型的基礎,我對很多形式各異的方法很感興趣,有很多風格迥異的建模風格。最吸引我的恰是這些不同之中的相同之處,我試圖找出這些相同點,然後在UML出現的時候這些就變得很重要,這也是自然而然的事情。但我同時也對程式設計這方面很感興趣。所以問題就變成:我既然有了這些建模方面的理念,那麼這些對於程式語言來說又意味著什麼呢?所以我在Smalltalk上做了很好的改進。我的諮詢工作也是如此,我既在建模方面幫助別人,也在程式設計方面指導別人,所以我把這些都看成一件完整的事情,而非毫無關聯的事。我是通過Smalltalk來了解物件的,但是很遺憾作為一種語言它已經變得很冷門,這是一種在很多方面都比其後來者要優秀很多的語言。

圖靈社群:您曾經建議過程式設計師應該每年學習一門程式語言。

M:這實際上是Pragmatic Programmers提出的建議,是他們出版的書中的一條建議,我本人很贊同。我認為應該有意地學習一些新的語言,特別是那些和你所熟知的語言的運作方式相差甚遠的語言,所以不要在相似的語言上浪費時間。如果你是一位Java程式設計師,那麼C#對於你來說就太過熟悉了,你需要學習一些很不同的語言,比如說Lisp,或者Clojure;如果你是一位Lisp程式設計師,你也不需要學Clojure,因為那就是另一種Lisp而已。總之你應該嘗試一些很不同的語言。

圖靈社群:對新入行的程式設計師,您有什麼建議呢?

M:對於新人來說,這和你想幹什麼有直接關係,不同的專案適合用不同的語言,這取決於你所處的環境。你需要挑選一種適合的語言,很難說有某種語言是新人的必學語言。但是我認為指令碼語言,如Ruby和Python對於剛開始學習程式設計的人來說是很不錯的選擇,因為它們都很易於操作,而且你可以用它們做很多事。

圖靈社群:您是ThoughtWorks的首席科學家,我們希望能瞭解ThoughtWorks在工具(比如程式語言,持續整合工具等)的選用上的看法。ThoughtWorks使用的程式語言比較多,C#、Java、Ruby,也有自己開發的持續整合和專案管理工具等等。對於個人測試這是沒有問題的,但對於一個企業來說,使用眾多工具是否過於混亂?對於企業開發這種以複雜度為重的行業,應該如何選取開發工具呢?

M:在ThoughtWorks我們是通過自底向上的方法來挑選工具的,我們不會說我們一定要使用哪種工具,我肯定不會這麼做,完全相反,我會傾聽專案組成員的意見。這件事很大程度上取決於不同的專案,專案負責人會根據不同的情況來作出決定性的意見。我們在某些語言方面的經驗可能會多一些,比如說C#、Java、Ruby,但是你也應該知道,SQL、JavaScript這些在很多專案裡也是涉及很多的,我們的語言選擇一直是自底向上的。對於一個企業來說,很難說具體應該如何做,如果聲稱有一種語言是標準語言是很糟糕的。我覺得應該基於環境選擇語言,所以在ThoughtWorks我們也會僱用高水準的各種開發者來幫助我們完成各種不同的專案。

圖靈社群:您這次來參加貴公司成都分公司的成立儀式,對公司在中國的發展有什麼期盼,在中國你們將如何保證自己的核心競爭力?

M:我對中國的業務不是很瞭解,所以也不能說什麼,但是我們的核心競爭力始終是僱用最好的人才,他們在一起可以很高效地工作,而且我們對人品也有很高的要求。只有這樣才能在企業中形成很強的信任度,這些東西一直以來,以後也將會是我們的核心競爭力。我們用“態度、天資、人品”來衡量一個人,一直都是如此,我認為這是我們的核心競爭力。

圖靈社群:這些無疑構成了你們的核心競爭力,但是我也聽到了一些反面的聲音。比如說,以ThoughtWorks為代表的很多真正完整地使用敏捷式開發的公司給人感覺“宗教感比較重”。

M:我認為這是眼下的一些輿論造成的,人們就是喜歡這麼說。我在這裡並沒有感受到那些,我們並沒有大肆吹捧敏捷之類的說法,這只是我們工作的方式而已。我認為這是一種很健康的態度。

圖靈社群:但是仍然有前員工會抱怨:“生活和工作被揉在了一起。”這是刻意為之,還是說你們希望以身作則?

M:這在ThoughtWorks來說確實是一個問題,我們在生活與工作的平衡上做得不是很好。我覺得這不是應該鼓勵的準則,但是我也意識到這是我們工作的一部分。我本人並不是一個很好的例子,因為我很享受工作的過程,所以我也分不清工作和生活間的明確分界線。但是我也知道並不是每個人都這樣想。

圖靈社群:在美國40-45歲的程式設計師應該算作老程式設計師,但是在中國35歲應該就被看作老程式設計師了,他們面臨種種的困境(比如說來自家庭的壓力),並自嘲為“碼農”。圖靈公司為此還辦了一份《碼農》電子雜誌來給大家提供交流平臺。可以說,這是大家普遍困惑的問題,您是否能對老程式設計師的發展提供一些建議呢?

M:程式設計師是一種專業,就像是醫生一樣。如果你是一位醫生,你會想成為一位“醫生經理”嗎?正常的思路是你會想變成一個更好的醫生,這在其他任何專業領域都是這樣。你想在專業的領域有所建樹,這應該是一件好事。但是有很多企業並沒有意識到這點,它們不知道這些有經驗的程式設計師會給他們帶來多少好處,團隊中有經驗的程式設計師的效率要遠遠高於其他人,但是他們總是在引入新人,當然新人的加入是件好事,但是需要一個平衡。軟體業在這方面已經意識到了,在很多地區人們對於這點的理解更加深刻,至少在美國的大部分地區是這樣的,我希望中國也能在這方面吸取教訓。因為如果意識不到這點,真正優秀的程式設計師是不會出現的,有效的軟體開發也很難出現,因為最有經驗的人才都流失掉了。他們的價值不僅會直接體現在他們所工作的專案上,也會體現在經驗的傳遞上,他們會把最寶貴的經驗傳授給周圍的人。

圖靈社群:那您對這些老程式設計師有什麼建議嗎?

M:他們應該找到重視他們價值的企業,這也是我們一直努力在做的事情,你可以一直作為技術人員在企業中保持一個很高的地位,這件事本就該如此。

圖靈社群:在中國的出版商中,圖靈公司是勇於嘗試“敏捷開發”和“持續交付”的。我們計劃在今年引進的新書中,採用每翻譯完一章就釋出一章的出版方式。您對出版業如何應用敏捷,有什麼建議嗎?

M:太棒了!就應該這樣。我正準備出版的書在這方面不是很前沿。但是至少有Safari線上這條渠道,書一生成就可以馬上在Safari買到了,我想這和你們按章翻譯很相像,可以按章釋出。我有一個自動化的系統可以以最快的速度把我寫完的部分傳送給出版社,雖然在出版之前還要經歷一些步驟,但是用我的這種方法還是加速了整個過程的。

圖靈社群:這也是我們一直以來努力的方向。謝謝您抽空接受我們的訪談,預祝ThoughtWorks的分公司和您的新書都能在中國取得成功。

M:非常感謝!


更多精彩,加入圖靈訪談微信!

相關文章