NB!他12歲就能寫代碼,為數百萬程序員引路~
好的故事總能激勵人前行,好的工作也是一個巨大的跳板!以及最關鍵的是敢于對你領導的不合理要求說“NO”!它不僅有助于保護我們自己的職業健康,也能真的確保項目以更合理和高效的方式推進~
這對你來說也許是一個好的“跳板”,??前后端/測試崗 ??均可投:點它即可
Robert C. Martin,世界級編程大師,設計模式和敏捷開發先驅,敏捷聯盟首任主席,C++ Report前主編,被后輩程序員尊稱為“Bob大叔”。20世紀70年代初成為職業程序員,后創辦Object Mentor公司并任總裁。

Robert C. Martin
Martin還是一名多產的作家,至今已發表數百篇文章、論文和博客文章。著有《代碼整潔之道》《代碼整潔之道:程序員的職業素養》《敏捷軟件開發:原則、模式和實踐》《UML:Java程序員指南》等。
著名的對象范型和C++專家考帕里安(James O. Coplien)曾這樣評價Bob大叔:
那班求索者多年來并肩奮斗,不但是為求一己之進步,更將他們的知識通過和你手上正在做的事一般的工作奉獻給這個行業,使得編程世界略有改善。
天才少年Bob的成長之路
1964年,12歲的Bob寫下人生第一行代碼。1965年,Bob開啟了人生中算得上專業的第一次合作,與小搭檔John Marchese一起造電腦,Bob思考,John動手,兩個人忙活了數百個小時,搗鼓出了不少看著相當有型的家伙,上面裝著繼電器、按鈕、小燈,甚至還安裝了一個電傳打字機!雖然這些電腦沒法用,但是看起來真的很棒,他們也確實很用心,這對于兩個13歲的小朋友來說,相當了不起了!
1968年,在中學第一年認識了新的小伙伴Tim Conrad,開始了新一輪的造電腦工程,這次由Tim思考,Bob動手,Tim還教給了Bob一些電子學知識,Tim也是第一個給Bob介紹PDP-8的人。他們用了一些很基礎的元器件,真的造出了一臺可以工作的18位二進制計算器,能夠進行加減乘除的運算,他們興奮極了,那年他們把所有的假期都投了進去。
后來,他們還自學了計算機課程,在那個年代,這是一個相當不容易的事情,但他們做到了。他們特別找來了有關PDP-8匯編器、FORTRAN、COBOL、PL/1,他們就像海綿一般在書中汲取知識,并寫了一堆根本根本沒有可能去實際執行的程序,因為那時根本沒有計算機可以供實操,但純粹出于愛好,他們仍然孜孜不倦寫了許多程序。
1969年,Tim、Bob以及他們的伙伴Richard Lloyd成為了ACS公司的程序員,為芝加哥卡車司機工會開發實時會計系統。17歲的他們覺得上大學是浪費時間,決定馬上進入職場,在那里他們遇到了Bill Hohri、Frank Ryder、Big Carlin和John Miller,他們為這些年輕人提供了學習專業編程的實戰機會,Bob在其中頗受教益。
這份工作經歷也讓Bob意識到,作為一個程序員還應該具備某些素養,例如對著你的上司,說“YES”和“NO”。
Bob在ASC工作時,他的上司 Frank 是一位退役的空軍上校,這位領導的處事風格雷厲風行:我發出指令、你們按時上線。初入職場的一眾小年輕,包括Bob,根本不敢看他的眼睛,更不敢抗議時間不夠,最終的結果是系統按時上線,故障頻發,無限次數的系統崩潰、系統重啟。
Bob認為,程序員往往太容易說“YES”,總是在沒有明確目標和期限的情況下,就第一時間草率地給出了確認的答復,任務交付時卻無法實現自己的承諾。
有時候,獲取正確決策的唯一途徑,便是勇敢無畏地說出“不”字……我們要明白,委屈專業原則以求全, 并不是問題的解決之道。舍棄這些原則,只會制造出更多的麻煩。
只要你愿意嘗試,在工作中對著那些不合理的工作任務,主動說幾次“NO”,之后你會逐漸發現:你只需要花三分的力氣去拒絕那些無法完成的工作任務,就可以節省十分甚至二十分開發的時間;相反,如果在沒有明確目標和期限的情況下,就草率給出了確認的答復,往往會非常被動,到最后,項目就落得著名的 IBM OS/360 操作系統的失敗下場。
在Bob的經典書籍《代碼整潔之道》中也提到,作為一個程序員不僅是懂得“NO”背后所蘊含的意義和責任,“YES”背后的意義和責任同樣重要。
(說“YES”時)你對自己將會做某件事做了清晰的事實陳述,而且還明確說明了完成期限。那不是指別人, 而是指你自己。你陳述的是自己會去執行的一項行動,而且,你不是“可能”去做,或是“可能做到”,而是 “會”做到。
但“YES”背后常常跟著的是屢見不鮮的項目延期,絕大部分原因就是在這種不負責任的情況下說 “YES”導致的。
在Bob的學生時代、職業生涯中,直接導師并不多,因為他的成長的年代中并沒有很多有經驗的老師、程序員。Bob在工作項目的摸索及讀一些杰出人物的著作來汲取知識、積累經驗,這些人包括Grady Booch(《UML用戶指南》作者), Tom DeMarco(《項目百態》作者), Meilir Page-Jones(《UML 面向對象設計基礎》作者), Erich Gamma(《設計模式》作者), Martin Fowler(《重構》作者), Bertrand Meyer(《面向對象軟件構造》作者), Kent Beck(《測試驅動開發》作者),等等。Bob感覺這些教導都是充滿價值的。
隨后Bob在Teradyne工作,他從老板、工作伙伴們的身上學到了許多他認為有價值的東西,特別是Mike Carew,他們成為了黃金搭檔,“如果你想活兒干得又快又好,就把他交給Bob和Mike!“他們共事的時光充滿歡樂。
糟糕的代碼能讓一個公司關門大吉!
在一個項目中,某位同事花三個星期寫完一串代碼后離職了,在沒有批注、沒有規律的情況下,果然沒有人能夠理解這串代碼,最終只能由新的同事重新撰寫。這段經歷讓他從此對代碼的整潔深感重視。
1987年,Bob開始和Jim Newkirk搭檔,隨后他們相繼離開Teradyne,加入了Clear Communication。
于此同時,有家公司寫了一個很流行的殺手應用,許多專業人士都買來用,包括Bob。然后,發布周期開始拉長,缺陷總是不能修復,裝載時間越來越久,崩潰的概率也越來越大,至今Bob還記得自己在某天沮喪地關掉那個程序,從此再不用它時的絕望心情。果不其然,在那之后不久,該公司就關門大吉了。
后來,Bob見到那家公司的一位早期雇員,問他發生了什么事,而他的回答令Bob愈發恐懼起來。原來,當時他們趕著推出產品,代碼寫得亂七八糟,特性越加越多,代碼也越來越爛,最后再也沒法管理這些代碼了,只好放著不管,最終,糟糕的代碼毀了這家公司。這個事情更是讓Bob確定了代碼的整潔是需要引起重視的,軟件質量,不但依賴架構及項目管理,而且與代碼質量緊密相關,但當時的他并沒有能力來改變這一切。
99%的程序員都在為糟糕代碼頭痛!
Bob和Jim一起在Clear Communication拼搏了好幾年后,共同創辦了Object Mentor公司,Bob認為,在他有幸共事過的人中,Jim是最率直、最嚴謹和最專注的人,從Jim身上獲益良多。
直到現在,Bob仍堅持閱讀這一習慣,每天花費大量的時間閱讀,甚至包括博客和文章,從中緊跟科技發展。他曾坦言自己一直都在尋找值得一讀的好書。
想到那個困擾了他許久的難題,也是大部分程序員都遭遇過的難題——糟糕的代碼,他本能的就想迎頭而上,像他的導師們一樣,像Jim一樣,給別人帶來幫助。于是,他開始寫作,在《代碼整潔之道》一書中分享了自己多年編程生涯所累積的項目實踐經驗,將代碼整潔的多種解決辦法傾囊相授,受到了廣大程序員的喜愛及追捧。
Bob曾在為 ASD 所寫的序中寫道:
最好的軟件開發人員都知道一個秘密:美的東西比丑的東西創建起來更廉價,也更快捷。
而構建、維護一個美的軟件系統所花費的時間、金錢都要少于丑的系統。
美的系統是靈活、易于理解的,構建、維護它們就是一種快樂。
如果說 ASD 中更多的是設計思想和模式精髓的闡述,那么在《代碼整潔之道》中,Bob 為程序員們提供了更為詳盡的微距視角,涉及“命名”、“函數”、“代碼格式”、 “異常處理”、“單元測試”等編碼主題,巨細靡遺地向軟件工匠們極力傳授整潔編碼的藝術,進一步向軟件開發社區慷慨分享了他在探索“軟件之美”旅途中的參證心得。
Bob還在書中提出一種觀點:代碼質量與其整潔度成正比。干凈的代碼,既在質量上較為可靠,也為后期維護、 升級奠定了良好基礎。他認為,無論是敏捷開發流派還是傳統開發流派,想要保證軟件質量,不僅僅依賴架構及項目管理,更與代碼質量緊密相關。
《代碼整潔之道》中提到 Bob大叔認為把代碼變得整潔的,就首先要了解三個注釋,即:
- 不恰當的信息
讓注釋傳達本該更好地在源代碼控制系統、問題追蹤系統或任何其他記錄系統中保存的信息,是不恰當的。例如,修改歷史記錄只會用大量過時而無趣的文本搞亂源代碼文件。通常,作者、最后修改時間、 SPR 數等元數據不該在注釋中出現。注釋只應該描述有關代碼和設計的技術性信息。
- 廢棄的注釋
過時、無關或不正確的注釋就是廢棄的注釋。注釋會很快過時。最好別編寫將被廢棄的注釋。如果發現廢棄的注釋,最好盡快更新或刪除。廢棄的注釋會遠離它們曾經描述的代碼,變成代碼中無關和誤導閱 讀者的浮島。
- 糟糕的注釋
值得編寫的注釋,也值得好好寫。如果要編寫一條注釋,就花時間保證寫出最好的注釋,字斟句酌,使用正確的語法和拼寫,別閑扯,別畫蛇添足,要保持簡潔。
糟糕的代碼最終會成為吞噬人的黑洞

上面的圖片是《代碼整潔之道》的封面,是用來自于哈勃望遠鏡那副著名的可見光相片和Spitzer(斯比澤)軌道探測器最新紅外影像組合而成的M104:草帽星系,它坐落于處女座,離地球僅3000萬光年,其核心是一個質量超大的黑洞,有100萬個太陽那么重,仿佛經歷了大爆炸之后碎片四濺的產物。
讓人不禁聯想到那些代碼不整潔、風格各異且不可維護的項目,就像一個個的黑洞,存在著某天會定時爆發的風險,而當它真正爆發時,這個項目的所有人都會因此遭殃。
當你負責一個小型項目時,如果追求速度,力求快速出成果,這時可以率性而為。當項目逐漸擴大,規范就會逐步顯出它的重要性。在軟件開發中也是一樣,歸置到位的工具能提升生產力。軟件質量,不但依賴于架構及項目管理,而且跟代碼質量息息相關。代碼質量與其整潔度成正比。干凈的代碼,既在質量上較為可靠,也為后期維護、升級奠定了良好的基礎。
世界級軟件開發大師的多重身份
如今,Bob除了寫作,還會為 cleancoders.com制作視頻,也會技術會議上講話,從世界級軟件開發大師到暢銷專業書籍作家再到臺前傳達專業領域知識的權威人物,Bob給我們帶來一次次驚喜。
在這個過程中,他發現自己不止在編程方面頗有心得,對于站在人前傳達信息這件事也頗有天賦。
我們覺得他“變身”了,想知道他是如何從一位職業的程序員變身成為這個領域的導師,但對他來說,這是一個緩慢的成長過程:“我花了整整20年來積累工作經驗,又花了20年才做到今天的成就。‘變身’從來都不是我意料之中的事,也不是我的目的;但這個過程對我來說是一種享受”。
其實,看了關于Bob的介紹和評價,我作為一名程序員,是十分激動和受鼓舞的。對編程也有了更深的理解和尊重。他的故事告訴我們,編程不僅僅是寫代碼,更是一種藝術,一種追求卓越和美的過程。編程不僅是一份工作,更是一種生活態度和追求。通過不斷學習和分享,我們真的可以讓編程世界變得更加美好。

















