12歲寫代碼,為數(shù)百萬程序員引路,這位世界級編程大師不簡單
點擊上方“程序員知識碼頭”,選擇“設為星標”
回復”666“獲取新整理的面試資料
Robert C. Martin,世界級編程大師,設計模式和敏捷開發(fā)先驅,敏捷聯(lián)盟首任主席,C++ Report前主編,被后輩程序員尊稱為“Bob大叔”。20世紀70年代初成為職業(yè)程序員,后創(chuàng)辦Object Mentor公司并任總裁。

Robert C. Martin
Martin還是一名多產(chǎn)的作家,至今已發(fā)表數(shù)百篇文章、論文和博客文章。著有《代碼整潔之道》《代碼整潔之道:程序員的職業(yè)素養(yǎng)》《敏捷軟件開發(fā):原則、模式和實踐》《UML:Java程序員指南》等。?
著名的對象范型和C++專家考帕里安(James O. Coplien)曾這樣評價Bob大叔:
那班求索者多年來并肩奮斗,不但是為求一己之進步,更將他們的知識通過和你手上正在做的事一般的工作奉獻給這個行業(yè),使得編程世界略有改善。
天才少年Bob的成長之路
1964年,12歲的Bob寫下人生第一行代碼。
1965年,Bob開啟了人生中算得上專業(yè)的第一次合作,與小搭檔John Marchese一起造電腦,Bob思考,John動手,兩個人忙活了數(shù)百個小時,搗鼓出了不少看著相當有型的家伙,上面裝著繼電器、按鈕、小燈,甚至還安裝了一個電傳打字機!雖然這些電腦沒法用,但是看起來真的很棒,他們也確實很用心,這對于兩個13歲的小朋友來說,相當了不起了!

電動打字機
1968年,在中學第一年認識了新的小伙伴Tim Conrad,開始了新一輪的造電腦工程,這次由Tim思考,Bob動手,Tim還教給了Bob一些電子學知識,Tim也是第一個給Bob介紹PDP-8的人。他們用了一些很基礎的元器件,真的造出了一臺可以工作的18位二進制計算器,能夠進行加減乘除的運算,他們興奮極了,那年他們把所有的假期都投了進去。
后來,他們還自學了計算機課程,在那個年代,這是一個相當不容易的事情,但他們做到了。他們特別找來了有關PDP-8匯編器、FORTRAN、COBOL、PL/1,他們就像海綿一般在書中汲取知識,并寫了一堆根本根本沒有可能去實際執(zhí)行的程序,因為那時根本沒有計算機可以供實操,但純粹出于愛好,他們?nèi)匀蛔巫尾痪雽懥嗽S多程序。

PDP-8匯編器
1969年,Tim、Bob以及他們的伙伴Richard Lloyd成為了ACS公司的程序員,為芝加哥卡車司機工會開發(fā)實時會計系統(tǒng)。17歲的他們覺得上大學是浪費時間,決定馬上進入職場,在那里他們遇到了Bill Hohri、Frank Ryder、Big Carlin和John Miller,他們?yōu)檫@些年輕人提供了學習專業(yè)編程的實戰(zhàn)機會,Bob在其中頗受教益。
這份工作經(jīng)歷也讓Bob意識到,作為一個程序員還應該具備某些素養(yǎng),例如對著你的上司,說“YES”和“NO”。

Bob在ASC工作時,他的上司 Frank 是一位退役的空軍上校,這位領導的處事風格雷厲風行:我發(fā)出指令、你們按時上線。初入職場的一眾小年輕,包括Bob,根本不敢看他的眼睛,更不敢抗議時間不夠,最終的結果是系統(tǒng)按時上線,故障頻發(fā),無限次數(shù)的系統(tǒng)崩潰、系統(tǒng)重啟。
Bob認為,程序員往往太容易說“YES”,總是在沒有明確目標和期限的情況下,就第一時間草率地給出了確認的答復,任務交付時卻無法實現(xiàn)自己的承諾。
有時候,獲取正確決策的唯一途徑,便是勇敢無畏地說出“不”字……我們要明白,委屈專業(yè)原則以求全, 并不是問題的解決之道。舍棄這些原則,只會制造出更多的麻煩。
只要你愿意嘗試,在工作中對著那些不合理的工作任務,主動說幾次“NO”,之后你會逐漸發(fā)現(xiàn):你只需要花三分的力氣去拒絕那些無法完成的工作任務,就可以節(jié)省十分甚至二十分開發(fā)的時間;相反,如果在沒有明確目標和期限的情況下,就草率給出了確認的答復,往往會非常被動,到最后,項目就落得著名的 IBM OS/360 操作系統(tǒng)的失敗下場。
在Bob的經(jīng)典書籍《代碼整潔之道》中也提到,作為一個程序員不僅是懂得“NO”背后所蘊含的意義和責任,“YES”背后的意義和責任同樣重要。
(說“YES”時)你對自己將會做某件事做了清晰的事實陳述,而且還明確說明了完成期限。那不是指別人, 而是指你自己。你陳述的是自己會去執(zhí)行的一項行動,而且,你不是“可能”去做,或是“可能做到”,而是 “會”做到。
但“YES”背后常常跟著的是屢見不鮮的項目延期,絕大部分原因就是在這種不負責任的情況下說 “YES”導致的。
在Bob的學生時代、職業(yè)生涯中,直接導師并不多,因為他的成長的年代中并沒有很多有經(jīng)驗的老師、程序員。Bob在工作項目的摸索及讀一些杰出人物的著作來汲取知識、積累經(jīng)驗,這些人包括Grady Booch(《UML用戶指南》作者), Tom DeMarco(《項目百態(tài)》作者), Meilir Page-Jones(《UML 面向對象設計基礎》作者), Erich Gamma(《設計模式》作者), Martin Fowler(《重構》作者), Bertrand Meyer(《面向對象軟件構造》作者), Kent Beck(《測試驅動開發(fā)》作者),等等。Bob感覺這些教導都是充滿價值的。
隨后Bob在Teradyne工作,他從老板、工作伙伴們的身上學到了許多他認為有價值的東西,特別是Mike Carew,他們成為了黃金搭檔,“如果你想活兒干得又快又好,就把他交給Bob和Mike!“他們共事的時光充滿歡樂。
糟糕的代碼能讓一個公司關門大吉!
在一個項目中,某位同事花三個星期寫完一串代碼后離職了,在沒有批注、沒有規(guī)律的情況下,果然沒有人能夠理解這串代碼,最終只能由新的同事重新撰寫。這段經(jīng)歷讓他從此對代碼的整潔深感重視。
1987年,Bob開始和Jim Newkirk搭檔,隨后他們相繼離開Teradyne,加入了Clear Communication。
于此同時,有家公司寫了一個很流行的殺手應用,許多專業(yè)人士都買來用,包括Bob。然后,發(fā)布周期開始拉長,缺陷總是不能修復,裝載時間越來越久,崩潰的概率也越來越大,至今Bob還記得自己在某天沮喪地關掉那個程序,從此再不用它時的絕望心情。果不其然,在那之后不久,該公司就關門大吉了。
后來,Bob見到那家公司的一位早期雇員,問他發(fā)生了什么事,而他的回答令Bob愈發(fā)恐懼起來。原來,當時他們趕著推出產(chǎn)品,代碼寫得亂七八糟,特性越加越多,代碼也越來越爛,最后再也沒法管理這些代碼了,只好放著不管,最終,糟糕的代碼毀了這家公司。這個事情更是讓Bob確定了代碼的整潔是需要引起重視的,軟件質量,不但依賴架構及項目管理,而且與代碼質量緊密相關,但當時的他并沒有能力來改變這一切。

Robert C. Martin
99%的程序員都在為糟糕代碼頭痛!
Bob和Jim一起在Clear Communication拼搏了好幾年后,共同創(chuàng)辦了Object Mentor公司,Bob認為,在他有幸共事過的人中,Jim是最率直、最嚴謹和最專注的人,從Jim身上獲益良多。
直到現(xiàn)在,Bob仍堅持閱讀這一習慣,每天花費大量的時間閱讀,甚至包括博客和文章,從中緊跟科技發(fā)展。他曾坦言自己一直都在尋找值得一讀的好書。
想到那個困擾了他許久的難題,也是大部分程序員都遭遇過的難題——糟糕的代碼,他本能的就想迎頭而上,像他的導師們一樣,像Jim一樣,給別人帶來幫助。于是,他開始寫作,在《代碼整潔之道》一書中分享了自己多年編程生涯所累積的項目實踐經(jīng)驗,將代碼整潔的多種解決辦法傾囊相授,受到了廣大程序員的喜愛及追捧。
Bob曾在為 ASD 所寫的序中寫道:
最好的軟件開發(fā)人員都知道一個秘密:美的東西比丑的東西創(chuàng)建起來更廉價,也更快捷。
而構建、維護一個美的軟件系統(tǒng)所花費的時間、金錢都要少于丑的系統(tǒng)。
美的系統(tǒng)是靈活、易于理解的,構建、維護它們就是一種快樂。”
如果說 ASD 中更多的是設計思想和模式精髓的闡述,那么在《代碼整潔之道》中,Bob 為程序員們提供了更為詳盡的微距視角,涉及“命名”、“函數(shù)”、“代碼格式”、 “異常處理”、“單元測試”等編碼主題,巨細靡遺地向軟件工匠們極力傳授整潔編碼的藝術,進一步向軟件開發(fā)社區(qū)慷慨分享了他在探索“軟件之美”旅途中的參證心得。
Bob還在書中提出一種觀點:代碼質量與其整潔度成正比。干凈的代碼,既在質量上較為可靠,也為后期維護、 升級奠定了良好基礎。
他認為,無論是敏捷開發(fā)流派還是傳統(tǒng)開發(fā)流派,想要保證軟件質量,不僅僅依賴架構及項目管理,更與代碼質量緊密相關。
《代碼整潔之道》中提到 Bob大叔認為把代碼變得整潔的,就首先要了解三個注釋,即:
不恰當?shù)男畔?
讓注釋傳達本該更好地在源代碼控制系統(tǒng)、問題追蹤系統(tǒng)或任何其他記錄系統(tǒng)中保存的信息,是不恰當?shù)摹?/p>
例如,修改歷史記錄只會用大量過時而無趣的文本搞亂源代碼文件。通常,作者、最后修改時間、 SPR 數(shù)等元數(shù)據(jù)不該在注釋中出現(xiàn)。
注釋只應該描述有關代碼和設計的技術性信息。
廢棄的注釋?
過時、無關或不正確的注釋就是廢棄的注釋。注釋會很快過時。最好別編寫將被廢棄的注釋。
如果發(fā)現(xiàn)廢棄的注釋,最好盡快更新或刪除。
廢棄的注釋會遠離它們曾經(jīng)描述的代碼,變成代碼中無關和誤導閱 讀者的浮島。?
糟糕的注釋?
值得編寫的注釋,也值得好好寫。
如果要編寫一條注釋,就花時間保證寫出最好的注釋,字斟句酌,使用正確的語法和拼寫,別閑扯,別畫蛇添足,要保持簡潔。
糟糕的代碼最終會成為吞噬人的黑洞

上面的圖片是《代碼整潔之道》的封面,是用來自于哈勃望遠鏡那副著名的可見光相片和Spitzer(斯比澤)軌道探測器最新紅外影像組合而成的M104:草帽星系,它坐落于處女座,離地球僅3000萬光年,其核心是一個質量超大的黑洞,有100萬個太陽那么重,仿佛經(jīng)歷了大爆炸之后碎片四濺的產(chǎn)物。
讓人不禁聯(lián)想到那些代碼不整潔、風格各異且不可維護的項目,就像一個個的黑洞,存在著某天會定時爆發(fā)的風險,而當它真正爆發(fā)時,這個項目的所有人都會因此遭殃。
當你負責一個小型項目時,如果追求速度,力求快速出成果,這時可以率性而為。當項目逐漸擴大,規(guī)范就會逐步顯出它的重要性。在軟件開發(fā)中也是一樣,歸置到位的工具能提升生產(chǎn)力。軟件質量,不但依賴于架構及項目管理,而且跟代碼質量息息相關。代碼質量與其整潔度成正比。干凈的代碼,既在質量上較為可靠,也為后期維護、升級奠定了良好的基礎。
世界級軟件開發(fā)大師的多重身份
如今,Bob除了寫作,還會為 cleancoders.com制作視頻,也會技術會議上講話,從世界級軟件開發(fā)大師到暢銷專業(yè)書籍作家再到臺前傳達專業(yè)領域知識的權威人物,Bob給我們帶來一次次驚喜。
在這個過程中,他發(fā)現(xiàn)自己不止在編程方面頗有心得,對于站在人前傳達信息這件事也頗有天賦。

Robert C. Martin
我們覺得他“變身”了,想知道他是如何從一位職業(yè)的程序員變身成為這個領域的導師,但對他來說,這是一個緩慢的成長過程:“我花了整整20年來積累工作經(jīng)驗,又花了20年才做到今天的成就。‘變身’從來都不是我意料之中的事,也不是我的目的;但這個過程對我來說是一種享受”。
-END-

《代碼整潔之道》
作者:Robert C. Martin(羅伯特 C. 馬丁)
譯者:?韓磊
作為編程領域的佼佼者,本書作者給出了一系列行之有效的整潔代碼操作實踐。
這些實踐在本書中體現(xiàn)為一條條規(guī)則(或稱“啟示”),并輔以來自現(xiàn)實項目的正、反兩面的范例。只要遵循這些規(guī)則,就能編寫出干凈的代碼,從而有效提升代碼質量。

《代碼整潔之道:程序員的職業(yè)素養(yǎng)》
作者:?【美】Robert C. Martin(羅伯特 C. 馬丁)
譯者:?余晟 ,章顯洲
本書是編程大師“Bob 大叔”40 余年編程生涯的心得體會的總結,講解要成為真正專業(yè)的程序員需要具備什么樣的態(tài)度,需要遵循什么樣的原則,需要采取什么樣的行動。
作者以自己以及身邊的同事走過的彎路、犯過的錯誤為例,意在為后來者引路,助其職業(yè)生涯邁上更高臺階。

《重構:改善既有代碼的設計(第2版)》
作者:?[美]馬丁?福勒(Martin Fowler)
譯者:?熊節(jié) ,林從羽
本書清晰揭示了重構的過程,解釋了重構的原理和最佳實踐方式,并給出了何時以及何地應該開始挖掘代碼以求改善。
書中給出了60多個可行的重構,每個重構都介紹了一種經(jīng)過驗證的代碼變換手法的動機和技術。本書提出的重構準則將幫助你一次一小步地修改你的代碼,從而減少了開發(fā)過程中的風險。

《軟技能:代碼之外的生存指南》
作者:?【美】John Z. Sonmez(約翰 Z. 森梅茲)
譯者:?王小剛
本書聚焦于軟件開發(fā)人員生活的方方面面,從揭秘面試的流程到精耕細作出一份殺手級簡歷,從創(chuàng)建大受歡迎的博客到打造你的個人品牌,從提高自己工作效率到與如何與“拖延癥”做斗爭,甚至包括如何投資不動產(chǎn),如何關注自己的健康。
本書共分為職業(yè)篇、自我營銷篇、學習篇、生產(chǎn)力篇、理財篇、健身篇、精神篇等七篇,概括了軟件行業(yè)從業(yè)人員所需的“軟技能”。
- End -

技術連載目錄(可點擊跳轉即可閱讀):
Maven系列教程??點擊-->?Maven技術干貨連載目錄?跳轉
MyBatis系列教程??點擊-->?MyBatis技術干貨連載目錄?跳轉
JVM調優(yōu)總結系列教程??點擊-->?JVM調優(yōu)技術干貨連載目錄?跳轉
點擊在看,愿你我不再陌生?![]()
