每日最新頭條.有趣資訊

谷歌的伯牙與子期,11級工程師——Jeff和Sanjay

譯指禪導讀:

如今,谷歌的工程師置身於一條偉大存在鏈當中:始於1級,也就是底部的IT技術支持人員;2級是大學應屆生,3級通常擁有碩士學位……

若成為10級的谷歌院士就是贏得一種終身榮譽,通常是各自領域的世界領先專家。

而Jeff和Sanjay是谷歌最高級研究員——該公司有史以來也是唯一的11級……

請看來自《紐約客》的文章:

2000年3月的一天,谷歌的六位頂級工程師聚在一間臨時作戰室。公司正處在前所未有的緊急狀態。

去年10月,它的核心系統——通過爬梳網站建立索引——已經停止了工作。用戶仍然能在google.com上輸入查詢信息,但得到的結果已經過期五個月了。風險遠遠超出了工程師的預計。

此時谷歌的聯合創始人Larry Page和Sergey Brin正在洽談強化雅虎搜索引擎的事宜,並承諾提供比自己現有大十倍的索引規模——這個體量可以媲美萬維網,後者的規模在去年已翻了一番。

如果他們失敗了,google.com將變成遺跡,和雅虎的生意很可能談崩,公司將冒著燒光資金的風險,最後被人遺忘。

在這一間階梯會議室裡,工程師們給鋸木架放上門板,然後裝上電腦。Craig Silverstein靠牆坐得很遠,他只有二十七歲,小身板,嗓子尖。Silverstein是Google的第一個員工:他剛加入公司的時候,還是在Brin的客廳辦公,一個人重寫了大部分代碼。

這次他和羅馬尼亞的系統工程師Bogdan Cocosel工作了四天四夜,毫無進展。“沒有任何有意義的分析,” Silverstein回憶道,“一切都被破壞了,而我們一籌莫展。”

Silverstein幾乎沒覺察到,越過他的左肩,有一位三十三歲的Sanjay Ghemawat,濃眉黑發、兩鬢稍灰,十分安靜。他畢業於麻省理工。

Sanjay在幾個月前加入了公司,那時是12月。他跟隨了一位同事的腳步——三十一歲的Jeff Dean,他瘦瘦高高、精力充沛。他們都來自Digital Equipment Corporation,Jeff比Sanjay要早十個月離開。他們極其要好,而且喜歡一起寫代碼。

谷歌11級工程師:Sanjay Ghemawat

在作戰室裡,Jeff把椅子推到Sanjay的桌前,自己的桌子空著。Sanjay敲著鍵盤,Jeff就倚在一邊,像個製作人對新來的主播那樣嘮嘮叨叨。

Jeff和Sanjay開始研究熄火了的索引。他們發現有些詞語不見了——他們搜索“郵箱”沒得到任何結果——其它結果的順序完全是亂的。這些天他們一直在尋找代碼的漏洞,沉浸在編程邏輯裡,上上下下都檢查遍了。他們找不到錯在哪裡。

程序員有時會將軟體想象成一種有層次的結構,從頂層的用戶界面,下降到越來越基礎的層次。冒險進入這種結構的底層,即軟體與硬體的交匯之處,就背離了理想的代碼秩序,而轉向它所憑依的電與矽的元素世界。

在作戰室的第五天,Jeff和Sanjay開始懷疑他們要找的問題不是出在邏輯上,而是在物質上。他們將混亂的索引文件轉換為原初形式:二進製代碼。他們想知道機器能觀察出什麽。

Sanjay的顯示器上出現了一大串1和0的粗體,每行代表一個索引詞。Sanjay發現:一個應該是0的數字是1。當Jeff和Sanjay將所有來源錯誤的詞放到一起的時候,他們看出一個規律——每個詞都有同樣的問題。機器的記憶體芯片不知怎麽被搞壞了。

Sanjay看著Jeff。谷歌在這幾個月經歷了越來越多的硬體故障。問題在於,隨著谷歌的壯大,它的計算基礎設施也在不斷擴大。在你擁有足夠的計算機硬體之前,它很少會出問題——但之後它會一直出問題。

谷歌11級工程師:Jeff Dean

電線磨損了,硬碟壞了,主機板過熱了。許多機器從未開始工作;有些會莫名奇妙地變慢。奇怪的環境因素也會產生影響。當超新星爆炸時,爆炸波會產生向各個方向散射的高能粒子;科學家認為,有一種微小的可能,讓宇宙射線的一個出軌粒子能夠擊中地球上的計算機芯片,把一個0撥到1。

世界最強大的計算機系統,比如在NASA、金融公司,使用可以容忍單個字節變動的特殊硬體。但谷歌的運營像一家初創公司一樣,買的是更便宜的缺少這項功能的電腦。公司已經到達了一個轉折點。它的計算集群已經如此龐大,以至那些少見的硬體故障都會變得很普遍。

Jeff和Sanjay一起編寫代碼來給損壞的機器打補丁。 不久之後,新索引完成,作戰室解散。Silverstein陷入了困境。他是一個很好的調試人員;找到漏洞的關鍵是追究事情的根源。Jeff和Sanjay在這方面走得更遠。

在3月索引崩潰之前,谷歌的系統基於其創始人研究生時期在史丹佛寫的代碼。Page和Brin不是專業的軟體工程師。他們是學術界進行搜索技術實驗的人。

當他們的網絡爬蟲崩潰的時候,沒有任何有內容的診斷信息——只是一句“Whoa, horsey!”老員工稱之為BigFiles,這是Page和Brin編寫的一個軟體,就像BugFiles。 他們最重要的索引代碼需要好幾天才能完成,如果遇到問題就必須重新開始。按矽谷的說法,谷歌不可能“規模化”。

我們常說我們在“上網查詢”,但我們真不是;我們的搜索引擎遊覽全部網頁的索引——一張地圖。 當谷歌在1996年仍被稱作BackRub時,它的地圖小得可以裝在Page宿捨的電腦裡。到了2000年3月,根本沒有一台大得能夠處理它超級計算機。

谷歌維持下去的唯一方法就是購買客供伺服器並將它們連接成一個機隊。因為就算這些計算機的價格打對折,谷歌都覺得不值——軟盤驅動器,金屬機箱——公司就訂購原廠的主機板和硬碟然後將它們拚在一起。

谷歌把一千五百個這種設備堆疊成六英尺高的寶塔,放在加利福尼亞州Santa Clara市的一幢建築物裡。由於硬體故障,只有1200個能夠工作。看起來隨機發生的故障在不斷地破壞系統。為了生存,谷歌必須將計算機聯合成一個無懈可擊、隨機應變的整體。

Jeff和Sanjay並肩承擔起這項任務。曾在Apple開發Macintosh前身的Wayne Rosing於2000年11月加入Google,負責管理百人工程團隊。

他說,“他們才是領導者”。他們每周工作90個小時,編寫的代碼使單個硬碟驅動器出現故障也不會破壞整個系統。他們在爬梳的過程中添加了檢查點,方便在中途重啟。通過開發新的編碼和壓縮方案,他們使系統容量實際增加了一倍。他們是一往無前的優化者。

當汽車轉彎時,外輪必須覆蓋更多的地面;類似地,硬碟外緣比內緣旋轉得更快。谷歌已經把要經常訪問的數據移到外部,因此在讀磁頭下面,字節可以更快地流動,但內部的一半是空的;Jeff和Sanjay在這個空間裡存儲了常用搜索的預處理數據。

在2001年的四天時間裡,他們證明了谷歌的索引可以使用快速隨機存取記憶體而不是相對較慢的硬碟存儲;這一發現重振了公司經濟。Page和Brin知道用戶會湧向即時提供答案的服務。問題是速度需要計算能力,計算能力需要花錢。Jeff和Sanjay用軟體解決了難題。

在2005年Rosing離開之後,Alan Eustace成為了工程團隊的負責人。“看似矛盾的是,為了解決龐大的問題,你必須知道最小的細節,” Eustace說。Jeff和Sanjay對計算機的了解精確到字節。

Jeff曾經傳發過一份列表——“每個程序員都該知道的潛在數字”。說實話,它是一列幾乎沒有程序員知道的數字:L1的緩存引用一般需要0.5納秒,或是從記憶體中依次讀取1兆字節需要250微秒。

這些數字植入了Jeff和Sanjay的大腦。他們帶頭重寫了幾次谷歌的核心軟體,讓系統容量呈數量級增長。與此同時,谷歌龐大數據中心的技術人員們正走在崎嶇的道路上,他們遵照軟體生成的指令來更換硬碟驅動器、電源和記憶棒。即使有一部分磨損和失靈,系統仍可以向前運轉。

如今,谷歌的工程師置身於一條偉大存在鏈當中:

始於1級,也就是底部的IT技術支持人員;

2級是大學應屆生,3級通常擁有碩士學位,達到4級需要幾年時間,或有博士學位,大多數晉升都停滯在第5級。

6級工程師——前10%——能力強到他們可以被歸為項目成功的主因;7級是擁有相當成績的6級。

8級的首席工程師與主要產品或一些基礎設施相關聯,9級傑出工程師令人景仰。

成為10級的谷歌院士就是贏得一種終身榮譽,谷歌院士通常是各自領域的世界領先專家。

Jeff和Sanjay是谷歌高級研究員——該公司有史以來也是唯一的11級。

谷歌園區在距離Mountain View市中心幾分鐘的高速公路旁,那兒蹲踞著一群帶有色窗戶的乏味建築。去年夏天的一個星期一,早上一起編程之後,Jeff和Sanjay到名為Big Table的園區自助餐廳吃午飯,該餐廳的名字源於2005年他們協助開發的一個系統,能夠把無數計算機當作單個數據庫來處理。

Sanjay又高又瘦,穿著舊栗色開襟短袖、灰色褲子,帶金屬框眼鏡。他看了一眼外面的桌子,快步走過去,撐開傘,搬位子坐在陰處。他把另一張椅子搬到太陽下面給Jeff,一分鐘後他到了,寬肩膀,穿著短袖襯衫和時髦的運動鞋。

像伴侶一樣,Jeff和Sanjay你一言我一語地來講完整個故事。他們開始回憶兩人的早期項目。

“我們用手寫下東西,”Sanjay說。他的眼鏡在陽光下變暗了。“我們會重寫它,有點像是 ‘哦,這看起來與我們上個月寫的內容差不多。’”

“或者在我們的索引數據裡有些微變動,”Jeff補充。

“要麽略微不同,”Sanjay說。 “這就是我們弄清楚的方式——”

“這是本質,”Jeff說。

“——這是常見模式,”Sanjay說完了他們的想法。

Jeff咬了一口手中的披薩。他的指頭跟水手一樣,表皮粗糙、疙疙瘩瘩;相比之下,Sanjay看起來簡直是精致。他思考著兩人是怎樣成為搭檔的。 “我不太清楚我們如何決定會更好,”他說。

Jeff說:“我們就一直這樣做了,早在谷歌之前。”

“但我不知道為什麽我們決定在一台電腦而不是兩台電腦前做它更好,”Sanjay說。

“我會從我離他兩個路口遠的D.E.C.研究室走到他的D.E.C.研究室,”Jeff說。“中間有一家冰淇淋店。”

“所以就是這家冰淇淋店!”Sanjay說,開心極了。

單身的Sanjay,和Jeff,還有Jeff的妻子Heidi以及他們的兩個女兒一起度假。Jeff的女兒們叫他Sanjay叔叔,這五個人經常周五聚餐。Jeff的長女Victoria和Sanjay,已經開始學烘焙了。

“我看著他的女兒們長大的,”Sanjay自豪地說。在2004年谷歌首次公開募股之後,他們搬到相隔4英裡的房子裡。Sanjay住在Mountain View老市區的一間不起眼的三居室裡;Jeff在Palo Alto市中心附近設計了自己的房子,還在地下室裝了一個蹦床。

在家工作期間,他發現自己雖然喜歡空間設計,但他並沒有耐心追求他所說的“Sanjay主義”的建築:

房梁、螺栓和承重這些細節,讓偉大的設計不被割裂。

“我不明白為什麽大部分人不這麽做,”Sanjay指的是與夥伴一起編程。

“你需要找到和你的思維方式兼容的人一起編程,你們兩個人在一起將成為一股互補的力量。”Jeff說。

他們退出桌台,出來找些軟冰淇淋吃,閑逛在Big Table和來來去去的谷歌員工之間。兩人之中,Jeff更願意闡釋,逛的時候他分享了自己的“軟服務”策略。

“我來擠壓。我認為抬高的方法可以增加穩定性,” Sanjay開心而專注地將巧克力和香草的混合物旋進他的錐筒中。

社會學家Michael P. Farrell在2001年的《合作圈:友情驅動與創意工作》一書中,對親密的創作夥伴——法國印象派,弗洛伊德及其同時代人——進行了研究。

“大多數能給全新視野打下基礎的微弱洞見,不會誕生於整個團體在一起的時候,也不是人員單獨工作的時候,而是當他們成對協作,互相溝通的時候。”他寫道。

莫奈和雷諾阿在1869年夏天並肩工作,創造的風格成為了“印象派”;在生成立體主義的六年合作期間,畢加索和Georges Braque經常只在畫布的背面簽名,來混淆到底是他們之中的哪個人完成了這一幅畫。

(“畫布上是未完成的作品,除非我們都覺得作品完成了。”畢加索後來回憶道。)

在《兩人之力:尋找創意夥伴的創新本質》中,作家Joshua Wolf Shenk引用了1971年的採訪,其中約翰·列儂詳細說到,他或者Paul McCartney會“寫出點好東西,這方面很容易,就像‘我今天看過新聞了’或者任何東西。”

一個人會陷入僵局直到另一個人過來——然後,列儂說,“我會唱一半,他會受到啟發,又寫下一點,反之亦然。”每個人都容易陷入創意的坑裡,但兩人同時陷進去就很難。

在新科學或藝術的“理論建設”階段,廣泛探索而不陷入死胡同是非常重要的。Fran?ois Jacob與Jacques Monod一起開創了基因調控研究。

他指出,到了二十世紀中葉,分子生物學有潛力的領域的大多數研究都是結對做出來的。 “在創想理論和構建模型方面,兩個人比一個人更勝一籌。”

雅各布寫道,“因為兩人都在想同一個問題,想法就越來越多,越轉越快。它們在兩個夥伴之間彈來彈去。它們被嫁接在一起,就像樹上的枝杈一樣。

在這個過程中,幻想很快被扼殺在萌芽狀態。“在過去的三十五年裡,大約一半的諾貝爾生理學或醫學獎都歸於科學夥伴關係。

經過多年一起工作的時光,兩人之間會生成一種私人語言,跟雙胞胎一樣。他們模仿彼此的衣著和習慣。幽默感從一個人傳染到另一個人身上。分別計算兩人的貢獻程度簡直不可能。 但這麽緊密夥伴關係在軟體開發中真是難得一見。

雖然開發人員有時談論“結對編程” ——兩個程序員共用一台計算機,一個“駕駛”而另一個“導航”——他們經常把夥伴關係當作一種浪費,就像兩人是一架飛機上的合作駕駛員。

相比之下,Jeff和Sanjay有時像是一個大腦的兩半。一些他們的著名論文有多達十幾位的合著者。而且,他們的一位經理Bill Coughran回憶說:“他們兩人特別多產,效率奇高,導致我們經常圍著他們倆建立團隊。”

1966年,系統開發公司的研究人員發現,最好的程序員的效率是最差的10倍以上。從那以後,所謂“10倍程序員”的說法一直爭議不斷。在軟體項目通常是成規模和集體化的情況下,這個想法尊重了個體。

在編程中,很少有成就是孤立存在的。即便如此——也許有點諷刺的是——許多程序員將Jeff和Sanjay共同完成的工作看成是10倍程序員存在的證據。

Jeff於1968年7月出生在夏威夷。他的父親Andy是一名熱帶病研究者。他的母親Virgi年 Lee是一位醫學人類學家,會說六種語言。出於好玩,父子倆給一個IMSAI 8080組裝計算機編程,直接把升級程序焊接到機器上,從機械結構開始學習。

Jeff和他的父母經常搬家。十三歲時,他略過了八年級的最後三個月,到索馬裡西部的一個難民營幫助他們。接著,他在高中開始為流行病學家編寫一個叫Epi Info的數據收集程序; 它成為了田野調查的標準工具,最終以十幾種語言流傳了數十萬份的。(由疾病控制預防中心維護的一個網站,“Epi信息故事”,有一張Jeff在高中畢業典禮上的照片。)

Jeff在明尼蘇達大學遇到Heidi,她僅僅在幾年之後就了解到這個程序的重要性。

“他從不吹噓任何這種事情,”她說。“你得把事情從他身上掏出來。”

他們第一次約會是在一場女子籃球比賽,Jeff穿著地鼠人偶服,做啦啦隊。

Jeff博士期間專注於編譯器,這種軟體將人們編寫的代碼轉換為適用於電腦的機器語言指令。

“就魅力而言,編譯器無聊透頂,” Alan Eustace說。另一方面,他們讓你“非常了解機器。”

描述Jeff的時候,Sanjay用食指揉著太陽穴。“當你在寫代碼的時候,他就會想出一個模型,”他說,“‘這段代碼的性能如何?’他幾乎可以半自動地考慮到所有的細支末節。”

Sanjay在去康奈爾大學之前根本沒碰過電腦,那年他17歲。他於1966年出生於美國印第安納州的West Lafayette,但是在Kota長大,一個印度北部的工業城市。他的父親Mahipal是一名植物學教授;他的母親Shanta照顧Sanjay和他的兩個哥哥姐姐。

他們是個書香世家:他的叔叔Ashok Mehta記得他買了一本Frederick Forsyth寫的《豺狼日》,裝訂磨損得很嚴重,他看著這家的孩子們一起讀這本很舊的書,一頁一頁地彼此傳看。Sanjay的兄弟Pankaj是哈佛商學院獲得終身教職的最年輕的職工。(他現在是紐約大學Stern學院的教授。)

Pankaj和Sanjay上同一所學校,大家都知道他才華橫溢。

“我有點活在我兄弟的陰影下,” Sanjay說。從成年人角度來說,他一貫謙遜。

2016年被美國藝術與科學學院聘用,他沒跟父母說;鄰居只好把這個消息告訴他父母。

在麻省理工的研究生院,Sanjay結識了一群親密無間的朋友。而且,他從不約會,而到現在只是“非常非常少”。他說他並沒有決定不成家——只是展現出來是這個樣子。他的好友已經學會了不在這方面打擾他,他父母很早就接受了兒子會單身。

也許是因為他如此內向,在谷歌有關他的一切都充滿了神秘色彩。他以安靜而深刻著稱——一個深思熟慮並異常犀利的人。

在他的桌子上,他保留了一堆Mead作文筆電,最早的可以追溯到20年前,裡面裝滿了工整的清單和圖表。他用鋼筆,寫草書。他很少引用舊的筆記,但為了思考而寫。在麻省理工,他的碩士導師是Barbara Liskov,一位權威的計算機專家,主要研究複雜代碼庫的管理。

在她看來,最好的代碼就像是一篇好文章。它需要一個精心布局的結構;每個詞都有意義。這種編程方式需要與讀者共情。

它也意味著代碼不是達到目的的手段,而它本身就是一件工藝品。

“我認為他最擅長的是設計系統,”Craig Silverstein說。 “如果你盯著Sanjay寫的一份代碼,它的美麗就像一尊比例勻稱的雕塑那樣無與倫比。”

在谷歌,Jeff更加出名。源自於Jeff Dean——模因,仿照Chuck Norris的那個。(“從Chuck Norris數到無限……然後再重複一遍”;“Jeff Dean的簡歷列出了他沒有做過的事情——這樣更短些。”)

但是,了解二者的人來說,Sanjay與他不分伯仲。“Jeff擅長提出大膽的新想法和一些雛形,”他們的老同事Wilson Hsieh說。

“Sanjay是能夠讓事情發展到最後的人。”在生活中,Jeff更外向,Sanjay更內斂。

在代碼中,正好相反。Jeff的編程令人眼花繚亂——他可以迅速勾勒出令人吃驚的想法——但是,由於它是急就章,帶著探索精神,它可能把閱聽人拋諸腦後。反觀Sanjay的代碼非常“大眾”。

“有些人,”Silverstein說,“他們的代碼太松散了。一屏代碼的信息非常少。你總是要來回滾動去搞清楚發生了什麽。

“其他人寫的代碼太密集了:“你看著它,你覺得,‘呃,我不期待讀這種東西。’Sanjay以某種方式側身其中。你看看他的代碼,你會說‘好吧,我可以弄明白’,而且,你仍然能在每頁上學到很多。“Silverstein接著說,“每當我想為Sanjay的代碼添加新功能時,好像掛鉤已經在那了。我感覺像Salieri 。我能理解它的偉大。我不明白它怎麽做到的。”

今年春天一個星期一的早晨,Jeff和Sanjay站在40號樓的小廚房裡,那裡是谷歌人工智能部門的所在地。在他們身後,白板上寫滿了矩陣代數; 一篇關於無人監督的對抗網絡的論文擺在桌上。

Jeff,穿著褪色的T恤和牛仔褲,看起來像是個好點的海灘混混;Sanjay穿著毛衣和灰色褲子。明亮的窗戶透出一片高大的松樹和遠處的田野。

無論Jeff在谷歌哪裡工作,咖啡機都會跟在後頭。在小廚房的櫃台上,一個三英尺寬的La Marzocco嗡嗡響著。 “我們要遲了,” Sanjay在咖啡研磨機上說道。此時是8點32。

喝完卡布奇諾,他們走到他們的電腦前。Jeff從他自己的辦公桌那推來一把椅子,那桌子一團亂,到了Sanjay這邊,一塵不染。他把一隻腳擱在文件櫃上,仰躺著,Sanjay盯著他們眼前的螢幕。

一共打開了四個窗口:左側是Web瀏覽器和終端,用於運行分析工具; 右邊是文本編輯器Emacs中的兩個文檔,一個是組合待辦事項列表和筆電,另一個全是五顏六色的代碼。Sanjay的一本作文筆電放在電腦旁邊。

“好了,我們要做什麽?” Sanjay問道。

“我覺得我們正在了解TensorFlow Lite的代碼大小,” Jeff說。

這是一個與機器學習相關的新軟體的重要項目,Jeff和Sanjay擔心它會冗贅;像圖書編輯一樣,他們力求精簡。為此,他們構建了一個本身要被優化的新工具。

“所以我試圖搞明白它有多慢,”Sanjay說。

“它很慢,”Jeff說。他向前傾,依舊很放鬆。

“所以那是120千字節,”Sanjay說,“大概,有,八秒鐘。”

“12萬個調用棧,”Jeff說,“不是千字節。”

“好吧,千字節的文檔,嗯——大約是,”Sanjay說。

“哦,是,不好意思,”Jeff說。

“我不是很清楚我們該為部門大小選擇怎樣的閾值,”Sanjay說。 “半個兆?”

“還行吧,”Jeff說。Sanjay開始打字,Jeff被螢幕吸引了。 “所以你只是說,如果它比我們剛剛試過的大一些……“他沒有把話說完; Sanjay用代碼回答了他。

Sanjay開車的時候時,他把手放在十點鍾和兩點鍾方向,專注地看向前方。他在鍵盤面前也是這樣。他的雙腳分開與肩同寬,他看起來好像一直在擺姿勢。他修長的手指輕輕地穿過鑰匙。一些年輕的程序員開始陸續到來。

不久,他們到達了一個小階段,Sanjay鍵入了一個命令來測試他們的進展。他看起來很疲憊,在運行程序時檢查了一下電子郵件。 測試結束了。他沒注意到。

“嘿,”Jeff說。他打了個響指,指著螢幕。雖然在談話中他特別喜歡講過時的冷笑話和雙關語,但和Sanjay一起坐在電腦前面,他會變得固執、坦率而且充滿異見。Sanjay能從容應對。

當他認為Jeff動作太快的時候,他會把手從鍵盤上抬起來並伸開手指,好像在說,“停。”(通常,Jeff是油門,Sanjay是刹車。)

這幾乎接近於他們開始爭論:在一起的二十年間,他們不記得自己高聲說過話。

Sanjay滾著椅子過來,把新模塊的代碼放入視圖中。 “就像,這些東西都可以變成一種模式,是嗎?”Jeff說。

“唔,”Sanjay同意了。

Jeff扳了下指關節。 “似乎可行。我們應該這樣做嗎?“

Sanjay很謹慎。“不,我—— ”

“所以我們會忽略一個問題?”Jeff不服氣地說。

“不,我的意思是,我們只是試著對正在發生的事情類型所了解。 所以我們可以做些記錄,對吧?“

“好啊,”Jeff愉快地說,他的心情轉眼就變了。他們一起口述了筆記。

接近午餐了,他們已經工作兩小時,中間休息了十分鐘,大部分時間都在說話。(小程序員看他們工作肯定會大為驚歎,不為別的,就為他們從沒停下或者卡住的事實。)

標準的工程操作是讓你的代碼由另一個程序員審查,但Jeff和Sanjay跳過這步,進入一個馬馬虎虎的“lgtm”階段,寫在日誌中,意思是 “我覺得還不錯。”(look good to me)

從某種意義上說,他們做的都是細枝末節。但他們的代碼是在谷歌的規模上執行的。他們擔心的千比特和微秒數在世界各地的數據中心中成倍增加,達到十億倍。在又吵又熱、倉庫大小的建築物中,一架架不停運轉的處理器要用一桶桶水來冷卻。

這段時間,Jeff因此出名——他回到家跟女兒們說,“Sanjay和我今天加快了谷歌搜索的百分之十。”

在2003年的四個月裡,Jeff和Sanjay給谷歌帶來了可以說是它最大的單一升級。他們用了一個叫做MapReduce的軟體。

這個想法是他們第三次重寫谷歌的抓取工具和索引器時蹦出來的。他們突然想到,每次他們都會解決一個重要問題:如何在不同地點分布的,單個不可靠的計算機上協調工作 。

泛化他們的解決方案意味著他們可以避免一次又一次地重審這個問題。而且這也會創建一個工具,讓谷歌的任何程序員都可以使用它來運行數據中心的機器,就好像它們是一台孤立的、行星大小的計算機一樣。

Jeff和Sanjay在一間可以俯瞰池塘鴨子的角落辦公室裡寫下了MapReduce,對一種令人費解的過程進行了梳理。在MapReduce之前,每個程序員都必須清楚如何分離和分配數據,分配工作,以及獨自搞定硬體故障。

MapReduce為程序員提供了一種思考這些問題的模式。就像一位廚師保留了食材準備環節——在搭配之前先準備——MapReduce要求程序員將他們的任務分成兩個階段。首先,一個程序員命令每台機器如何完成一項任務的“概覽圖”階段(比如,計算一個單詞出現在網頁上的次數);

接下來,她編寫了“減少”所有機器結果的指令(例如,通過計算他們的總和)。MapReduce處理分配的細節——通過這樣做來隱藏它們。

第二年,Jeff和Sanjay在MapReduce任務方面重寫了谷歌的抓取和索引系統。

不久,當其他工程師意識到它有多強大時,他們開始用MapReduce處理視頻並在谷歌地圖上渲染馬賽克般的圖像。

MapReduce簡單到新任務可以一直自我導向,自我改進 。谷歌擁有知名的“晝夜使用曲線” ——白天的流量比夜間更多——而且MapReduce任務能夠吸收閑置容量。一個做夢的大腦處理它白天的體驗。現在谷歌處理了它的數據。

早年,有蛛絲馬跡顯露出谷歌是冒充搜索公司的人工智能公司。

2001年,Noam Shazeer,一位與Jeff和Sanjay共享辦公室的人,對谷歌從另一家公司獲批的拚寫檢查技術感到沮喪:它不斷犯下令人尷尬的錯誤,例如告訴那些輸入“TurboTax”的用戶他們可能想找“大菱鮃斧頭”(turbot ax)。(大菱鮃是一種生活在北大西洋的比目魚。)

拚寫檢查軟體最多只能跟它的字典一樣好,Shazeer意識到,在網絡上,谷歌觸及到了前所未有的海量字典。他編寫了一個程序,該程序使用網絡上文本的統計屬性來確定哪些單詞可能是拚寫錯誤。

這個軟體學習到“pritany spears”和“brinsley spears”都意味著“Britney Spears”(小甜甜布蘭妮)。當Shazeer在谷歌周刊T.G.I.F上演示該程序,員工們試著愚弄它,幾乎都失敗了。

他與Jeff和工程師Georges Harik合作,採用類似技術將廣告與網頁相關聯。廣告定位帶來的資金源又汩汩流入公司的計算基礎架構。這是良性循環的開始——海量將成為谷歌智能的源泉;智能是其財富的來源;而財富是其增長的源泉——這將使公司擁有不同尋常的、甚至令人不安的主導地位。

由於一些上進的程序員使用MapReduce從谷歌的數據中獲取洞見,它可以聽寫用戶的語音郵件,回答他們的問題,自動完成查詢,以及翻譯一百種以上的語言。

這種系統是使用相對簡單的機器學習算法開發的。不過,“非常簡單的技術,當你擁有大量數據時,工作出乎意料的精彩。”Jeff說。隨著“數據,數據,數據”——用BigTable,MapReduce及其後續產品進行存儲和處理之後——成為公司的主要指令,谷歌的全球基礎架構變得更加無縫和靈活。

分布式計算的想法很古老;像“雲計算”和“大數據”這樣的概念早於谷歌的崛起。但是,通過讓普通程序員能夠智能地管理分布式程序,Jeff和Sanjay已經讓谷歌對這些技術的掌握程度上升到一個新的水準。用戶可能已經感覺到某些事情發生了變化:谷歌的雲變得越來越聰明了。

2004年,因為Jeff和Sanjay認為這些對天文學家,遺傳學家和其他需要處理大量數據的科學家有用,他們寫了一篇論文“MapReduce:大型集群的簡化數據處理”,把它公之於眾。

MapReduce論文扭轉了整個局面。廉價的硬體以及網絡服務和連接設備的增長產生了大量數據,但很少有公司擁有處理信息的軟體。

兩名工程師Mike Cafarella和Doug Cutting一直在努力擴展一個名為Nutch的小型搜索引擎,他們確信MapReduce至關重要,於是決定從零開始構建一個免費的克隆系統。他們最終稱把他們的項目叫做Hadoop,源於Cutting兒子鍾愛的一頭玩具大象。

隨著Hadoop的成熟,它被財富50強中的一半公司采納。它成為了“大數據”的代名詞。Facebook使用“Hadoop MapReduce”,眾所周知地,用於存儲和處理用戶元數據——點擊的內容,給什麽點讚,以及看了哪些廣告之類的信息。

它一度擁有世界上最大的Hadoop集群。Hadoop MapReduce幫助推動了LinkedIn和Netflix的發展。國家安全局前技術總監Randy Garrett記得他向該機構的主管Keith Alexander將軍展示這項技術。 Hadoop執行的分析任務比以前的系統快了一萬八千倍。它是一種新的情報收集方法的基礎,一些觀察家稱為“來者不拒”。

Jeff有種不安分的本質:一旦能看到解決方案的雛形,問題就變得不那麽有趣了。

2011年,當世界擁抱了雲計算,他開始與史丹佛大學的計算機科學教授Andrew Ng合作,在谷歌領導一個秘密項目,研究神經網絡——由虛擬“神經元”組成的軟體程序。在他的大學期間接觸過神經網絡;那個時候,它還無法解決現實世界的問題。

Ng告訴Jeff,這種情況正在改變。在史丹佛大學,當網絡獲得大量數據時,研究人員取得了一些令人興奮的結果。Ng認為,依賴谷歌的規模,神經網絡可能不僅有用而且功能強大。

神經網絡與傳統的計算機程序截然不同。程序員不用通常的方式指定他們的行為; 相反,它使用輸入和反饋來“學習”。

自從大學畢業以來,Jeff對神經網絡的了解並沒有太多進展,Heidi看著他們的衛生間擺滿了教科書。Jeff開始每周花一天的時間參與這個被稱為“谷歌大腦”(Google Brain)的項目。

谷歌許多人對這項技術表示懷疑。“多浪費人才啊,”他當時的經理Alan Eustace回憶道。Sanjay無法理解Jeff的舉動。 “你做的是基礎設施的工作,”他想。 “那邊你能幹什麽?”

在接下來的七年中,谷歌大腦團隊開發了神經網絡,在機器翻譯,語音和圖像識別方面打敗了最先進的技術。最終,他們取代了俗歌最重要的搜索結果和定位廣告的排名算法,谷歌大腦成為該公司發展最快的團隊之一。

2001年創立的工程師Claire Cui表示,Jeff的參與標誌著人工智能的轉折點。在谷歌:“有人相信它,有些人不相信它。Jeff證明它能行。”

人工智能已經被證明依賴於規模,這是系統工程師Jeff的成果。作為努力的一環,他領導了一個名為TensorFlow的程序開發——嘗試創建人工智能的MapReduce。

TensorFlow簡化了在一組計算機上分配神經網絡的任務,將它們變成一個大腦。2015年,當TensorFlow向公眾發布時,它成為人工智能的通用語言。

最近,谷歌的CEO Sundar Pichai宣布它為“第一家人工智能”公司並讓Jeff成為其人工智能首創部(A.I. initiatives)的負責人。

Jeff現在每周花四天時間運營谷歌大腦。他指導著三千人的工作。 他前去會談,召開周會,研究新的計算機芯片(Tensor Processing Unit,專為神經網絡設計),並幫助開發AutoML,這是一個使用神經網絡設計其他神經網絡的系統。他與Sanjay一起編程的時間只剩每周一次。

工程成就往往會抹殺自身。我們記得十八世紀偉大的探險家——James Cook, George Vancouver——但不是John Harrison,他是約克郡的木匠,經過幾十年的努力讓他的時鐘足以計算出海上的經度。

最近, Jeff和Sanjay正在Palo Alto Sol(他們經常光顧的墨西哥餐廳)享用瑪格麗塔和辣醬玉米餡餅。當Jeff拿出手機問,“Gmail什麽時候問世?”手機回答,“2004年4月1日。”

對社交場合比較敏感的Sanjay似乎不喜歡在餐桌上分心,但Jeff洋洋自得。通過一系列程序,谷歌可以交談、傾聽和回答問題,這些程序完全整合並且大部分不可見,從他的手機延伸到世界各地的數據中心。

今天,他們的角色發生了轉變。在谷歌,Sanjay作為“個人貢獻者”而知名——一個獨自工作並且不管理任何人的程序員。他因此感激不盡。

“我不想要Jeff的工作,”他說。

他目前正致力於開發軟體,使工程師能夠更輕鬆地組合和控制數十個程序——用於獲取新聞,照片,價格——在谷歌的搜索框內,用戶一輸入文本就可以開始運行。

他每周要會見一次 “區域技術主管”小組——谷歌的工程絕地委員會——做出影響整個公司的技術決策。如果谷歌是一棟房子,Jeff是在建另外的屋子。而Sanjay正在支持架構,加固橫梁,擰緊螺栓。

與此同時,在他們的周一編程會議上,兩人做出了新嘗試。這是一個人工智能項目:Jeff說,嘗試培養一種“巨型”機器學習模型來完成數千或數百萬種不同的任務。Jeff多年來一直在思考這個想法; 最近,他認為這是可能的。他和Sanjay計劃建立初步模型能讓一個團隊圍繞它發展。在軟體領域,領先的最佳方式是使用代碼。

“我覺得他們想念對方了,”Jeff的妻子海蒂說。這時候他們的合作漸漸放緩,兩人每周五開始聚餐。

三月的一個星期天,Jeff和Sanjay約在Cupertino(蘋果位於舊金山的總公司)門口去遠足。天朗氣清,但太陽下有點熱。

Jeff開著保險杠上貼有2016年Bernie貼紙的藍色特斯拉跑車,來到小道上。緊隨其後的Sanjay有他自己的特斯拉,一個紅色的Model S。Sanjay早上讀了書。Jeff踢了足球。(與他的小腿相連的裝置告訴他,他跑了7.1英裡。)

從那年3月建立索引開始,時隔20年,Jeff就像一個退役的耐力運動員,他的皮膚被太陽曬老了。Sanjay似乎很難顯老。

這是一條穿過茂密森林的6英裡長的環路。Jeff一路領先。在樹林裡,他們回憶起谷歌的成長速度。Sanjay回憶說,在公司第一次爆發性增長的時候,一名水管工在男廁所的一個位子上裝了兩個廁具。 “我記得Jeff的評論,”他說。 “‘兩個人比一個好!’”他笑道。

他們從樹林裡開下來,進入乾燥、裸露的鄉村。一隻土耳其禿鷲飛過頭頂。

“這坡比我想的要陡,”Jeff說。

“我記得有人說這裡這裡遠足算平緩的,”Sanjay說。

“我想這就是那邊沒有自行車道的原因,”Jeff說。

他們爬坡回了樹林裡。迂回曲折之間,Jeff瞥見了樹林外的風景。 “我們在某些方面會有很好的遠見,”他說。

小徑通向山頂,高而寬,樹木漸少,能夠俯瞰全景。地平線上籠著一片陰霾。然而,他們仍可以遠眺南面的聖克魯斯山脈和東面的使命峰。

“Sanjay,那是你的辦公室!”Jeff說。他們站在一起,望著山谷。

譯指禪簡介:專注於翻譯國外泛互聯網領域的優質長文,精選高質量信息源,為國內互聯網用戶提供深度思考的視野和優質閱讀體驗。

譯指禪譯者:雲使

媒介·文字·身體

讓我穿過朝夕滾滾向前。

微信號:TheCloudMessenger

往期精選:

Tesla:與超級工廠生死與共

“一塊螢幕”,到底會不會影響孩子的生活?

樂高是如何進化成玩具界的蘋果的?

谷歌20周年年鑒——偉大的公司如何改變世界?

智能手機之爭的下半場——語音助手之戰

獲得更多的PTT最新消息
按讚加入粉絲團