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

谷歌大牛Jeff Dean是如何成为互联网战神的的更多相关文章

  1. [置顶] 谷歌大牛 Jeff Dean 是如何成为互联网战神的

    谷歌大牛 Jeff Dean 是如何成为互联网战神的 原文链接: Will Oremus   翻译: 伯乐在线- Lex Lian 译文链接: http://blog.jobbole.com/4772 ...

  2. 坊间流传着的关于谷歌大牛Jeff Dean的传说

    Jeff Dean,Google的软件架构天才.Google大型并发编程框架Map/Reduce作者. 在Google,公司最顶尖的编程高手Jeff Dean曾发明过一种先进的方法,该方法可以让一个程 ...

  3. 谷歌大神Jeff Dean:大规模深度学习最新进展 zz

    http://www.tuicool.com/articles/MBBbeeQ 在AlphaGo与李世石比赛期间,谷歌天才工程师Jeff Dean在Google Campus汉城校区做了一次关于智能计 ...

  4. Jeff Dean

    "--出自"关于 Jeff Dean 的事实" 其实,"关于 Jeff Dean 的事实"这个G+ 帖中描述的并非是真实的.不过有人大费周折为他建立了 ...

  5. 谷歌大牛 Rob Pike 的 5 个编程原则

    谷歌大牛 Rob Pike 的 5 个编程原则 简介: Rob Pike,目前谷歌公司最著名的软件工程师之一,曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作 ...

  6. Jeff Dean专访,有不少干货

    <专访Jeff Dean:我们要推动机器学习再上一层楼> 文件链接如下: Link https://arxiv.org/ 有意思的是,里面提到的 arXiv网站,一个能够用来证明论文上传时 ...

  7. 学习索引结构的一些案例——Jeff Dean在SystemML会议上发布的论文(下)

    [摘要] 除了范围索引之外,点查找的Hash Map在DBMS中起着类似或更重要的作用. 从概念上讲,Hash Map使用Hash函数来确定性地将键映射到数组内的随机位置(参见图[9 ],只有4位开销 ...

  8. Jeff Dean 光辉事迹

    这是Google 2007年的愚人节笑话,罗列了很多Jeff Dean的“光辉事迹”.大名鼎鼎的Jeff Dean想必不用我介绍了.……好吧,还是介绍一下,Jeff Dean是Google最早的一批员 ...

  9. 程序员大牛 Jeff Atwood 的两本中文书

    程序员大牛,StackOverflow.com创始人之一--Jeff Atwood 英文博客:http://blog.codinghorror.com <高效能程序员的修炼>,人民邮电出版 ...

随机推荐

  1. 数组的foreach方法和jQuery中的each方法

    /* * 数组的forEach方法: * 1.返回给回调的参数先是值,然后是下标 * 2.回调函数执行时内部的this指向window * */ /*var arr = [1,2,3,4,5]; ar ...

  2. 创建MySQL数据库和表(一)

    一.启动MySQL服务 1.在Windows操作系统的“服务”中启动,找到你安装MySQL的起的服务名称,我本机服务名的是MySQL. 2.在命令行中用命令启动: A.启动MySQL服务:net st ...

  3. stm32的串口接收字符串以十六进制数

      #include "pbdata.h"   uint8_t TxBuffer1[] = "USART Interrupt Example: This isUSART1 ...

  4. 检测INT3 软断点

    “INT3”断点指令的机器码是 “0xcch” 检测思路,取函数地址,判断第一个字节是不是 “CCh” BYTE bFirst = ; ProcAddres = GetProcAddress(Load ...

  5. NorFlash和NandFlash区别

      Flash编程原理都是只能将1写为0,而不能将0写成1.所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程,块内的所有字节变为0xFF.因此可以说,编程是将相应位 ...

  6. mongodb 几个要注意的问题

    1. moongo db 会尽量将 所有 索引和 热数据 放入内存中来进行比较,从而来获得更好的查询速度,同时,mongodb在写的时候,也是先写入内存,然后定期同步到磁盘上面去,这样可以达成顺序写的 ...

  7. C#导入EXCEL数据

    public static void InputUserFromExcel(string filePath) { string FileExName = filePath.Substring(file ...

  8. GETorPOST方式保存和获取图片信息

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  9. Quirks模式是什么?

    什么是DOCTYPE: DOCTYPE,或者称为 Document Type Declaration(文档类型声明,缩写 DTD).通常情况下,DOCTYPE 位于一个 HTML 文档的最前面的 位置 ...

  10. dll强签名的由来和作用

    C# dll强签名介绍 之前基本没有这个概念,直到有一天我们的dll被反编译了,导致我们的代码基本上被看到了,才想起来要保护dll的安全性,因为C#语言的在编译过程中会产生中间语言导致dll很容易被反 ...