谷歌大牛Jeff Dean是如何成為互聯網戰神的
”——出自“關於 Jeff Dean 的事實” 其實,“關於 Jeff Dean 的事實”這個G+ 帖中描述的並非是真實的。不過有人大費周折為他建立了壹個類似於“關於 Chuck Norris 的事實”這樣的網站,這倒是件不同尋常的事。這是因為 Jeff Dean 是壹位軟件工程師,而軟件工程師們通常是不會像武術界的戰神 Chuck Norris 那樣的。壹方面,他們不是獨行俠,軟件開發從本質上來講是壹個協作過程。另壹方面,他們也從來不會像這個視頻裏面的 Chuck Norris 那樣用沖鋒槍來打牛仔。註:Chuck Norris(查克·諾裏斯)是空手道世界冠軍、美國電影演員。他有另壹個更為人所***知的譯名“羅禮士”,出自功夫名片《猛龍過江》。 他發展電影事業初期,在李小龍執導的武打電影《猛龍過江》中飾演壹名空手道高手 Colt,與李小龍在羅馬鬥獸場決鬥,公認是經典的武打場面。(摘自維基百科) Jeff Dean 然而,在 2007 年的愚人節,壹些慕名而來的年輕谷歌工程師覺得應該給 Jeff Dean 制作壹個網站,來贊揚他在編程方面的成就(譯者:以下都只是玩笑,並不是真的)。例如: 編譯器不會向 Jeff Dean 給出警告的,Jeff Dean 會給編譯器警告的。 Jeff Dean 是直接寫二進制代碼的,然後他寫了源代碼,作為給其他開發人員看的文檔。 當 Jeff Dean 考慮人體工程學的問題的時候,這是為了保護他的鍵盤。 有壹天當 Jeff Dean 在優化壹個功能時,他被迫發明了異步調用的 API。這樣的話這個功能可以在它被調用之前就可以返回結果了。關於Jeff Dean 的壹個真正的事實是:妳必須是壹個計算機高手,才能了解人們說的很多關於 Jeff Dean 的笑話。(對此有興趣的讀者,Business Insider 網站提供了壹些關於他的比較流行的笑話的解釋。)如果妳沒有計算機科學的背景知識,那麽妳就很難理解那些玩笑中談到的那些他的虛假成就,更不用說理解他在工作中真正的成就了。Dean 親手打造的系統,例如,MapReduce、BigTable、Spanner 等,對於眾多 Google 用戶來說並不知道是來源於 Goolge 的。但是,這些程序都是 Google 和現代互聯網存在的基石。他現在所工作的壹些項目,很有可能會再次為信息技術帶來革命。 當妳在思考是誰創造了當今互聯網的時候,妳可能會想到很多公司的創始人和 CEO,比如:蒂姆·伯納斯 –李(Tim Berners-Lee)、馬克·安德森(Marc Andreessen)、拉裏·佩奇(Larry Page)和謝爾蓋·布林(Sergey Brin),也許是馬克·紮克伯格(Mark Zuckerberg)。這是有道理的,這些人中的每壹位都發明了壹種產品或框架,塑造了我們今天使用互聯網的方式。 同時,在這些已從繁重的日常工作中解脫出來的巨人陰影下,是壹幫不知名的開發人員,在鍵盤上每日敲打出來給我們使用的產品和系統。同其他行業不同的是,在高科技行業,這些人通常是不可替換的。壹個出色的會計可能會幫妳節省5% 的個人所得稅。壹個出色的棒球選手的上壘率也就比壹般球員高出那麽壹點點(譯者:棒球運動中壹般會用上壘成功率,擊球成功率等來衡量球員的水準)。但是壹個出色的軟件開發人員在壹周中的工作可能需要壹支近 10 人的團隊花幾個月才能完成。這種差異是指數級別的。這個並不是壹個關於 Jeff Dean 的事實,而是矽谷的高科技行業的常識,也就是為什麽最好的公司會花如此大的代價來吸引頂尖人才。 在Dean 1999 年中加入 Google 的時候,他已經擁有了美國頂尖年輕計算機科學家的榮譽。在家用計算機剛開始普及的時候,Dean 說他總是在尋找能夠在壹臺給定的機器上不斷追尋極限性能的方法。當他還是壹個高中生的時候,他編寫了壹個軟件來分析大量的流行病數據。據他說,他的軟件比是當時專業軟件快 26 倍。這個系統稱之為 Epi Info,被美國疾病控制中心(Centers for Disease Control)采納並翻譯成 13 種語言。當他在讀計算機科學博士的時候,他研究的是編譯器,用來將程序源代碼翻譯成計算機能夠執行的語言。他說到,“我總是喜歡運行得快的代碼”。 不過Dean 並不是安於現狀的人,他也不想把壹輩子都花在編譯器上,所以他後來離開了學術界。三年不到,他加入了當時只有 20 個人的 Google。(根據 Steven Levy 的《In the Plex》壹書, 作為搜索初創企業的 Google,當時覺得 Dean 是壹個來之不易的人才。)他為早期的 Google News 和 AdSense 做出重大貢獻,其中 AdSense 這壹廣告產品改寫了互聯網公司的遊戲規則。在此之後,他轉而關註了公司核心的問題之壹:擴展性。 Google 公司基礎算法的最初想法來自於 Page 和 Brin, 他們兩在當時都算是頂級的開發人員。在 90 年代末,他們創造了 PageRank 算法,壹種在用戶給定搜索查詢的時候返回最相關搜素結果的算法。對於搜索結果相關性的專註讓 Google 壹舉超越了 Yahoo, AltaVista 以及當時處於領先地位的其他各個搜索引擎。不過隨著 Google 變得越來越成功的同時,它也碰到了壹項巨大的技術挑戰。Dean 回憶道,“我們不能足夠快地部署更多的機器來響應需求”。 所以Dean 和他的同事們,包括另壹位出色的程序員 Sanjay Ghemawat 壹起找到了解決方案。這個問題就像他在高中時對待 Epi Info 壹樣,看起來象是壹個硬件問題。Ghemawat 幫助帶領了壹個團隊開發了谷歌文件系統(Google File System, GFS),使得超大型的文件能夠分布地被存儲在眾多廉價的服務器上。然後 Dean 和 Ghemawat 壹起開發了壹個稱之為 MapReduce 的編程工具,來幫助開發人員有效地使用這些機器並行處理龐大的數據集。正像編譯器幫助程序員在編寫程序的時候不用考慮 CPU 是如何處理該程序壹樣,MapReduce 使得 Google 的開發人員在調整搜索算法或者增加新功能的同時不必擔憂如何將這些運算並行化,也不必擔心如何處理硬件的故障。 Dean 和 Ghemawat 的方法如此之強大,當他們在2004 年的壹個會議上發表了壹篇研究論文之後,這個方法馬上就變成了業界的標準。直到今天,MapReduce 成為了眾多其他項目的重要基石,其中之壹就是著名的開源框架 Hadoop。而正是 Hadoop, 造就了業界中新的流行語“大數據”。從在線旅行到能源勘探等不同的領域中都會用到大數據的方法。而正當 Google 開始在壹些核心的應用中從 MapReduce 進壹步擴展到其他新的編程模型時,Dean 說他還是看到許多夏季實習生到 Google 後開始新項目的時候,都會大量地開始使用 MapReduce。 MapReduce 正是 Google 的創始人之壹 Page 所說的10 倍效應的壹個好例子。10 倍效應說的是比原來的好 10 倍,而不是比原來做得好 10%。MapReduce 並沒有使得某壹種特定類型的運算更快壹點,而是幫助了 Google 的每壹位開發人員可以做到他們以前做不到的事情。 Dean 的其他幾個項目也有類似的指數效應。在谷歌文件系統的基礎上,他和 Ghemawat 創建了壹個分布式數據庫系統,名為 BigTable。 BigTable 可以處理 1PB 的數據(1 PB=1 千萬 GB。)( 譯者:開源社區也有類似的項目, 基於 Hadoop 之上的 Hive)之後他們又進壹步開發了被稱之為世界上最大的單壹數據庫的 Spanner 系統。連線雜誌(The Wired)的 Case Metz 說,通過使用創新的時間同步方式,Spanner 的物理存儲雖然跨越了全球不同的數據中心,但操作起來就像是在壹個地方。換句話來說,它能夠使得全球的數據中心中不同的信息保持壹致,即使壹個特定的更新請求可能會需要不同的時間達到不同的數據中心。Metz 又說道,在 Spanner 被報道之前,從來沒有人覺得這種系統是能夠搭建出來的。 現在看起來,這些關於 Jeff Dean 真正的事實看起來有點像是假的壹樣。Dean 自己也會對這種情況笑起來,說這個有點尷尬,但同時也壹種被恭維的感覺。但他又說,要記住的是,他的這些工作上真正的成就,總是通過和不同的人***同合作得來的。 幾乎每天早上,他都會到位於加利福尼亞州,Mountain View 的 Google 總部上班,而且總是坐下來和同壹夥人壹起喝咖啡。他估算到,這些年來我們大概壹起消滅了 20,000 杯卡布奇諾吧。這些人並不總是在壹起工作。事實上,有些人已經搬到了 Google 園區另壹邊不同的辦公室裏。不過當他們聚在壹起討論他們正在做的事情的時候,壹些人的問題總是能激勵其他人的新想法。這些咖啡閑聊使得 Dean 把他在優化、並行計算、軟件架構等方面的經驗運用到眾多不同類型的項目中去。這些使得他產生了足夠的雄心和自信心。作為他長期合作夥伴的 Ghemawat 說,“他總是對於我們能做到什麽程度充滿了熱情和樂觀,沒有什麽能夠阻礙他”。 他最近的工作可以很好地說明 Google 接下來會做什麽。去年,他和斯坦福大學機器學習領域的專家、Coursera 創始人之壹的 Andrew Ng 壹起,幫助了 Ng 的研究生 Quoc Le 進行了壹項前所未有的無監督機器學習的試驗。這個屬於 Google 公司秘密的 Google X 臭鼬項目下(譯者:指秘密的創新項目)的試驗,將 16,000 個處理器用於對 YouTube 視頻進行無人幹攝的學習,來得出如何識別壹只貓的方法。這個看起來是用了很多計算機來得出壹個非常基本的結果,但是這個試驗能夠幫助我們為下壹代的人工智能技術打下基礎。未來的人工智能技術將在許多的潛在應用中發揮作用,這些包括使用了個人助手技術的 Google Now,以及對 Google 眼鏡項目(Project Glass)會有很大幫助的圖像搜索功能等。 Jeff Dean 可能正的會發明壹些不可思議的東西,就像“關於 Jeff Dean 的事實”中提到的只有 0 和 1 的特殊鍵盤(譯者:這種鍵盤是不存在的,這個網頁上的文章在開玩笑說 Jeff Dean 是直接用二進制的機器代碼寫程序的。)Jeff Dean 承認他並不是機器學習的專家,不過他樂於使用它在搭建可擴展、高可用系統方面的經驗來幫助這壹方面的研究。 和“關於 Jeff Dean 的事實”說的相反的是,Dean 說在很多情況下解決問題的最佳方法並不是簡單地壹坐下來就開始寫程序。他的方法總是在開始的時候需要進行壹些簡單的計算,來找到對於特定過程的質量和速度之間的最佳平衡點。他說,從機器翻譯到搜索質量的許多領域,妳總是試圖權衡妳能夠對每壹個查詢所做的計算量。也許妳不能找到最理想的解決方案,但是我們總是可以通過某種近似的方式,通過1% 的計算,得到 98% 的好處。 Dean 經常做這類計算,以至於他給出了壹個“每個計算機工程師都應該知道的數字列表”。其中包括諸如在光速情況下,從加利福尼亞到阿姆斯特丹發送壹個網絡包要花多少毫秒,(150 毫秒)。將這些數字牢記在心, 在 20 分鐘內,妳就能從白板上區分在 3 個設計中哪壹個會是最好的。他又說到,如果妳不能快速地進行計算?把所有這些數字近似地轉換為 2 的次方吧,這樣做乘法的時候會比較容易。 如果Dean 真的擁有超人的力量的話,那麽這種能力並不能在瞬間就把事情做到完美。這是壹種能夠根據事情的不同級別進行權衡、優化,及處理問題的能力。換個角度來說,它是壹種能發現機會,並把事情在很短的時間內做到盡可能好,而不是壹開始就盡全力追求完美的能力。在矽谷,這可比拿著沖鋒槍向牛仔們掃射酷多了。