關注程式設計師自己的文化——專訪Tom DeMarco (轉)
【編者按】
在設計的幾十年歷史中,Tom DeMarco是一個應該被銘記的名字。在年第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:文化。只有擁有了共同的文化,同樣職業的一群人才能成為一個社會群體,才能得到整個社會的重視,否則他們就只是恰好有些共同之處的烏合之眾。工人、農民、商人……甚至連流浪漢都有自己的文化。軟體開發者也應該努力營造並維護自己的文化,而我寫的一些書也是在為這種程式設計師文化盡綿薄之力。
這就是我想說的:在技術之外,請關注程式設計師自己的文化。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-956349/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我關注的那些程式設計師大佬程式設計師
- 程式設計師可以關注和收藏的幾本好書程式設計師
- 2018年最值得關注的設計師工具
- 程式設計師如何預估自己的專案開發時間?程式設計師
- 程式設計師如何保護自己的眼睛程式設計師
- 程式設計師寫的跳轉程式設計師
- 為什麼前端工程師需要關注設計前端工程師
- 最值得當下游戲設計師關注的12個設計詞條
- 程式設計師-你得把自己賣出去程式設計師
- 程式設計師不能說自己不行啊程式設計師
- 做SaaS的程式設計師們,是時候關注企業架構了程式設計師架構
- 如何提升自己的薪水?程式設計師跳槽時關於薪水的那點事!程式設計師
- 如何確定自己是否適合做程式設計師?程式設計師的成長需要什麼?程式設計師
- 程式設計師只能吃青春飯?程式設計師該怎麼規劃自己的未來程式設計師
- 跨專業轉行的程式設計師,怎樣才能拿高薪?程式設計師高薪
- 膨脹、驕傲,程式設計師轉專案經理的原罪程式設計師
- 關於要不要轉行做程式設計師的建議程式設計師
- 從百度的PPT文化看程式設計師晉升程式設計師
- 程式設計師如何搭建自己的個人部落格程式設計師
- 程式設計師如何祝自己生日快樂程式設計師
- 10個最值得當下游戲設計師關注的詞條
- 自學程式設計,如何找到自己的第一份程式設計師工作?程式設計師
- 有經驗的程式設計師應該如何提升自己程式設計師
- 程式設計師的相關笑話(一)程式設計師
- 如何確定自己是否適合做程式設計師?程式設計師
- 10.24程式設計師節專輯——程式設計師最愛的數字,1024的祕密程式設計師
- 程式設計師“公關”日曆程式設計師
- 以前的程式設計師,現在的程式設計師程式設計師
- 《程式碼大全》程式設計師們怎樣花費自己的時間程式設計師
- 初級Java程式設計師提升自己的3條路線Java程式設計師
- 阿里畢玄:程式設計師如何提升自己的硬實力阿里程式設計師
- 程式設計師如何讓自己的工作更上一層樓程式設計師
- 如何成為真正專業的程式設計師程式設計師
- Geek Clues——程式設計師的專屬新聞程式設計師
- 關於 Android 程式設計師最近的狀況Android程式設計師
- programmer-browser:專為程式設計師設計的瀏覽器程式設計師瀏覽器
- NPDP|程式設計師轉產品經理好轉嗎?程式設計師
- 程式設計師轉AI工程師很難嗎?這6個技術是關鍵程式設計師AI工程師
- Casbin——專注、高效的訪問控制框架框架