雷锋网按,在 Google 从创业公司成长为一代巨头的过程中,有数不清的工程师参与,其中 Jeff Dean 和 Sanjay Ghemawat 是仅有的两位达到 Google Senior Fellow 级别(Level 11)的超级工程师,而且他们二人还是相交甚厚的好朋友。由此,《纽约客》杂志通过一篇长文对二人的传奇故事进行了描述,雷锋网对这篇文章进行了不改变原意的编译。
2000 年 3 月的一天,6 位 Google 最强工程师在公司的临时“战情室”集结,当时的搜索巨头遇到了史无前例的大麻烦。新千年来临前的那个 10 月,Google 的核心系统(即抓取 Web 网页构建索引的系统)突然瘫痪了。虽然用户还是能在 Google 搜索,但他们看到的其实都是 5 个月前的过时数据。
事实上,当时的情况比 Google 工程师们意识到的还要糟糕。Google 联合创始人 Larry Page 和 Sergey Brin 都开始求爷爷告奶奶,要从雅虎借搜索引擎了。而且此前他们还向用户夸过口,要让 Google 的索引比此前大上 10 倍并与互联网完全同步。如果当年他们失败了,后果可想而知。
这个临时“战情室”相当简陋,为了尽快开展工作,Google 工程师们直接将门架起来当作桌子办公了。当时,27 岁的 Craig Silverstein 也搬到了“战情室”,作为 Google 第一名员工,他在 Brin 创业初期就加入了,而且还着手改写了大量代码。
经历了四天四夜的奋战,他和一位名叫 Bogdan Cocosel 的罗马尼亚工程师却毫无收获。“当时我们做的分析都毫无意义。”Silverstein 回忆道。“哪点都看着不对劲,但我们却找不到原因。”
战情室里可不止以上两位,才加入 Google 没几个月的 Sanjay Ghemawat 也在埋头奋战,当然这里还有引荐他进入搜索巨头的老同事 Jeff Dean。这两位程序员是超级铁哥们,他们甚至爱上了一同写代码。在“战情室”里,Jeff 直接把工位搬到了 Sanjay 身边。后者敲着键盘,前者则在一旁纠正。
在对索引进行一番研究后,他们发现搜索时一些关键词直接消失了。比如你去搜索“邮箱”,就什么结果都搜不出来。有时,搜索结果还是混乱无序的状态。不过,即使经过几天的“排雷”,两人还是没能发现那个致命 Bug。
程序员有自己的工作逻辑,他们有时会将软件概念化为不同层级组成的架构,而冒险进入架构底层,就意味着要和电力与硅元素打交道了。转眼间,在“战情室”工作的第五天到了,Jeff 和 Sanjay 开始怀疑问题并非出在软件逻辑上,而是源于物理层面。于是他们将混乱的索引文件转换为最原始的形式:二进制代码。他们想看看这些机器在搞什么鬼。
这一试还真是出现了奇迹,Sanjay 发现,原来该用 0 表示的数字却用了 1。Jeff 和 Sanjay 把所有串行的命令整合在一起后,它们发现每个命令都有问题,机器的内存就是这样被搞垮的。
几个月以来,Google 的硬件错误越来越多,而这几个月正值它们计算设施的高速扩张期。一般来说,计算机硬件崩溃的可能性很小,不过基数大了之后,事情就没那么简单了。主板过热、连接线松脱或硬盘坏道都会让硬件崩溃。同时,机房里有些设备可能从来就没转起来过,而另一些则毫无征兆的卡了起来。当然,我们还得考虑到多变的环境因素,一次超新星爆发释放的宇宙射线可能就会损毁大量计算机芯片,让 0 和 1 对调。
其实类似 NASA 和金融机构等特殊单位的计算机系统都能扛住这些问题,但当时的 Google 还是新创公司,它们购买的便宜计算机可没这些附加功能。此外,随着计算集的不断扩大,那些本不该诞生的硬件问题也成了不可避免的麻烦。
找到根由后,Jeff 和 Sanjay 赶紧开始着手修复。不久之后,新的索引就完成了,临时“战情室”也宣告解散。此役之后,Google 一号员工 Silverstein 变得异常困惑,他是个出色的 Bug 猎人,但这次却没有自己同事挖的深。
2000 年 3 月份的那次索引崩溃发生前,Google 系统的源代码一直都是联合创始人在斯坦福写出来那一套。事实上,Page 和 Brin 并非专业程序员,他们是学术界里搞搜索技术实验的人。一旦他们的网络爬虫崩溃,屏幕上并不会显示什么有用的诊断信息。一些早期的 Google 员工会参考 Page 和 Brin 写的 BigFiles 软件,不过他们花几天时间搭建起来的索引代码一旦出了问题,一切就得重头再来。
用硅谷的话术来说就是,Google 搜索引擎根本无法规模化。
在用户看来,自己是在“搜索网络”,但事实上没有,是搜索引擎在网络索引中帮用户抄了个近道而已,它才是真正的地图。1996 年时的 Google 还没改名(当时叫 BackRub),那是 Page 手中的秘密地图还很小,能轻松装进计算机里。不过 4 年后的 3 月份,世界上最牛的超级电脑都 Hold 不住这张地图了。Google 唯一能做的就是不断购买计算机,然后将它们组到计算机编队中。
作为一家创业公司,计算机的外壳对 Google 来说完全是笔资产浪费,因此它们的机房堆得都是各种“内脏”。由于硬件故障,Google 堆在圣克拉拉一座建筑里的 1500 台设备中其实只有 1200 台能转起来,而各种随即出现的错误让系统效率不断降低。为了生存下来,Google 必须无缝连接起这些经常闹脾气的设备。
刚刚立了大功的 Jeff 和 Sanjay 扛下了这个重担,而在苹果主导了 Mac 电脑开发的 Wayne Rosing 则成了他们的副手。这位 2000 年 11 月才加入 Google 的工程师表示,Jeff 和 Sanjay 真是有领导才能,他们不但每周疯狂工作 90 个小时,还专门写了代码防止单个硬盘崩溃对整个系统的拖累。同时,他们还在爬虫过程中加了检查点,即使出了问题工程师也不用完全推倒重来。通过新的编码和压缩方案,Jeff 和 Sanjay 更是成功让系统容量翻番。
2011 年,他们更是证明,Google 的索引可以直接存储在 RAM 上,而非传统的机械硬盘。这一发现直接重塑了 Google 的未来,毕竟挑剔的用户需要更快的搜索速度。不过,即搜即有的前提是强大的算力,而算力是要花钱的。在关键时刻,Jeff 和 Sanjay 又站出来成了中流砥柱,他们要用软件“穿针引线”。
2005 年 Rosing 离开后,Alan Eustace 成了 Google 工程团队负责人。“想要快速解决那些反常的问题,你就得掌握隐藏最深的细节。”Eustace 说道。攻克了无数难题的 Jeff 和 Sanjay 对于计算机的细节可谓熟悉到了字节。Jeff 就曾写过一个清单,在他看来清单上的延迟数字是每个程序员都应该烂熟于心的。事实上,这些数字没人懂,它们是深嵌于 Jeff 和 Sanjay 大脑的专属产物,而两人给出的 Google 核心软件让系统容量增长了多个数量级。与此同时,Google 数据中心的技师们也对 Jeff 和 Sanjay 言听计从,他们开始按照软件生成的说明来更换硬盘、电源和内存条等。
熟悉 Google 的人都知道,搜索巨头的工程师分为 10 个等级,能升到 10 级,你就是业内最顶尖的专家,这个荣誉能跟随你一辈子。不过,功勋卓著的 Jeff 和 Sanjay 当然要特事特办,他们是 Google 唯二拿到 11 级的超级工程师。
Google的园区坐落在离山景城几分钟车程的地方,这里建筑低矮,没什么设计特色,彩色玻璃倒是不少。去年夏天的一个周一,忙完了商务工作的 Jeff 和 Sanjay 一起去名叫 Big Table 的餐厅吃饭,而这个餐厅的名字就与他俩携手开发的一套系统有关。
接受采访时,他们就像一对夫妇,两人的共同回忆撑起了整个故事线。
“我们可都是手写代码。”Sanjay 说道。“我们不停的进行修改、重写,但始终觉得跟上个月没什么区别。”
“或者说只是索引数据中的传递方式略有不同。”Jeff 补充道。
“而这些细小的差别,就是我们的突破口。”Sanjay 说道。
“这才是本质。”Jeff 再次补充道。
“我也不知道两人协作的模式是怎么建立的。”Sanjay 回忆道。
“好像加入 Google 之前就开始了吧。”Jeff 说道。
“但为什么要两人共用一个电脑呢?”Sanjay 问道。
“因为咱俩的办公室中间有一家冰淇淋店。”Jeff 回应道。
现在的 Jeff 已经有了两个女儿,但 Sanjay 却依然未婚。每当 Jeff 家出外旅行,Sanjay 都会加入他们,每周五的聚餐更是雷打不动。
社会学家 Michael P. Farrell 2001 年就曾在书中指出:“建立新愿景基础的大多数脆弱见解不是在整个团队聚集在一起时出现的,也不是在成员单独工作时,而是在他们两两合作并互相支持的情况下出现的。”就连 John Lennon(约翰·列侬,英国摇滚乐队“披头士”成员) 都表示,自己创作时不能没有 Paul McCartney(前披头士乐队成员),毕竟一个人很容易走进死胡同,而太多人则会抉择困难。
在大多数情况下,双人合作一般是“一人导航,一人驾驶”,但 Jeff 和 Sanjay 却有些不同,他们有时会像一颗心的两半。
1968 年 7 月,Jeff 在夏威夷出生,由于父母是两位医学专家,因此 Jeff 年幼时经常搬家。不过,他接触电脑很早,高中就开始做流行病的数据采集项目了,而且这个数据库最终卖了成千上万份,挽救了大量生命。
攻读博士时,Jeff 主攻编译工具,它能将人写的代码转成为电脑优化的机器语言。说实话,这是份相当枯燥的工作。
在考上康奈尔大学前,Sanjay 根本没摸过电脑。这位生长于印度北部工业城市的技术天才有个做植物学教授的老爸,同时他们家还是个书香世家,多位子女都考上了美国知名大学,Sanjay 甚至一直活在优秀哥哥的阴影中无法自拔。
在麻省理工读研究生时,Sanjay 认识了不少死党,他是个安静但骄傲的人,不过对约会好像不感兴趣。
在 Google,Jeff 的知名度可高多了,不过懂行的人都知道,Sanjay 也是个一等一的天才。“Jeff 在想点子和搞原型产品上确实很牛,而 Sanjay 则是能坚持到最后的人。”两人的老战友 Wilson Hsieh 评价道。在生活中,两者一个外向,一个内向。不过,写代码时却完全相反。Jeff 的代码太过于先锋,而 Sanjay 则更平易近人。
Silverstein 曾表示,有的程序员代码写的太松散,你很难看出他的意图,有的又写的太紧凑,看着很累。Sanjay 正好处在两者中间,一切都恰到好处。“当你想在他的代码中加些新功能时,就会发现 Sanjay 已经预留了位置。这天分真是无敌,但我始终想不通他是如何做到的。”Silverstein 解释道。
2003 年,Jeff 和 Sanjay 在 4 个月内就让Google来了次脱胎换骨的大升级,而催化剂就是一款名为 MapReduce 的软件。其实这个点子在两人重写 Google 爬虫和索引器时出现过三次了,而每次他们都解决了重大难题,即协调不同地理分布的大量独立电脑进行工作。这一解决方案横空出世后,就意味着 Google 工程师无需一遍遍重新审视同一个问题了。同时,这项技术也成了一款工具,让 Google 的任何工程师都能操控数据中心的机器。
对常人来说,MapReduce 绝对算令人费解的复杂玩意。在这款软件诞生前,程序员必须找出分割和分发数据以及安排工作的方式,同时还得自行记录硬件错误。有了 MapReduce,程序员就获得了思考这些问题的结构化方法,同时它还通过隐藏数据掌控了数据分发的细节。
第二年,Jeff 和 Sanjay 就用 MapReduce 重写了 Google 的爬虫和索引系统。当其他工程师发觉这款软件的厉害之处时,这两位大神已经开始用它升级 Google Maps 了。
在这里,恐怕已经有人能看出,Google 其实只是个假装搞搜索的 AI 公司。2001 年时,曾与 Noam Shazeer 并肩奋战的 Noam Shazeer 发现,Google 居然从其他公司雇佣了大量拼写检察院,而这也是一盘大棋的一部分。Shazeer 借助文本统计特性写了一个程序,用来确定搜索框中到底哪个词拼错了。在公司进行展示后,大部分程序员都不知其所以然,但 Jeff 和 Georges Harik 加入后,Shazeer 成功将类似技术融进了 Google 的广告系统,而广告是 Google 的生命线。
自此,Google 的反馈回路开始有了雏形,而它是 Google 的智慧、财富与增长来源。同时,也是 Google 统治的权杖。
随着 MapReduce 的普及,Google 便获得了无穷的神力,它能转录用户的语音邮件、回答他们的问题、自动补充用户搜索并翻译超过 100 种语言。虽然这套系统的基础并非完善的机器学习算法,但当数据足够海量时,工作也会变简单。也就是说,数据成了Google的最高指令。
事实上,现在比较红的几个概念(如分布式计算、云计算和大数据)Google诞生前就有。不过,没有 Jeff 和 Sanjay 的软件,Google 对它们的掌控根本达不到现在的级别。用户恐怕也能感受到一些改变,那就是Google的云服务越来越智能了。
2004 年时,为了方便天文学家、基因学家和其他需要处理大量数据的科学家,Jeff 和 Sanjay 专门写了一篇论文。这篇有关 MapReduce 的论文简直是天外救星,廉价硬件和移动服务的普及催生了大量数据,但却很少有公司能通过软件处理这些信息。
后来,Mike Cafarella 与 Doug Cutting 干脆做了个 MapReduce 的免费复制版 Hadoop,现在几乎成了各大公司的标配。同时,Hadoop 也成了“大数据”的代名词。眼下,Facebook 存储并处理用户元数据用的就是“Hadoop MapReduce”。除此之外,这套工具还是领英和 Netflix 的得力助手。美国国家安全局(NSA)前技术主管 Randy Garrett 当年也被这项技术折服过,它在分析任务时居然比 NSA 的老系统快了 18 倍,同时还也催生了新的情报搜集方式。
Jeff 是个闲不住的人,一旦他能找到问题的答案,就会对这个问题失去兴趣。2011 年时,云计算的概念最为火爆,那时他就与吴恩达合作在 Google 搞了个秘密项目,着力研究神经网络。其实 Jeff 大学还没毕业时就接触过类似技术,但当时的技术搞神经网络太不现实。现在可不一样了,吴恩达告诉他斯坦福大学已经有了不少进展。如果能借助 Google 巨大的体量,神经网络就能爆发出巨大的威力。
神经网络可不是传统的计算机程序,它们表现如何并不取决于程序员,相反它们靠输入和反馈数据来提升。大学毕业后 Jeff 就没怎么接触过神经网络,好在他学习能力强。项目(Google Brain)开始后他每周都会分出一天时间全身心投入,不过当时许多 Google 员工对这项技术满是怀疑,认为让 Jeff 主管这个项目是浪费人才,就连 Sanjay 都无法理解 Jeff 的行为。
在后来的 7 年里,Google Brain 团队的神经网络在语音、翻译和图像识别领域一骑绝尘,让其他公司无法望其项背。最终,这项技术反哺给了 Google 搜索,再次稳固了它们在业内的地位。同时,Google Brain 也成了公司内部增长最为迅速的团队。
2001 年加入的工程师 Cui 就表示,Jeff 的加入是 Google AI 项目的转折点。
作为业内最顶尖的系统工程师,Jeff 还打造了 AI 界的 MapReduce——TensorFlow。2015 年 TensorFlow 首次亮相后,就成了 AI 的通用语。最近,Google CEO Sundar Pichai 明确了公司“AI 为先”的战略,Jeff 也成了 AI 部门的绝对领导。
现在的 Jeff 每周 4 天时间在 Google Brain 上,他手下拥有精兵强将 3000 多人。由于工作繁忙,现在他每周只能和 Sanjay 写一次代码了。
现在的 Jeff 和 Sanjay 走上了不同的道路,不善社交的 Sanjay 对语音助手完全不感冒,但 Jeff 却对自己的工作得意洋洋。
现在的 Sanjay 是 Google 的“独狼”,他独自工作,也不参与管理。这样的状态让他很高兴,Sanjay 可不想做 Jeff 的工作。在 Google,他主要为工程师们开发新软件,帮他们更轻松的整合并控制数十个程序。不过,每周他还是会参加领导小组的会议,做一些影响公司未来的决定。如果说 Google 是一座房子,那么 Jeff 负责装饰,而 Sanjay 则主管房屋结构,同时他还要加固螺丝和地基。
两位黄金搭档最近也有了新的 AI 项目,他们准备训练一个巨型的机器学习模型来做数百万种工作。对于这个项目,Jeff 已经谋划多年,有了 Sanjay 助力,原型产品落地就能快上很多。
Jeff 妻子 Heidi 也表示,“他们都开始想念当年亲密无间的时光了。”
via New Yorker,雷锋网编译