谷歌大牛Jeff Dean是如何成為互聯網戰神的
英文原文:The Optimizer.How Google’s Jeff Dean became the Chuck Norris of the Internet.
“光在真空中的速度曾經是大約每小時 35 英里,然后 Jeff Dean 花了一個周末優化了基礎物理學。”——出自“關于 Jeff Dean 的事實”
其實,“關于 Jeff Dean 的事實”這個G+ 帖中描述的并非是真實的。不過有人大費周折為他建立了一個類似于“關于 Chuck Norris 的事實” 這樣的網站,這倒是件不同尋常的事。這是因為 Jeff Dean 是一位軟件工程師,而軟件工程師們通常是不會像武術界的戰神 Chuck Norris 那樣的。一方面,他們不是獨行俠,軟件開發從本質上來講是一個協作過程。另一方面,他們也從來不會像這個視頻里面的 Chuck Norris 那樣用沖鋒槍來打牛仔。
注:Chuck Norris(查克·諾里斯)是空手道世界冠軍、美國電影演員。他有另一個更為人所共知的譯名“羅禮士”,出自功夫名片《猛龍過江》。 他發展電影事業初期,在李小龍執導的武打電影《猛龍過江》中飾演一名空手道高手 Colt,與李小龍在羅馬斗獸場決斗,公認是經典的武打場面。(摘自維基百科)
</blockquote>
Jeff Dean
然而,在 2007 年的愚人節,一些慕名而來的年輕谷歌工程師覺得應該給 Jeff Dean 制作一個網站,來贊揚他在編程方面的成就(譯者:以下都只是玩笑,并不是真的)。例如:
- 編譯器不會向 Jeff Dean 給出警告的,Jeff Dean 會給編譯器警告的。
- Jeff Dean 是直接寫二進制代碼的,然后他寫了源代碼,作為給其他開發人員看的文檔。
- 當 Jeff Dean 考慮人體工程學的問題的時候,這是為了保護他的鍵盤。
- 有一天當 Jeff Dean 在優化一個功能時,他被迫發明了異步調用的 API。這樣的話這個功能可以在它被調用之前就可以返回結果了。
</ul>關于 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 個處理器用于對 油Tube 視頻進行無人干攝的學習,來得出如何識別一只貓的方法。這個看起來是用了很多計算機來得出一個非常基本的結果,但是這個試驗能夠幫助我們為下一代的人工智能技術打下基礎。未來的人工智能技術將在許多的潛在應用中發揮作用,這些包括使用了個人助手技術的 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 真的擁有超人的力量的話,那么這種能力并不能在瞬間就把事情做到完美。這是一種能夠根據事情的不同級別進行權衡、優化,及處理問題的能力。換個角度來說, 它是一種能發現機會,并把事情在很短的時間內做到盡可能好,而不是一開始就盡全力追求完美的能力。在硅谷,這可比拿著沖鋒槍向牛仔們掃射酷多了。
翻譯: 伯樂在線 - Lex Lian 譯文鏈接: http://blog.jobbole.com/47726/
來自: blog.jobbole.com本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!