1.3 優秀的程序員
三百六十行,行行出狀元。程序員行業,不乏一些“明星程序員”。
榜樣的力量是無窮大的。榜樣是旗幟、是資源,代表著方向、凝聚著力量。學習具體的典型榜樣,往往比接受抽象的原則方法要方便得多。有人曾說:在中國,賣上萬臺鋼琴,不如出一位郎朗這樣的鋼琴家,他在“青少年學鋼琴”這件事上能帶來更大的推動力。
在程序員這個行業中,聚集了一群癡迷技術、對未知有極強的好奇心和探索能力的人。
認識優秀的程序員,學習他們的處世之道、思維方式,接受他們的影響,這樣由一到十、由點到面,相互感染、競相仿效,最終先進典型的做法能普及到普通人身上。

1.3.1 國內優秀程序員
在國內,很多商界領袖都是程序員出身,比如騰訊創始人馬化騰、小米科技創始人雷軍、百度創始人李彥宏、字節跳動創始人張一鳴、360創始人周鴻祎等。
還有很多程序員是專注于技術的行業專家,他們在行業內早已打響自己的名號,比如阿里巴巴的蔡景現(外號“多隆”)、阿里巴巴的陸靖(名號“人肉邏輯機”)、阿里巴巴的原技術副總裁、AI專家賈揚清、騰訊“TK教主”于旸,網易原員工吳云洋(“云風”)和田春(“冰河”)等人。除此之外,還有一些知名程序員擅長開源工作或寫技術博客,為行業生態貢獻自己的力量,如Vue框架創始人尤雨溪,博客“達人”陳皓、阮一峰等。
清華學堂計算機科學實驗班(簡稱“姚班”)的創辦人就是圖靈獎得主姚期智院士。像姚期智院士這樣級別的科學家或許已經超出程序員范疇,但在他的培養下,誕生了一批又一批在學術上獲得極大成就的計算機編程“達人”。
還有一些名字不能忘記,如錢華林、錢天白等,他們有些是榮登互聯網名人堂的中國人,有些是中國互聯網重要的拓荒者。
(1)商業領域
1)求伯君。
求伯君是國內第一代程序員,是小米公司創始人雷軍的前老板。從1988年開始,他獨自一人,用一年多時間,寫出了國產辦公軟件WPS 1.0。
2)雷軍。
雷軍在武漢大學讀的是計算機專業,屬于程序員科班出身,作為程序員他一干就是多年。他將寫代碼看作一件藝術的事情。雷軍于1996年在金山西點BBS上寫的幾篇帖子里說道:“我愛編程這個工作,可以肯定我會干上一輩子。”足以看出當初那個熱血青年對編程的熱愛程度。
雷軍是大家口中程序員的一個最佳典范,永遠精力充沛,時刻都想著去創造,并且能夠及時修復過程中的bug,有著嚴謹的程序員思維。
3)李彥宏。
百度創始人李彥宏也是一位科班出身的程序員。從北京大學信息管理專業畢業以后,李彥宏便前往美國紐約州立大學布法羅分校完成計算機科學碩士學位。他發明了“超鏈分析”并獲得專利,這是現代搜索引擎發展的基礎技術之一。
4)馬化騰。
騰訊創始人馬化騰也是程序員出身。在大學時,馬化騰已經是一個計算機編程高手。
在《騰訊十年》這本書里,騰訊第一批開發工程師徐鋼武回憶道:“為了養活這只‘企鵝’,大家想盡了辦法。那時我們幾乎什么都做,例如幫人家做一些網站的小項目,包括深圳信息局的郵件系統也是我們做的。當時,馬化騰和張志東親手做網站,公司主頁也是馬化騰自己寫的代碼并親手調試一些小細節。”
5)張一鳴。
2005年,張一鳴大學畢業,僅用兩年時間,就從普通程序員升職到技術高管,管理四五十人的團隊,負責所有后端技術,同時也負責產品相關的工作。
張一鳴說他的愛好就是獲取信息,他發現:互聯網發展到今天,人們獲取信息的方法依然落后,互聯網上雖然有海量信息,但人們找到想要的信息卻很難。于是乎,“碼農”出身的張一鳴帶領十幾個工程師,耗時三個多月,開發出“今日頭條”的最初版本——只要用戶綁定社交賬戶,“今日頭條”就開始分析用戶的社交數據,找到用戶的興趣所在,再向用戶推薦其可能感興趣的資訊。依靠算法推薦新聞,兩年內,今日頭條月活用戶從0到破億。
在生活上,張一鳴依舊保持著他作為程序員時的一些習慣,比如上班時還是穿T恤衫和運動鞋。另外,他側重用數據分析來管理公司等。員工對張一鳴有個共識:一個沒什么愛好的“碼農宅男”。
6)周鴻祎。
360創始人周鴻祎是一位熱愛技術的企業家。
1995年,剛從西安交通大學畢業的周鴻祎,來到北大方正。他覺得當時的開發工具比較落后,就向領導立下了軍令狀,承諾在20天內開發出新的開發工具。于是周鴻祎和另外一位同事連續寫了20個晚上的代碼,總共寫了2萬行,圓滿“交貨”。隨后,憑借這一開發工具,他在北大方正“走紅”。該系統就是方正飛揚電子郵件系統,也是中國第一款擁有自主知識產權的互聯網軟件。
周鴻祎曾說過:“當程序員最大的幸福在于你有很強的操縱感,你可以指揮計算機做你想做的任何事情。你和計算機打交道。計算機很簡單,計算機沒有人復雜。”
7)丁磊。
1993年,丁磊從成都電子科技大學本科畢業后回到了自己的老家寧波,被分配到寧波電信局任工程師。安逸的生活并未讓他感到快樂,兩年后,他決定南下廣州闖蕩打拼。由于在電信局學習并掌握了UNIX系統、數據庫技術和電信業務相關技能,他來到了剛成立的Sybase公司華南分公司。1996年,他架設了ChinaNet上第一個Firebird BBS。1997年,他創辦了網易,最開始的目的是靠做互聯網系統賺錢,后來他提出了“免費”和“易用”這兩個互聯網基本法則,創建了163免費郵箱,自此打開了網易的發展之路。
8)王小川。
王小川在成都四小讀小學時,就對計算機表現出了濃厚的興趣和驚人的天賦,后來他因獲得國際奧林匹克信息學競賽金牌被點招入清華大學計算機系。在搜狐期間,他帶領團隊先后研發了第三代互動式搜索引擎“搜狗搜索”和搜狗輸入法。
商業領域有太多優秀的程序員了,我們可以很清楚地感受到他們的特質:熱情專注、執著務實。
(2)技術領域
1)蔡景現。
蔡景現于2000年加入阿里巴巴;2003年,進入阿里巴巴的一個秘密項目,和另外兩位工程師一起,從零開始,在一個月內,搭建一個名叫“淘寶”的網站,并涵蓋所有交易系統和論壇系統;2003—2007年,獨自維護淘寶搜索引擎,并且這還不是他全部的工作;2014年,被邀約成為阿里巴巴合伙人。
2)陸靖。
陸靖是ACM世界冠軍,就職阿里云,為人十分低調,公司內號稱“人肉邏輯機”。他做事不輕易動手,深思熟慮,鮮有編譯錯誤。在他人遇到搞不定的代碼找到他時,他就只看代碼,不調試,一遍遍地看代碼,然后指出某行代碼有錯誤。
3)賈揚清。
賈揚清是深度學習框架Caffe作者,TensorFlow作者,曾任Facebook AI架構部門總監,負責前沿AI平臺的開發、Facebook各產品部門AI平臺的支持以及前沿機器學習系統研究。他擁有加州大學伯克利分校計算機科學博士學位、清華大學碩士學位和學士學位。2019年3月~2023年3月,他先后擔任阿里巴巴技術副總裁、阿里云智能計算平臺事業部總經理、阿里巴巴開源技術委員會負責人。
4)章文嵩。
1998年,還在讀博期間,章文嵩僅花了兩個星期就完成了初版LVS,而這是我國最早出現的自由軟件項目之一。章文嵩在加入淘寶并任核心系統負責人后,不僅在阿里巴巴沉淀了CDN、TFS、Tair、Tengine、MySQL、JVM、Linux內核、圖像搜索等技術和產品,很好地滿足了淘寶的海量業務對基礎核心軟件的需求,還在后來投身于云計算事業時,為云計算打造了穩定、易用、低成本的云平臺和組件。同時,他還活躍在開源領域的一線,歷任淘寶技術委員會主席、阿里集團開源委員會主席,引入了開源文化,使得阿里巴巴因開源而受益,同時也提高了阿里巴巴的技術品牌影響力。
5)吳云洋。
吳云洋,網名“云風”,剛畢業的時候就被丁磊邀請至網易。后來,他作為網易游戲的核心成員,開發了《大話西游》《夢幻西游》等游戲。
《游戲之旅:我的編程感悟》一書忠實地記錄了他十余年來對游戲編程的所思、所感、所悟,從基礎的計算機知識到高級的編程技術,從非常專業的匯編優化到非常實際的項目管理進行了一次游戲開發的全景探索。他還翻譯過一本特別經典的書《程序員修煉之道:通向務實的最高境界(第2版)》,建議想要踏入程序員行業的讀者買來閱讀。
6)田春。
田春,號稱中國“Lisp第一人”,網名“冰河”。他是網易杭州研究院前高級開發工程師和系統管理員。
田春是一個很有意思的人,他研究的范圍從梵文、意大利語到Common Lisp、毽子、計算機基礎理論、攝影、羽毛球。
7)于旸。
于旸,是騰訊玄武實驗室的發起人。他是國內網絡安全與黑客界響當當的人物。同時,他也是跨界“明星”,本科畢業于安徽醫科大學臨床醫學專業。他才華橫溢卻行事低調、為人謙遜,從不顯山露水,在網絡安全領域卓有建樹。
8)章亦春。
章亦春的OpenResty項目撐起了Nginx生態圈的大半邊天,在OpenResty的group圈里,他幾乎是有問必答,而且講解清晰,待人耐心、謙和,讓人如沐春風。
看到這里,你會發現一流的企業往往都離不開一流的人才。人才之間有“虹吸效應”,他們在一起能迸發出更大的能量。
除了在企業中發光、發熱以外,程序員實現自我價值還有一個途徑,即做一名好的技術博主,比如陳皓、阮一峰等。
9)陳皓。
陳皓,網名“左耳朵耗子”,從2002年開始寫技術博客,從2009年左右開始,在CoolShell(酷殼)上分享技術觀點和實踐總結。陳皓通過一篇篇觀點鮮明、文風犀利的文章吸引了大量IT從業人員的關注,影響了成千上萬程序員在技術選型、求職就業、個人成長等方面的思考和發展。他曾任亞馬遜高級研發經理、阿里云資深架構師、天貓開發總監等職務。
10)阮一峰。
博客型程序員的代表人物就是阮一峰,他是上海財經大學經濟學博士,由于對網站制作感興趣,于是依靠自己強大的邏輯思維能力和對技術的熱愛,成為一名行業專家。他于2014年加入阿里巴巴。作為國內著名的博客作者,有人稱他是經濟學領域博客寫得最好的,博客領域IT研究最透徹的人。
11)尤雨溪。
尤雨溪,英文名Evan You,在前端開發領域,他的大名如雷貫耳。他是前端框架Vue.js作者,獨立開源開發者,曾就職于谷歌Creative Lab和Meteor Development Group。由于工作中大量接觸開源的JavaScript項目,因此他也走上了開源之路,現在全職開發和維護Vue.js。
要特別提一下的是,尤雨溪的大學所學專業并非計算機,而是室內藝術和藝術史,后來獲得了美術設計和技術碩士學位。正是在攻讀碩士學位期間,他偶然接觸到了JavaScript,從此被這門編程語言深深吸引,開啟了自己的前端生涯。
(3)學術領域
在國內,除了商業領域、技術領域有杰出的程序員以外,學術領域也不乏“明星”。
1)錢華林。
錢華林,中國科學院計算機網絡信息中心研究員、伏羲智庫顧問委員會成員;早期從事計算機體系結構研究和整機的研制。1975年起從事計算機網絡的研究與工程建設。他是中國互聯網重要的開創者之一,是“中國互聯網先驅”的“二錢”(另一位為錢天白)之一。
2)錢天白。
錢天白,中國科學院計算機網絡信息中心客座研究員、CNNIC(中國互聯網絡信息中心)工作委員會副主任委員。他為中國的互聯網建立做出過貢獻。
3)姚期智。
姚期智是2000年計算機最高獎項圖靈獎得主。他的學術貢獻毫無疑問是極富開創性且影響深遠的,主要集中在密碼學基礎、計算復雜性及量子計算方面。
準確來說,他已經不能算是普通程序員了,而是一名計算機科學家。
4)樓天成。
樓天成,姚期智的學生,算法專家,谷歌算法大賽得獎者,小馬智行創始人。他是大學生計算機編程高手,經常以一人之力單挑一個隊。在CEOI、ACM界,其大名無人不曉。
樓天成畢業后曾在谷歌總部工作,從事社交網絡和機器學習相關問題的研究。2016年受邀加入百度美國研發中心,是百度當時最年輕的T10級員工。后創立小馬智行,累計完成8輪十多億美元融資。
5)戴文淵。
戴文淵,畢業于赫赫有名的上海交大ACM班。在大學就讀期間,他就帶領三人團隊奪得了ACM世界冠軍和三個亞洲冠軍,后擔任ACM競賽教練,指導學生多次獲得亞洲冠軍。他憑借優秀的信息學算法基礎,在人工智能研究領域的頂級會議上發表了多篇論文。
本節用較多的篇幅介紹了國內一批優秀的程序員,這里的每一個人及他們的故事,都能單獨拎出來寫成一本傳記了。希望讀者能從他們的經歷中得到啟發。

程序員是一份上限很高的職業,也是一份了不起的職業。用計算機思維去訓練自己,客觀辯證、理性嚴謹的氣質會熏陶著你。
1.3.2 國外優秀程序員
介紹完國內一些程序員,現在介紹一些國外程序員,他們同樣卓越,很多人都是現在常用技術的創始人、發明者。
1)蒂姆·伯納斯·李(Tim Berners-Lee)是萬維網發明者之一、2016年圖靈獎得主。他是一位英國人,在2012年倫敦奧運會上發了一條著名的推文——“This is for Everyone”(萬維網是獻給每個人的)。他被《時代》周刊列為“時代100人:20世紀最重要的人物”。
2)羅伯特·卡里奧(Robert Cailliau)和蒂姆·伯納斯·李聯合創建了萬維網,并為蘋果Mac計算機開發了第一款Web瀏覽器。
3)保羅·莫卡派喬斯(Paul V. Mockapetris)開發了互聯網分布式及動態域名系統,即DNS。
4)雷·湯姆林森(Ray Tomlinson)是電子郵件的發明者;電子郵件地址中使用的@符號就是他發明的。
5)林納斯·托瓦茲(Linus Torvalds),他是當今世界最著名的計算機程序員之一,是Linux內核與Git的作者。他說過一句著名的話:“Talk is cheap,show me the code”(說的話很廉價,不如給我看看你的代碼)。
6)理查德·斯托曼(Richard Stallman)是通用GNU計劃以及自由軟件基金會的創立者,還是Emacs、GCC的開發者。毫不夸張地說,沒有他,開源軟件也許不會存在。
7)吉米·威爾士(Jimmy Wales),維基百科創始人之一。2006年5月,他被《時代》周刊選為當年世界100個最具影響力人物之一。
8)埃里克·比納(Eric Bina),網景公司聯合創始人,擔任程序員時開發了Mosaic首個版本。
9)保羅·維克西(Paul Vixie),美國計算機科學家,他的技術貢獻包括域名系統協議設計和過程,以及實現DNS實現的操作穩定性的機制。另外,對開源軟件原理和方法有重大貢獻。
10)艾倫·埃姆塔格(Alan Emtage),現代搜索引擎鼻祖;構思并實施了第一版Archie,一個可以以文件名查找文件的系統,這個系統被廣泛認為是世界上第一個互聯網搜索引擎。
身處互聯網時代的我們,每日所用的計算機設備、手機設備,以及在它們之上的軟件都離不開這些先驅的智慧和貢獻。
用榜樣的力量激勵我們,認知榜樣、學習榜樣、成為榜樣、超越榜樣。
1.3.3 程序員的視野
作者一直堅定地認為:“程序員只有拓寬視野,多看、多聽、多想,才不至于閉目塞聽,故步自封”。
“打開認知”也是本書想強調的。關于如何打開認知、拓寬視野,本節將給出如下幾點建議。
(1)提高閱讀量
程序員要多看書。看書相對于瀏覽網站、工作實戰、提問討論這些方式的顯著好處:學習更加系統。比如數據結構、算法、編譯原理、操作系統、軟件架構、計算機網絡、編程語言這些方面,每個方面至少要看一本。當遇到問題,或需要深入、具體了解某項技術時,才知道如何去搜索、提問,并且,這樣和同行能有更多共同話題。
除了書本閱讀以外,程序員很多時候會通過閱讀大量的開發文檔,或者案例代碼來完成技術的學習。現如今,互聯網上有很多優質的技術文檔,在看的同時,還能方便地進行技術交流;除此之外,還包括在一些活躍的開發社區中交流新技術。通過大量的閱讀,可學習新技術、尋找問題解決方案。
提高閱讀量,不僅能鍛煉信息提取的能力,還能提升思考總結的能力。
(2)使用優質的學習網站
程序員每天與網絡相伴,如果能找到一些優質的學習網站,則可借助它們提升自己。優秀的學習網站包括搜索引擎、軟件官網、技術論壇等。
例如,可以在谷歌上檢索任何信息,可以在Stack Overflow官網上找到開發中遇到的問題的解決方案,可以在GitHub上找到很“酷”的開源項目等。
(3)加入技術圈子
技術人也有技術人自己的圈子,加入圈子很重要。在圈子內,你可以聽到很多來自同行的觀點,看到很多感興趣的技術,也能和大家充分地溝通、交流。有時候,技術的成功就是通過交流與思維“碰撞”實現的。
很多平臺都提供了程序員圈子,比如谷歌+、豆瓣小組、新浪微博小組、微信群、QQ群、技術社區的社群等。可以在這些地方及時獲取信息。不夸張地說,信息差就是財富。
(4)寫作或開源
優秀的程序員不會放棄寫作或開源這樣絕佳的提升途徑。
堅持技術寫作或者代碼項目開源,能讓你更加清晰地認識技術、理解技術,同時,它們也是絕佳的交流方式。
輸出是最好的輸入,養成寫作或開源的習慣,對技術提升和個人成長都有很大的幫助。時間一久,你會遇到很多志同道合的朋友,他們會關注你、激發你的想象,這個過程就是認知成長的過程。
(5)關注前沿技術
程序員每天都應該花一些時間來關注前沿技術、行業最新動態,因為擁有靈敏的技術嗅覺是很重要的。
IT行業變化很快,需要邏輯清晰、思維活躍,但并非鼓勵盲目追求新技術,要有自己的“判斷準則”,即使遇到一些新事物,也能舉一反三。而“判斷準則”就是在技術圈中不斷地觀察而形成的。
這里推薦一些可拓寬程序員視野的網站,比如V2EX、CSDN、掘金技術社區、InfoQ技術社區、SegmentFault(思否社區)、博客園、51CTO社區、GitHub等。
通過重新認識程序員這個職業,就會發現,高薪的背后并非想象的那么簡單。逐漸了解IT行業的獨特之處,學習優秀程序員的閃光之處,當認識提升的時候,成長便從這里開始了。