人物專訪:關注程序員自己的文化

>>>  當代歷史與思想  >>> 簡體     傳統

 【編者按】
 

在程序設計的幾十年歷史中,Tom DeMarco是一個應該被銘記的名字。在2003年第2期《程序員》雜志的“名人堂”,我們已經介紹過DeMarco先生的經歷和成就。最近,《程序員》記者通過電子郵件對這位軟件開發的“泰山北斗”進行了采訪。在采訪中,DeMarco先生透露出他對軟件開發的一些深入認識和想法。

關注程序員自己的文化——專訪Tom DeMarco

記者/熊節

關注軟件中“人”的問題

《程序員》(下文簡稱《程》):DeMarco先生,您好。最近,您的兩本書——《最后期限》和《人件》在中國開發者中間引起了不小的反響。請問您本人如何看待這兩本書?
Tom DeMarco(下文簡稱TDM):噢,你很了解我的書的……這兩本書代表了我最近一段時間的主要思想。我希望所有的讀者——包括程序員、經理、客戶以及所有與軟件開發有關的人——重新關注軟件開發中“人”的問題。我希望看到一種人本主義的回歸,就像文藝復興那樣。
我相信中國讀者很聰明,他們一定注意到了我故意在書中使用的輕松氣氛,還有那種像推銷員一樣的夸張口吻。你知道,對于程序員的工作環境,老板們是有決定權的。可是,老板們只讀這種口吻輕松隨意的書。我也是不得以而為之。

《程》:不管是否喜歡您的書和贊同您的觀點,讀者們的確關心您的思想,并打算向您學習。
TDM:不謙虛地說,我想我是值得他們學習的。你看,一個六十多歲的老頭,他和Dijkstra共過事,他參加了1968年NATO會議,他開發各種程序幾十年,他從結構化走到面向對象……我的經驗應該會對年輕人們有所幫助。這也是我寫書、做培訓的原因。


一點點運氣都是成功的必要因素

《程》:我記得您的樂觀態度。如果沒有天降神兵般的幫助,如果沒有那么好的運氣,《最后期限》中的湯普金斯先生恐怕早就被吊死在摩羅維亞的肉鉤子上了。但是,作為一個普通的軟件開發者,我們怎么可能期望得到那么多的好運氣呢?
TDM:不管怎么說,我們必須承認,在任何有風險的工作中,一點點運氣都是成功的必要因素。軟件開發當然也不例外。

《程》:但是,如果沒有這些好運氣,我們的項目難道不就變成一場死亡之旅嗎?
TDM:優秀的經理能夠讓好運氣降臨到自己身上。比如說,當湯普金斯先生第一次見到貝琳達時,他就敏感地知道:她將成為項目組的一大財富。當時,就連貝琳達自己都還不敢肯定自己的能力呢。還有,你說的“天降神兵”中,很多人都是湯普金斯先生以前就認識的,他只是知道應該在什么時候向什么人求助而已。而且,他有一種獨特的人格魅力,讓那些初次見面的人也樂于和他交心,愿意幫他解決困難。所以,你說湯普金斯先生的成功是因為運氣,我卻說在很大程度上那是因為他的能力——知道應該選擇哪些人,知道如何讓這些人為自己拼命工作,這是一個管理者最重要的能力,對不對?

人與管理的簡議

《程》:您在書中說,管理就是“找到合適的人,并保持這些人斗志高昂”,現在您又說湯普金斯先生的成功是因為那些難以捉摸的能力。您是否認為,只要找到合適的人,一切工作都可以順風順水?或者,我們是否需要再做些其他的工作來保證這一點?如果是,我們應該做什么?
TDM:“選擇什么人”和“如何使用他們”,這就是最重要的事。然后,第二重要就是富有個人魅力的管理。所有其他的東西(過程、工具……)都只能起到一定的邊界效應,但無法起到關鍵性的作用。

《程》:可是,這兩種最重要的能力都顯得很神秘,不是嗎?我們要如何去學習它們呢?
TDM:我就知道你會提這個問題。沒錯,它們就是很神秘的能力,有些人天生就是優秀的管理者,有些人永遠都沒有這方面的能力。我有沒有說過“它們是優秀管理者必須的能力”?啊,這是我的表達不夠準確了。這其實是一個達爾文主義的問題:只有具有這些能力的管理者才可能一次次地帶領項目走向成功,并被人們評價為“優秀的管理者”。
你說對了,很大程度上這些能力是無法學習的。但是,認識到它們的重要性仍然對我們很有幫助。首先,一些管理者可以清楚認識到自己缺乏管理的天賦;然后,他們可以去找一個真正優秀的管理者來幫助自己。知道自己無知,總比無知而不自知要來得好。

《程》:我們一直認為自己是科技工作者,但您卻用這種近乎神秘的方式來解釋我們的工作……
TDM:你說對了,我們是科技工作者,我們相信科學。什么是科學?就是知道某些事情的解決辦法,也知道另一些事情不可能解決,還知道有些事情能夠解決、但無法找出解決的辦法。既然你相信科學,就不應該想著給所有問題找一個“科學的”解釋。
而且,軟件是一門實踐的科學。我們不需要像證明費馬大定理那樣用三百多年的時間來證明某個辦法有效,我們只是讓各種不同的辦法接受殘酷的生存競爭。所以,教條主義是軟件科學中最不可取的。

CMM,一種過時的東西

《程》:我想知道您對CMM的態度。您認為CMM對哪些企業會有幫助?又會有哪些副作用?
TDM:幫助?CMM?對于如今的軟件企業,CMM有百害而無一利。
《程》:我記得您曾經說過,在長期說來,CMM有助于提高生產率,只是在短期內會造成阻礙。
TDM:你記錯了,我說的是“過程改進”,不是CMM。你知道嗎,CMM已經有超過20年的歷史,它的成功經驗都是在1985年前獲得的。CMM試圖將一個固定的模型強加于一個日新月異的行業之上,它鼓勵你效仿IBM在1970年代所采用的軟件開發方式。僵化,不敢面對變化,這是如今的軟件業最忌諱的。所以我要說,對于絕大多數的軟件開發,CMM毫無幫助。
當然,一定的過程是有必要的。但是,在這個變化的時代里,過程也必須擁抱變化,否則就不是好的過程。你一定還記得,CMM2級的特征是“可重復”,我認為這根本就是一個悖論:我們的每個項目都完全不同,我們的開發環境每年都在更新,如何去尋求一個“可重復”的過程呢?你看,所有偉大的軟件企業,有哪一家做的事情是“可重復”的呢?

《程》:可是有那么多人、那么多企業熱衷于CMM呢。
TDM:他們根本就是無可適從——他們無法適應變化,他們無法在這種全新的環境中找到自己的位置,所以他們總得給自己找點什么東西來信仰。William Clifford曾經說過,人們常常會根據自己的愿望而虔誠地相信一些東西,但愿望的強烈并不能使信仰變得可靠。
不過,對于只做外包項目的企業(例如很多印度軟件公司)來說,CMM倒是一個不錯的能力衡量標準。只有對于這種不需要動腦筋、不需要創新的企業,CMM才有意義。如果讓我來評價,我會認為CMM是軟件企業的恥辱符:等級越高,說明企業越缺乏創造力。

讓員工偷一點懶吧

《程》:我注意到您最近出了一本新書Slack,這個書名很是有趣,能不能請您簡單介紹一下這本書?
TDM:其實這本書原來的名字叫《敏捷企業的秘密》(Secrets of the Agile Organization)。在我看來,要讓企業具有適應新世紀、新經濟所必須的敏捷性,需要做四件事:1)給員工一點點偷懶的時間;2)幫助員工減輕壓力;3)注重對員工培養的投資;4)評估風險、控制風險。

《程》:難道偷懶也能幫助提高生產率嗎?這不是違反直覺的嗎?
TDM:對呀,你應該讓員工每周七天、每天十二小時地拼命工作,這樣效率最高了——如果他們的工作是搬磚頭的話。
你必須首先搞清楚,要讓你的員工為你貢獻什么,然后再決定如何安排他們的工作。對于軟件開發者,我們需要他們貢獻的是創造力,是他們的點子,是他們的聰明才智,所以,我們必須讓他們常常放松,有自由思考的時間,這樣他們才能把自己的才華發揮出來。

軟件本質

《程》:Fred Brooks說過,軟件中的關鍵問題導致“沒有銀彈”。但是,難道每種軟件的關鍵問題都是一樣的嗎?比如說操作系統和ERP系統。
TDM:Brooks說,軟件的關鍵問題就是“找出需要做什么”,而“怎么做”則是次要問題——所有的技術、工具和過程解決的都是這個次要問題。我完全同意他的觀點。在“怎么做”的問題上,我們取得了極大的進展;但是,在“做什么”的問題上,幾十年來情況似乎并沒有太大的改善。我想,這是由于軟件的本質造成的。

《程》:那么,什么是軟件的本質呢?
TDM:我們的世界是模糊的、連續的、不精確的,但軟件是精確的、離散的、形式化的,這就注定了軟件不能完全描述現實世界。因此,我們需要知道描述哪些部分、忽略哪些部分,這就是軟件的本質問題。顯然,這是一件機器無法完成的工作,軟件的本質意味著開發人員的存在意義。

《程》:您認為對軟件業最好的比喻是什么?是工程學?是藝術?還是工藝學?
TDM:都是,但又都不準確。軟件中有工程學的成分,有工藝學的成分,也有藝術的成分,所以它才如此復雜。
在過去的幾十年中,我們在“軟件工程”這條路上做了大量探索,并且取得了極其可觀的成果(很榮幸我在其中也做了一些貢獻)。但是,現在看來,邊際效用遞減律正在起作用,對軟件工程進行更多的探索所能收到的效果正在變得越來越少。所以,我認為應該去考慮另一些以前很少考慮的問題。比如如何營造良好的工作環境,如何將新手培養成熟練的開發者……以前很少有人系統地考慮這些問題,所以如果在這上面投入努力也許能獲得更大的效果。

眼中有英雄

《程》:最近Bill Gates來了中國,引起了整個中國IT業界的轟動。您如何看待Gates先生和他的微軟帝國?
TDM:噢,我可是Gates和微軟的崇拜者。現在,全世界的人都在使用計算機,微軟在其中起到的作用勝過其他任何一家公司。而且,Gates本人很有意思:他有一個天才的頭腦,總有精彩的點子;同時他又是一個優秀的商人,知道如何用自己的點子去掙錢。你也看到了,在《最后期限》中,我用Gates的形象刻畫了摩羅維亞的國家元首。我想,這是我能對Gates表示的最大尊敬吧——不過,像Gates那樣揮霍建豪宅,我也是反對的。這大概是老頭的毛病吧。
說實話,如果說有一家公司是我心目中的理想企業,那就是微軟。有很多人試圖找出微軟成功的秘密,可是他們常常去關注微軟的開發過程。其實,微軟的開發過程有什么可研究的呢?他們有全世界最優秀的員工,這些人享受著全世界最舒服的工作環境,不管用什么過程,我相信他們都能取得這些成就。其實,微軟最值得研究的也是這兩個問題:如何得到優秀的員工;如何讓員工盡量發揮自己的能力。

《程》:您大概也知道,很多人抨擊Gates和微軟,說他們貪得無厭,說他們壟斷……
TDM:貪得無厭?哈哈,這大概是對一個商人最好的稱贊吧?至于壟斷嘛……你還記得IBM壟斷案嗎?1969年,美國司法部控訴IBM壟斷了個人計算機市場,而且用各種手段阻止其他公司的競爭——他們的手段可比微軟厲害得多呢。IBM是怎么說的?他們說自己預見到計算機革命的巨大潛力,并通過自己“高超的技術、遠見和產業”來統治該行業。政府最終在1982年撤消了對IBM的控訴,理由就是“計算機產業的本質決定了它是充滿風險和競爭的”。像這樣一個充滿風險和變化的產業,如果微軟真的像他們說的那樣壟斷長達十多年之久,那我就更要崇拜Gates和他的微軟了。

《程》:除了Gates先生,您認為哪些人稱得上是程序員中的英雄?
TDM:我尊敬的英雄有Barry Boehm、Victor Basili、Bob Glass、Ed Yourdon、Ken Orr、Fred Brooks、Capers Jones、Tim Lister,還有蘋果公司的Sheila Brady。你看,他們曾經有過輝煌的成就;他們關注程序員群體的利益;他們不斷探索新知,并把自己的知識和經驗傳遞給新一代的程序員;他們不關心那些流言蜚語,也不熱衷于嘩眾取寵,他們只關心如何幫助程序員更好地成長、如何讓程序員能夠不斷進步。只有這樣的人,才配得上“英雄”的稱號。

關注程序員自己的文化

《程》:最后,按照我們的慣例,請您對中國程序員說一句最想說的話吧。
TDM:文化。只有擁有了共同的文化,同樣職業的一群人才能成為一個社會群體,才能得到整個社會的重視,否則他們就只是恰好有些共同之處的烏合之眾。工人、農民、商人……甚至連流浪漢都有自己的文化。軟件開發者也應該努力營造并維護自己的文化,而我寫的一些書也是在為這種程序員文化盡綿薄之力。
這就是我想說的:在技術之外,請關注程序員自己的文化。
 


《程序員》雜志 熊節 2010-07-15 08:32:43

[新一篇] 健康:補精的方法全攻略

[舊一篇] 陳丹青音樂筆記
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表