“光在真空中的速度曾经是大约每小时35英里,然后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真的拥有超人的力量的话,那么这种能力并不能在瞬间就把事情做到完美。这是一种能够根据事情的不同级别进行权衡、优化,及处理问题的能力。换个角度来说,它是一种能发现机会,并把事情在很短的时间内做到尽可能好,而不是一开始就尽全力追求完美的能力。在硅谷,这可比拿着冲锋枪向牛仔们扫射酷多了。