本文探讨了程序员 Jeff 和 Sanjay 之间深厚的友谊及其对 Google 成功的推动作用。他们的紧密合作不仅体现在工作中,还在生活中展现了创意与效率的结合。两人的协作方式、互补的思维方式以及在编程中的默契,使他们成为了 Google 发展过程中不可或缺的搭档。
- 友谊与合作:Jeff 和 Sanjay 在 Google 之前就建立了深厚的友谊,他们常常一起度假,Jeff 的女儿们称 Sanjay 为“叔叔”。这种紧密的私人关系促进了他们在工作中的合作。
- 编程风格的互补:Jeff 更加外向和探索性,能迅速提出新想法,而 Sanjay 则专注于系统设计,编写出结构优美的代码。他们的合作使得编程过程更加高效,减少了创意瓶颈的发生。
- 重要项目:两人共同开发的 MapReduce 软件为 Google 带来了巨大的性能提升,使得程序员能够更高效地处理数据。该技术后来成为 Hadoop 的基础,广泛应用于大数据处理。
- AI 的发展:Jeff 在 Google Brain 项目中的参与,使得神经网络技术得以迅速发展,最终取代了传统的搜索算法,标志着 Google 在 AI 领域的转折。
- 角色变化:随着时间的推移,Jeff 和 Sanjay 的角色逐渐分化。Jeff 负责更大的项目和团队管理,而 Sanjay 则专注于独立开发,继续为 Google 的技术决策提供支持。
- 持续的友谊:尽管工作节奏有所变化,两人仍保持联系,定期共进晚餐,回忆起早年的合作时光,展现了他们之间持久的友谊与默契。
谷歌崛起背后的友谊
“我们在 Google 之前就已经这么做了。” Jeff 说道。
“但我也不清楚为什么我们觉得坐在一台电脑前比两台更好。” Sanjay 说道。
“我常常从离两条街远的 D.E.C. 研究室走到他的 D.E.C. 研究室,” Jeff 说道。“中间还经过一家意式冰淇淋店。”
“所以是因为那家冰淇淋店!” Sanjay 笑着说。
单身的 Sanjay 经常与 Jeff 及其妻子 Heidi 和两个女儿一同度假。Jeff 的女儿们称他为 Sanjay 叔叔,五个人通常在周五晚上一起吃饭。Sanjay 和 Jeff 的大女儿 Victoria 开始一起烘焙。“我看着他的女儿们一点点长大,” Sanjay 自豪地说。2004 年 Google 上市后,他们搬到了相距四英里的新居。Sanjay 住在旧山景城的一栋普通的三居室,而 Jeff 则亲自设计了他位于帕洛阿尔托市区附近的房子,还在地下室装了蹦床。在设计这栋房子时,他意识到虽然他喜欢规划空间设计,但没有耐心去处理那些他称之为“适合 Sanjay 的建筑细节”:如梁柱、螺栓和承重结构,这些都是支撑整体设计的基础部分。
“我不明白为什么其他人不这样做,” Sanjay 说道,谈起结对编程的合作方式。
“你需要找到一个与你思维方式兼容的搭档,这样两个人才能形成互补的力量。” Jeff 说道。
他们起身离开餐桌,开始寻找软冰淇淋,一边走过 Big Table 办公区和四处走动的 Googlers。Jeff 更乐于分享,在他们边走边聊时,他解释了自己的软冰淇淋策略。“我用压的方式,我觉得这种往上推的操作更稳定。” 他说道。Sanjay 满意地将巧克力和香草的混合软冰淇淋涂在甜筒上。
在 2001 年出版的《协作圈:友谊动力与创意工作》中,社会学家 Michael P. Farrell 研究了多个亲密的创意群体——例如法国印象派画家、弗洛伊德及其学术圈。他写道:“那些奠定新视野的关键洞见,大多不是在整个团队合作时产生,也不是独自工作时,而是在成对合作时彼此互动中激发出来的。” 1869 年夏天,莫奈与雷诺阿并肩作战,开创了后来被称为印象派的风格;在发展立体主义的六年合作期间,Pablo Picasso 和 Georges Braque 常常只在画布背后签名,以掩盖每幅作品的具体作者。(“一幅画直到我们两个人都觉得完成了才算完。” Picasso 后来回忆道。)在《二者之力:创意搭档中的创新精髓》一书中,作家 Joshua Wolf Shenk 引用了 John Lennon 在 1971 年的访谈,其中他解释说,创作中容易的部分,如“我今天读了新闻”或类似的歌词,要么是他,要么是 Paul McCartney 会先写出,但一旦遇到瓶颈,总有另一个搭档来打破僵局。Lennon 说,“我唱出一半,他就会被激发写出接下来的部分,反之亦然。” 每个人都会遇到创意瓶颈,但两个人很少同时卡住。
在新科学或新艺术的“理论构建”阶段,广泛探索而不陷入死胡同至关重要。François Jacob 与 Jacques Monod 开创了基因调控研究,他指出,到 20 世纪中期,分子生物学中的大部分研究成果都来源于双人合作。“两个人共同构建理论和模型比一个人更有效,” Jacob 写道。“因为有两个人一起思考,一个问题的解决思路会更加密集且迅速地涌现。想法在伙伴之间来回碰撞,像树枝一样互相嫁接。在这个过程中,幻想往往能更快被扼杀在萌芽状态。” 在过去 35 年中,约一半的生理学或医学诺贝尔奖授予了科学合作伙伴。
经过多年的合作生活,双人组有时会像双胞胎一样发展出私密的交流方式。他们模仿彼此的着装和习惯,幽默感也逐渐趋同。要区分他们各自的贡献变得几乎不可能。然而,这种强烈的合作关系在软件开发中并不常见。虽然开发者有时会谈到“结对编程”——即两名程序员共用一台电脑,一个负责“驾驶”,另一个负责“导航”——但这种合作方式通常被视为一种冗余,仿佛两人是同一航班的副驾驶。相比之下,Jeff 和 Sanjay 有时更像是同一个大脑的两半。他们的许多著名论文都有十几位合著者。但即便如此,他们的一位经理 Bill Coughran 回忆道:“他们作为一对组合的高效和多产,使得我们常常围绕他们组建团队。”
1966年,System Development Corporation的研究人员发现,最优秀的程序员效率是最差程序员的十倍以上。自此,所谓“10倍程序员”的概念一直备受争议。这个观点在于过分强调个人作用,而实际上,软件项目往往是庞大的团队协作。在编程领域,孤立的成就少之又少。然而,讽刺的是,许多程序员认为Jeff和Sanjay的合作恰恰证明了“10倍程序员”的存在。
Jeff于1968年7月出生在夏威夷。他的父亲Andy是一位热带疾病研究员,母亲Virginia Lee是一位精通六国语言的医学人类学家。父子俩平日的消遣是编写IMSIA 8080套件式计算机的程序,还自己动手为机器焊接升级组件,几乎了解了这台设备的每个细节。
Jeff和他的父母经常搬家。在十三岁时,他跳过了八年级的最后三个月,随父母前往索马里西部的难民营帮助工作。高中时期,他开始开发一款为流行病学家设计的数据收集程序,名为Epi Info。该程序后来成为现场研究中的标准工具,分发了数十万份,支持十几种语言(在美国疾病控制与预防中心维护的“Epi Info故事”网站上,可以看到Jeff高中毕业时的照片)。Jeff在明尼苏达大学读书时认识了Heidi,她多年后才意识到该程序的重要性。“他从不提这些事情,”她说,“要从他嘴里挖这些话可不容易。”他们的第一次约会是在一场女子篮球赛上,当时Jeff穿着松鼠吉祥物的服装为球队加油。
Jeff的博士研究集中在编译器上,这种软件能将人类编写的代码转化为机器可直接理解的指令,并进行优化。“如果谈论吸引力的话,编译器几乎是最无趣的东西了,”Alan Eustace打趣道,“但它确实能让你‘非常接近机器’。”Sanjay形容Jeff时,做了个绕着太阳穴旋转手指的动作:“他在写代码时,脑海里总有个模型在运转,”他说,“‘这段代码性能会如何?’他几乎能自动考虑到所有极端情况。”
Sanjay直到17岁进入康奈尔大学时才第一次接触计算机。他1966年出生于印第安纳州的西拉法叶,但成长于印度北部的工业城市科塔。他的父亲Mahipal是植物学教授,母亲Shanta照顾Sanjay和他的两个哥哥。他们家热爱阅读:他的叔叔Ashok Mehta回忆,曾买过一本Frederick Forsyth的《豺狼的日子》,封皮早已破损,而Ghemawat家的孩子们轮流阅读这本破旧的书,读完一页就传给下一个人。Sanjay的哥哥Pankaj后来成为哈佛商学院史上最年轻的终身教授(现为纽约大学斯特恩商学院教授)。Pankaj和Sanjay同校,在学校里有“全才”之称。“我一直活在哥哥的阴影下,”Sanjay说。成年后,他依然表现得谦逊低调。2016年,他被选入美国艺术与科学院,但他没有告诉父母,而是由邻居告知了他们这个消息。
在麻省理工读研究生时,Sanjay结交了一群亲密的朋友。不过,他从不约会,至今也很少这样做。他说,这不是有意决定不成家,而是自然发生的结果。他的朋友们早已不再对此事多加干涉,而他的父母也早已接受了儿子将独身的事实。或许因为他的低调,谷歌内部他总是带着一丝神秘的气息。他以寡言少语但极富深度而闻名——一个思考深邃且清晰的人。在他的办公桌上,整齐地放着多年累积的Mead笔记本,里面满是有条理的清单和图示。他习惯用钢笔书写,并使用草书。他很少翻看旧笔记本,而是通过写作来理清思路。在麻省理工,他的导师是Barbara Liskov,这位有影响力的计算机科学家研究复杂代码管理。在她看来,优秀的代码如同一篇好文章,需要精心设计的结构,每个词都必须发挥作用。以这种方式编程需要与读者共情,也意味着代码不仅是达成目标的工具,更是一种艺术品。“我认为他最擅长的是系统设计,”Craig Silverstein评价道,“如果你单看Sanjay写的一份代码文件,它如同一座比例完美的雕塑般美丽。”
在谷歌,Jeff名气更大。网上流传着关于Jeff Dean的段子,模仿了那些关于Chuck Norris的梗(“Chuck Norris数到无限……两次”;“Jeff Dean的简历列出的是他没做过的事——这样更短”)。但对同时了解两人的人来说,Sanjay的才华不亚于Jeff。“Jeff擅长提出大胆的新想法并快速制作原型,”他们的老同事Wilson Hsieh说道,“而Sanjay则是把这些东西构建得经久耐用的人。”在生活中,Jeff更外向,Sanjay更内敛。在代码中则恰恰相反。Jeff的编程风格令人眼花缭乱——他能迅速勾勒出惊人的想法——但由于这种编程速度快且充满探索性,往往让读者难以跟上。而Sanjay的代码则更具“社交性”。
“有些人,”Silverstein说道,“他们的代码太松散。一屏代码里几乎没有多少信息。你得不断滚动页面才能弄清楚在做什么。”而另一些人写的代码则太密集:“你看了就觉得,‘天啊,我真不想读这个。’而Sanjay完美地找到了平衡点。你看他的代码,会觉得‘好吧,我能理解这个’,而且一页内容依旧很丰富。”Silverstein继续说道:“每当我想在Sanjay的代码上增加新功能时,似乎他已经为我预留了接口。我感觉自己像Salieri。我能感受到这种伟大,但不明白它是如何做到的。”
今年春天的一个星期一早上,Jeff和Sanjay站在谷歌人工智能部门所在的40号楼的小厨房里。他们身后的白板上写满了矩阵代数,桌上放着一篇关于无监督对抗网络的论文。Jeff穿着褪色的T恤和牛仔裤,看起来像个改过自新的冲浪迷;Sanjay穿着毛衣和灰色裤子。明亮的窗外是一片高耸的松树,远处是一片空地。无论Jeff在哪工作,浓缩咖啡机都会跟随他。在小厨房的柜台上,放着一台宽达三英尺的La Marzocco咖啡机发出嗡嗡声。“我们晚了,”Sanjay在咖啡研磨机的嗡嗡声中说。此时是八点三十二分。
喝完卡布奇诺后,他们走向各自的电脑。Jeff从自己凌乱的桌子上滚了一把椅子到Sanjay整洁的桌前。他把一只脚搁在文件柜上,靠在椅背上,而Sanjay则注视着面前的屏幕。屏幕上开着四个窗口:左侧是浏览器和一个用于运行分析工具的终端;右侧是Emacs文本编辑器中的两个文档,一个是待办事项和笔记本的组合,另一个则满是色彩丰富的代码。Sanjay的一本笔记本就放在电脑旁边。
“好吧,我们在做什么?”Sanjay问道。
“我想我们在看TensorFlow Lite的代码大小,”Jeff答道。
这是一个与机器学习相关的重要新软件项目,Jeff和Sanjay担心它的体积过于庞大;像编辑书籍一样,他们在寻找可以删减的地方。为此,他们开发了一个新的工具,而这个工具本身也需要优化。
“所以我在看它到底有多慢,”Sanjay 说。
“确实挺慢的,”Jeff 回应,身体微微前倾,依旧显得很放松。
“那个文件大概有 120 KB,”Sanjay 说,“花了大概八秒。”
“是 12 万次栈调用,不是 120 KB,”Jeff 纠正道。
“哦,对,确实是 120 KB 的文本,差不多,”Sanjay 点头道。
“哦,对,抱歉,”Jeff 说。
“我们应该选择一个单位大小的阈值,我想,500 KB 吧?”Sanjay 说道。
“感觉不错,”Jeff 回应。Sanjay 开始输入,Jeff 紧盯屏幕。“你是说,如果超出这个大小我们就只取样……”,Jeff 没说完,Sanjay 已经用代码回应了他。
Sanjay 开车时,总是双手紧握方向盘保持在 10 点和 2 点的位置,目视前方。他在键盘前也是一副全神贯注的样子。双脚与肩同宽,仿佛在调整姿势。他细长的手指轻快地在键盘上敲击。几位年轻程序员陆续进来。
不久,他们完成了一个小目标,Sanjay 输入了一条指令来测试他们的进展。他看上去有点累,在测试运行期间顺便检查了一下邮件。测试结束了,但他没注意到。
“嘿,”Jeff 打了个响指,指向屏幕。虽然平时他喜欢讲笑话,但和 Sanjay 一起编程时,他有时会显得急躁、直接甚至有些不耐烦。Sanjay 习惯了这种风格。当他觉得 Jeff 操作过快时,他会抬起手并摊开手指,示意“慢点”。(通常情况下,Jeff 是加速器,Sanjay 是刹车。)这已经是他们最接近争执的情况了:合作了二十年,他们都记不起来曾经吵过架。
Sanjay 滚动页面,显示出一段新的代码。“像这些可以整理成一个例程吧?”Jeff 问。
“嗯,”Sanjay 同意道。
Jeff 活动了一下关节,“感觉没问题,咱们要试试吗?”
Sanjay 谨慎地说:“不,我——”
“那我们就忽略这个问题?”Jeff 语气有些激动。
“不,我的意思是,我们现在只是想搞清楚正在发生的事情。我们可以先记个笔记,之后再解决,对吗?”
“好吧,”Jeff 立刻恢复了好心情。他们一起记录了笔记。
午饭时间快到了。他们已经连续工作了两个小时,中间只休息了十分钟,几乎一直在讨论。(如果有其他程序员在场,可能会对他们从不打断或卡壳感到钦佩。)通常来说,代码需要其他人进行审核,但 Jeff 和 Sanjay 直接省去了这一步,只在日志中简短地写下“lgtm”(看起来不错)。从某种程度上来说,他们一直在关注细节。但这些代码会在 Google 的庞大规模下运行。他们纠结的那些几千比特和微秒,在全球的数据中心会被放大到亿万倍——那些充满轰鸣声、炽热的仓库式建筑中,成排的处理器通过冷却系统持续运行。在这样的日子里,Jeff 有时会回家告诉女儿们:“我和 Sanjay 今天把 Google 搜索提速了 10%。”
2003 年,Jeff 和 Sanjay 在四个月里为 Google 带来了 arguably 最大的一次提升。他们用一款名为 MapReduce 的软件实现了这个目标。这个想法是在他们第三次重写 Google 的抓取和索引系统时想到的。他们意识到,每次重写时都要解决同样一个问题:如何在数量庞大、地理位置分散且不稳定的计算机之间协调工作。如果能将这个解决方案通用化,就可以免去重复劳动。同时,这还会生成一个工具,Google 的任何程序员都能利用它,将数据中心里的计算资源当成一台行星级别的计算机来使用。
Jeff 和 Sanjay 在一间俯瞰鸭塘的办公室里写下了 MapReduce,它为复杂的计算流程带来了秩序。在 MapReduce 之前,每个程序员都得自己摸索如何分割数据、分配任务并处理硬件故障。MapReduce 为这些问题提供了一种结构化的思路。就像厨师在动手做菜前先准备好所有食材一样,MapReduce 要求程序员将任务拆分为两个阶段。首先是“映射 (map)”阶段,每台机器都执行指定的任务(比如计算某个网页上某个词出现的次数);接着是“归约 (reduce)”阶段,整合所有机器的结果(例如,将它们加总)。MapReduce 负责处理数据分发的细节,并将这些复杂过程隐藏起来。
次年,Jeff 和 Sanjay 将 Google 的抓取和索引系统重写成基于 MapReduce 的任务。很快,其他工程师也认识到了它的强大,开始使用 MapReduce 处理视频并渲染 Google 地图的瓦片。MapReduce 简单易用,新的应用场景不断被发掘。Google 的流量有昼夜之分——白天流量更大,夜晚相对较少——MapReduce 任务开始利用这些闲置资源。就像人类在做梦时处理白天的经历一样,如今 Google 也在处理自己积累的数据。
早期就有迹象表明,Google 本质上是一家伪装成搜索公司的 AI 企业。2001 年,与 Jeff 和 Sanjay 共用办公室的 Noam Shazeer 对 Google 当时从外部公司购买的拼写检查器感到不满:它经常犯低级错误,比如建议输入“TurboTax”的用户,可能是想输入“turbot ax”。(turbot 是一种北大西洋的比目鱼。)拼写检查器的效果取决于其词典,而 Shazeer 意识到,Google 拥有全球最大的词典——整个互联网。他编写了一个程序,利用互联网文本的统计特性来判断哪些词是拼写错误。该程序学会了识别“pritany spears”和“brinsley spears”都表示“Britney Spears”。当 Shazeer 在 Google 每周的 T.G.I.F. 聚会上展示这个程序时,同事们试图考倒它,但大多失败了。在与 Jeff 及一位叫 Georges Harik 的工程师合作后,Shazeer 还将类似技术应用于广告与网页的匹配。精准的广告投放带来了源源不断的收入,公司将这些收入重新投入到计算基础设施中。这个反馈循环由此启动——规模带来了智能,智能带来了财富,而财富进一步推动了公司的扩张——使得公司变得无比强大且令人不安。
随着越来越多有抱负的程序员利用 MapReduce 从 Google 的数据中提取洞见,逐渐实现了将用户语音信箱转录、回答问题、自动补全查询以及在一百多种语言间翻译等功能。这些系统都是通过相对简单的机器学习算法开发的。即便如此,“当你拥有海量数据时,非常简单的技术也能产生非常好的效果,”Jeff 说道。随着“数据、数据、数据”——通过 BigTable、MapReduce 及其继任者进行存储和处理——成为公司的首要任务,Google 的全球基础设施变得愈发无缝和灵活。分布式计算的概念由来已久;“云计算”和“大数据”等术语早在 Google 崛起前就已存在。然而,Jeff 和 Sanjay 通过让普通程序员也能轻松编写分布式程序,赋予了 Google 在这类技术上的新高度。用户或许会隐约感到,Google 的云变得更智能了。
2004 年,Jeff 和 Sanjay 认为天文学家、遗传学家及其他需要处理大量数据的科学家会对此感兴趣,于是他们撰写并公开了一篇论文《 MapReduce: Simplified Data Processing on Large Clusters 》。这篇 MapReduce 论文的出现恰如其分,犹如“天降神兵”。随着廉价硬件的普及、Web 服务的发展和互联设备的激增,数据量迅速膨胀,但大多数公司却缺乏处理这些数据的软件。两位工程师 Mike Cafarella 和 Doug Cutting 正在为扩展一个名为 Nutch 的小型搜索引擎而苦苦挣扎,他们深感 MapReduce 的重要性,决定从头开始打造一个开源版本的克隆系统。他们最终将这个项目命名为 Hadoop,这个名字来源于 Cutting 儿子心爱的一个毛绒玩具大象。随着 Hadoop 技术的逐渐成熟,它被财富 50 强中的半数以上公司采用,成为“大数据”的代名词。 Facebook 利用 “Hadoop MapReduce” 来存储和处理用户元数据——包括点击记录、点赞操作和广告浏览数据。在某个时期,Facebook 拥有世界上最大的 Hadoop 集群。Hadoop MapReduce 还支持了 LinkedIn 和 Netflix 的运营。美国国家安全局前技术总监 Randy Garrett 回忆起,当他向时任局长 Keith Alexander 将军展示这项技术时,Hadoop 的处理速度比旧系统快了一万八千倍。这项技术成为了新的情报收集模式的基础,一些人称之为“全面收集”。
Jeff 是个富有探索精神的人:一旦看清了解决方案,问题就不再吸引他。2011 年,随着全球迈向云计算,他开始与 Stanford 的计算机科学教授 Andrew Ng 合作,Ng 当时正在 Google 领导一个秘密项目,研究神经网络——一种由虚拟“神经元”构成的软件程序。Jeff 在大学时接触过神经网络;但那时,这项技术还无法应对实际问题。Ng 告诉 Jeff,这种情况正在改变。在 Stanford,研究人员在为神经网络提供海量数据后取得了令人激动的成果。Ng 认为,借助 Google 的规模,神经网络不仅可以变得有用,还可以变得非常强大。
神经网络与传统计算机程序有着根本区别。它们的行为不再由程序员通过代码指定,而是通过输入和反馈来“学习”。Jeff 对神经网络的了解自大学时期起就没再深入,但他的妻子 Heidi 注意到,他们的浴室堆满了与此相关的教科书。Jeff 开始每周花一天时间参与这个被称为 “Google Brain” 的项目。Google 内部许多人对这项技术持怀疑态度。当时的主管 Alan Eustace 回忆道:“真是浪费人才。” Sanjay 也不理解 Jeff 的选择:“你不是做基础设施的吗?怎么跑去搞那个了?”
接下来的七年里,Google Brain 团队开发的神经网络在机器翻译、语音识别和图像识别方面超越了行业顶尖水平。最终,这些神经网络取代了 Google 最重要的算法,用于搜索结果排序和广告投放,Google Brain 也成为公司内部发展最快的团队之一。2001 年入职的工程师 Claire Cui 说,Jeff 的参与标志着 Google 在 AI 领域的重要转折点:“当时有人相信 AI,也有人不信。Jeff 证明了它的可行性。”
AI 的发展高度依赖规模,而 Jeff 作为系统工程师正是提供了这一关键优势。为此,他领导开发了 TensorFlow,一个旨在成为 AI 领域 MapReduce 的工具。TensorFlow 简化了神经网络在多台计算机上分布式运行的过程,将这些计算机集成为一个庞大的“大脑”。2015 年,TensorFlow 开源后,迅速成为 AI 的通用语言。Google CEO Sundar Pichai 最近宣布公司“AI 优先”的战略,并任命 Jeff 负责整个 AI 项目。
Jeff 现在每周四天都在运营 Google Brain,领导着三千人的团队。他定期出席演讲,每周召开一次会议,推进一种专为神经网络设计的计算芯片 Tensor Processing Unit (TPU) 的开发,还参与了 AutoML 系统的研发——这个系统利用神经网络来设计其他神经网络。他和 Sanjay 每周只有一次时间一起编程。
工程成就常常会被历史遗忘。我们记得 18 世纪的伟大探险家 James Cook 和 George Vancouver,却很少有人知道 John Harrison,这位 Yorkshire 木匠历经数十年制造出了精准到足以在海上计算经度的时钟。最近,Jeff 和 Sanjay 在他们常去的墨西哥餐厅 Palo Alto Sol 享用玛格丽塔酒和玉米饼时,Jeff 拿出了手机:“Gmail 是什么时候发布的?”他问道。手机回答:“2004 年 4 月 1 日。”Sanjay 在社交场合一向敏感,似乎对这种餐桌上的干扰不太感冒,但 Jeff 却异常高兴。如今,Google 能够对话、聆听并回答问题,这背后是一系列无缝集成且大多不可见的程序,跨越了从手机到全球数据中心的技术堆栈。
如今,他们的角色已大不相同。在 Google,Sanjay 是一名“独立贡献者”——一名不管理任何人的独立开发者。他对此非常感激:“我可不想要 Jeff 的工作,”他说。他目前在开发一款软件,让工程师能够更轻松地结合和控制多个程序——这些程序会在用户输入搜索内容时自动启动,负责抓取新闻、图片和价格等信息。他每周还会和一群“区域技术负责人”——Google 的工程精英委员会——会面,讨论影响整个公司的技术决策。如果 Google 是一座房子,Jeff 负责扩建,Sanjay 则负责加固结构、拧紧螺丝。
与此同时,他们的周一编程会议上,也启动了一个新项目。这是一个 AI 项目,Jeff 说,他们正在尝试训练一个“巨型”机器学习模型,以执行数千甚至数百万种不同的任务。Jeff 多年来一直在思考这个想法,最近他认为这个想法已经具备可行性。他和 Sanjay 打算先构建一个原型,再逐步组建团队进行扩展。在软件领域,最好的领导方式就是编写代码。
“我觉得他们彼此很想念,”Jeff 的妻子 Heidi 说道。他们的合作节奏放缓后,开始了每周五的晚餐。
三月的一个星期天,Jeff 和 Sanjay 在 Cupertino 附近的山中徒步。天气晴朗凉爽,但在阳光下有些炎热。Jeff 驾驶一辆贴有“Bernie 2016”车贴的蓝色 Tesla Roadster 到达登山口。Sanjay 紧随其后,开的是一辆红色 Model S。Sanjay 早上读书,而 Jeff 去踢了足球(绑在他小腿上的设备显示他跑了 7.1 英里)。二十年过去,Jeff 现在看起来像一位退役的耐力运动员,皮肤被晒得黝黑。而 Sanjay 看起来几乎没什么变化。
这条小径是一个六英里的环形路线,穿过茂密的森林。Jeff 走在前面。他们在林中边走边聊,回忆起 Google 早年快速发展的时光。Sanjay 提到,当公司第一次扩张时,有个水管工在男士洗手间的一个隔间里装了两个马桶。“我还记得 Jeff 当时说,‘两个脑袋总比一个好!’”他笑着说。
他们走出树林,进入干燥暴露的开阔地,一只秃鹰在空中盘旋。
“这里的山比我想象的要陡,”Jeff 说。
“我记得有人说这是一条平缓的徒步路线,”Sanjay 说。
“看来这解释了为什么这边没有骑行的路,”Jeff 说。
他们再次进入树林。在一个折返点,Jeff 越过树丛瞥见一片开阔地。“我们迟早会看到一个不错的观景点,”他说。
小径最终通向一个山顶,高而宽敞,开阔无树,视野极好。虽然地平线上有些雾气,但他们依然能看到南边的 Santa Cruz 山脉和东边的 Mission Peak。“Sanjay,那就是你的办公室!”Jeff 说。他们并肩站在一起,眺望山谷。 ♦