在硅谷历史上,可能再也找不到第二个这样的人。

他没有住在公司附近,没有加班到凌晨三点,甚至不常出现在办公室。

相反,他每周二都坐飞机跨过加州的天空,去 Google 上班。

同事们在工位上刷 Perl、写 C++、飞快地交付功能的时候,他在机场排队过安检,或者在机舱里对着一台旧笔记本和一堆 Java 错误信息发呆。

而就是这个在 Google 内部自认“垫底”的人,写出了一个后来吞噬整个互联网的钱印钞机:Google AdWords。

0 1

Google是啥?

1988年,刚刚硕士毕业的罗恩(Ron Garrett)来到NASA的JPL(喷气推进实验室,钱学森是创始人之一),在自主机器人的人工智能组工作。

打开网易新闻 查看精彩图片

在JPL的12年间,他成绩斐然,一度是 NASA 所有计算机科学研究人员中被引用次数最多的,受人尊重。

只有一点让他感觉不爽,他是一个Lisp的忠实拥趸,但NASA主要做嵌入式开发,是一个C语言为主世界。

在经历了Lisp火星车的失败后,罗恩有点心灰意冷,有一天在逛com.lang.*编程语言新闻组的时候,他注意到有个人回答了一个非常冷门的问题,然后说:谢天谢地有Google。

这勾起了罗恩的好奇心:Google是啥?

他在浏览器中敲入www.google.com,发现是个新的搜索引擎,他玩了几分钟,立刻意识到,这玩意儿比其他搜索引擎要领先好几光年。

当时互联网正处于泡沫期,大量的互联网公司在纳斯达克上市,无数人通过股票获得了巨额财富。

这时候Google还非常小,不到100人,刚刚从KPCB拿到融资,正是加入的好时机啊!

罗恩看到Google首页下方写着:我们正在招聘。就立刻投了一份简历,没想到,仅仅15分钟以后,他就收到了Google的电话。

面试很快通过,就是薪水比JPL的还低!

这不算啥,重要的是股票期权,关键是罗恩已经在洛杉矶买房,走路即可到JPL上班,他已经拿下博士学位,在JPL相当于在体制内,工作生活都很稳定。

而Google在硅谷的山景城,距离洛杉矶五六百公里,相当于从青岛到北京,这怎么去上班?

Google见状马上给罗恩加工资,还给了差旅补贴,还告诉他:你可以试一年,如果不行,随时可以回去。

0 2

垫底的程序员

于是罗恩就开始了乘坐飞机上班的生活。

他凌晨4点起床,5点出门,6点到机场,坐飞机到圣何塞,然后通过拼车/出租车等方式去Google办公室。

10点到公司,然后一直工作到深夜。

当然,罗恩不是每天如此,他周二去,周四回 ,在Google待3天。

在硅谷,他没有朋友,没有家人,没有宠物,他的生活只剩下一件事情:工作。

说起工作,罗恩被分配到了广告组,去开发广告系统AdWords。

打开网易新闻 查看精彩图片

这个系统说起来很简单:

1.客户输入想在Google投放的广告

2.广告系统在搜索结果中投放广告,记录投放情况

3.计费系统统计数据,从客户信用卡中扣款。

没有人意识到,这个全新的搜索模式以后将会为成为Google历史上最大的现金牛。

打开网易新闻 查看精彩图片

当时Java爆火,AdWords被确定用Java开发,而罗恩则是首席工程师。

Google的经理也许并不知道,罗恩是个彻头彻尾的Java黑,他觉得这门语言有个邪恶的目的:把程序员变成可以被替换的零件和齿轮。

但是已经上了贼船,“Java布道师”罗恩不得不硬着头皮往前走了。

用户界面用JSP编写,如果你在2000年代用过它,你就会明白这种方式有多糟糕。

ul>

JSP的本质就是把HTML和Java混在一个文件中,HTML 不关心括号,Java 极度关心括号,你一旦漏一个 } 或 %>,整个文件的解析都会“错位”。

当年没有语法感知编辑器,没有语法高亮,没有括号匹配,没有自动缩进,没有错误提示......

你在一个地方犯个错误,编译器会在几十行后报一个稀奇古怪的错误。

Lisp专家罗恩就坐在那里,调试一个又一个的JSP错误,艰难前行。

认识了一些Google的同事以后,罗恩更是被他们的聪明所震撼,一个活儿罗恩认为一周才能搞定,但是一个小时后就有人用一个小小的脚本搞定了。

罗恩的下巴都要被惊掉了,他觉得这绝对不可能,直到亲眼看到那个Perl脚本,大受震撼。

在JPL的象牙塔内,罗恩一直是顶尖的一员,在Google,他认为自己可能是后10%的垫底程序员。

罗恩的开发进度落后了,经理火上浇油,认为解决进度落后的办法就是进行微观管理:每天列出详细的工作清单。

这让罗恩相当反感,以至于和经理几乎不怎么说话了。

0 3

账单灾难

经过3个月的煎熬,AdWords终于开发完成。

上线之前,罗恩要面对一个重要的问题:客户的广告要不要审核以后再上线?

按照NASA习惯,一切都要在发射之前验证,因为出现错误就可能带来死亡,必须万分小心。

但是Google 创始人Larry Page坚持所有的审核都放到事后去做,广告直接上线。

原因非常简单:要给客户“即时满足感”。

这在2000年左右是非常疯狂的,因为传统的广告流程是:提交,审核,对接,排期,上线。

Google把它压缩成:填表,刷卡,上线。

出了错怎么办? Larry说:“到时候再说”。

事后看,Larry是对的,Google AdWords彻底改变了广告行业。

AdWords的上线相当顺利,接下来两周罗恩主要在监控系统,修复小Bug,并且当一名客服,给用户回复邮件。

打开网易新闻 查看精彩图片

这就是创业公司的文化:人人都得上手,干各种活儿来解决问题。

有一天,罗恩打开账单数据,发现一堆数据不对劲,计费程序竟然向客户收取数十万,甚至百万的费用。

罗恩赶紧停掉计费程序,开始排查,这是个非常难缠的Bug,因为系统大部分时间是好的,偶尔出错。

刚开始实在是找不到问题,只能重启系统,然后加上一个合理性检查,如果费用超过某个范围就自动停止,并且告警。

罗恩这个“客服”还得给客户解释发生了什么事情,向客户道歉,赔钱。

但是,让罗恩惊讶的是,即使发生了这么严重的情况,老板也没有斥责他、责骂他,只是说:赶紧想办法修复。

这样的错误发生了好几次以后,大家终于发现了规律:在C++编写的广告服务器关闭或者重启时,会写入随机的数据(多线程引起的错误),让一些客户的广告投放量达到了几百万条。

Bug终于被修复了,罗恩感到精神崩溃,身体也快要垮掉了,他和和妻子的关系开始紧张,和经理几乎不说话。

0 4

最大的遗憾

在这种高压之下,罗恩开始反思自己的未来:自己是否能适应创业公司这种“快速行动,打破一切,快速修复”的文化。

这时候发生了两件大事:

1.9/11事件爆发,打乱了罗恩乘坐飞机上班的计划。

打开网易新闻 查看精彩图片

2.互联网泡沫破灭,Google 当时情况还算好,但没有人保证它最终能成功。

打开网易新闻 查看精彩图片

罗恩利用自己在JPL的人脉,联系了高层的一位主任,这位主任也希望他能回JPL工作,并且为他争取了顶级的技术职位:principal, 几乎相当于大学的终身教授。

Principal还有个福利,专属停车位,附带遮阳棚,实验室7000人,只有100人有这样的待遇。

于是罗恩就回去了,他负责搜索引擎相关的工作,当然不是开发,而是采购。

罗恩没有料到,他做出了错误的抉择,他在 Google 做的不是边角料,他写的是Google Ads系统的核心算法,这是全人类历史上最赚钱的一段代码之一。

今天Google 每年几千亿美元的广告收入,本质上是这个系统在运转。

他只要留下,绝对是AdWords的 负责人,再坚持3年,Google就会IPO,罗恩就会成为亿万富翁。

但是在2001年那个时间点,很少有人能看清楚未来。

罗恩后来说:

“在Google工作最棒的地方是,我感觉自己是历史的一部分,当时谁也没有想到Google会发展到如此规模,我从小是电脑迷,硅谷是梦寐以求的圣地,当我第一次置身其中,就连那疯狂的通勤也让我感到莫名的兴奋。”

“环顾四周,看到那些风云人物正在做出各种炫酷的事情,而我也是其中一员,这种感觉实在太棒了......”

0 5

后记:世界是个草台班子?

今天回头再看 Google,人们很容易被它后来那套近乎神话般的工程体系所迷惑:

分布式系统、严谨的代码规范、顶级的人才密度、近乎完美的自动化流程。

但在 AdWords 诞生的那个年代,Google 远没有后来那么“体面”:

它从 NASA 挖来一个 Lisp 专家,让他Java写核心系统

它让一个工程师在最原始的编辑器里调试 JSP;

它可以一边高喊“工程师文化”,一边进行微观管理;

它允许所有人拥有 root 权限;

它也允许文本被直接“硬编“”进页面,让国际化极其困难;

它的系统里充满 Bug,计费错误甚至会直接变成天文数字;

打开网易新闻 查看精彩图片

从今天的标准看,这几乎是一次灾难级的工程实践!

但 Google 还是活了下来,而且迅速长成了一个前所未有的巨兽。

原因并不神秘。

当时代的浪潮真正拍到岸边时,Google 的创始人做对了一件极其关键的事:他们为搜索引擎找到了一个与用户体验正向耦合的商业模式——即时满足的AdWords 。

而剩下的事情,则交给了一群工程师。

这些工程师未必拥有完美的工具、清晰的流程或稳定的生活,但他们在一片混乱中,把一个模糊的想法变成了一个能持续运转的系统。

历史并不是由完美的系统启动的,更多时候,它是由勉强可用的代码、疲惫的工程师,以及一次又一次被硬撑过去的夜晚推动的。

全文完,觉得不错的话请三连。