Paul Buchheit是一名工程师,是Y Combinator的合作伙伴。同时,他也是Google的第23名员工,他创建了Gmail,以及Adsense的第一个原型。在离开Google后,他联合创立了Friendfeed,后来被Facebook收购。
Triplebyte的联合创始人兼CEO Harj Taggar与Paul谈起了他开始编程、加入Google并成为优秀的工程师的经历。
为缩短篇幅、明确内容,本文对采访内容进行了加工编辑。
关于成为程序员
你是如何开始编程的?
我还记得我是在玩一个非常优秀的RPG游戏时开始对编程产生了兴趣。当时我卡住了,找不到关键的道具魔法手帕——我记不清是什么了,不过这不打紧。然后我就想,“何必在游戏里找呢,我可以直接修改存盘数据嘛!”然后我就写了个程序来寻找游戏存储物品的地方。然后我发现了向物品栏里添加物品的方法,甚至能加入游戏里不存在的物品。
于是我意识到,这比玩游戏本身要有趣多了。玩游戏只是加入别人创造的世界。而编程,你可以在自己的世界里为所欲为,对吧?编程是个开放的环境,里面没有任何限制。
从那以后,与编程相比,游戏本身似乎完全是浪费时间。
我实际开始编程大约是在那之前的一年,我买了台1M内存的386。我在某个BBS上看到了关于编程的文章,还带有一个做了一半的C编译器。我用那个学了一段时间。后来在一次无线电爱好者聚会上我找到了一份二手Turbo C 2.0编译器,还带手册,只要$11。于是我就有了可以使用的编译器,还有一份手册,我就开始花了几年时间来认真阅读研究它究竟应该怎么用。最初我并不是太享受这个过程,但我喜欢钻牛角尖,下决心一定要研究明白。
你在上大学的时候觉得自己是个优秀的程序员吗?
我觉得我还挺不错的。我知道我不擅长做大型的东西,但我的代码确实能完成该做的事儿。我在大学时有一次ACM编程竞赛,我觉得一定很有意思。最后我得了第二名,所以我觉得我应该没问题。
为什么毕业之后加入了英特尔?
我一直很喜欢创业公司和商业。在我大约10岁时,我在邻里做过一次上门销售。我拿着一份产品目录上门去推销产品,每次卖掉一包贺卡都能赚$1!
大学毕业之后我想加入一家创业公司,但我不知道怎样才能找到,因为当时互联网上并没有太多关于创业公司的信息。但我知道那些公司很可能在硅谷,因为硅谷有Netscape,有SGI,还有一大堆听起来很酷的公司。我加入英特尔是因为英特尔位于硅谷,一定能遇到很多人,并找到一家很酷的创业公司。我天真地以为,我会在街上遇到一些人或一些事。我以为硅谷的街上一定到处都是创业公司,到处都能遇到创业公司的人。但实际上并没有。
关于加入Google和创建Gmail
为什么你决定离开英特尔?
总的来看那份工作我并不是太喜欢。我不需要拼命工作,而且有一天我坐在自己灰色的格子里时(我周围都是一片灰色的格子,周围的墙也是灰色的,听着白噪音,感觉很孤独)我意识到,“我觉得好累。我需要回家去睡个觉。”于是我回家了,但一回到家里我就意识到,“其实我根本不累。”只不过是在英特尔工作会榨干你的所有精力,因此我知道我该离开了。
你怎样找到了Google?当时的招聘流程如何?
我很喜欢Linux。甚至在上大学之前就开始喜欢Linux,那时大概是93年吧。我有一块有点坏了的硬盘,上面还有大概60MB的空间可以用,我在上面装了Yggdrasil Linux。这点空间足够安装一个小型的Linux,但却不够安装Emacs的,所以我成了使用vi的人。
我花了很多时间阅读Slashdot上的最新Linux新闻。从那里我看到了Google,当时Google还是个小公司,他们建了个Linux机器的集群。在我看来,还有什么比Linux集群激动人心的吗?而且他们还有个特殊的Linux搜索,经常会在Slashdot上展示。而且他们公司的颜色远不止灰色一种——他们有四种颜色!于是我申请了工作。
很神奇的是,我的简历邮件竟然被退回了,因为他们的邮件服务器设置错了!但我第二天重新发了一遍,他们正好修好了MX记录和别的错误,于是有人给我回信来安排电话面试。完成电话面试之后,他们就邀请我参加一整天的面试。
为什么你决定接受Google的offer?
当时我只有这一个offer,所以很好选了!
而且,这个offer也很不错,他们做的东西很酷。虽然我不觉得他们会成什么大气候。我以为他们会中途倒掉,并且被某个大型互联网公司收购。当时,雅虎已经是互联网的巨头,而且Alta Vista也很有钱,我不知道这么小的创业公司该怎么竞争。但我觉得我不在乎,毕竟我想做Linux的工作,而且至少我能遇到一些聪明人,也许他们以后也会创立一些能够成功的公司。
现在看来,我发现Google早期的团队非常优秀。我认为他们只招聪明人是个非常关键的因素。部分原因是,他们工作的内容非常有趣,而且聪明人只喜欢做有趣的事情。我还记得Jeff Dean在加入Google之前曾经加入过另一个创业公司,然后立刻把他们所有的问题都改好了。然后他问,“我还能干点啥?”结果发现他们无所事事,所以他辞职了。他因为之前解决的那些有趣的系统问题而被Google拉过来了。
这是个良性循环。这些聪明人会吸引更多的聪明人进来,然后不断循环。感觉整个UCSB的系统部门的人都被拉过来了,因为Urs Hölzle(Google的第八名员工,https://en.wikipedia.org/wiki/Urs_H%C3%B6lzle)是UCSB的教授,就像是把整个绳子上的所有高人都拉过来了一样。
所以你曾经认为Google会倒闭。什么事情让你改变了看法?
在Google工作了几周之后我开始想,“这家公司一定会做大。”我实际上回去跟他们要求更多的期权,结果他们说,你只能在接受offer之前交涉!
但我没想到Google真的可以飞起,直到我在那里大约一年之后我们与Yahoo发生了交易竞争。我们从当时正火的公司Inktomi那里抢走了Yahoo的交易。当时Inktomi应该市值在几十亿,我们能打败他们实在很不错。我还记得他们当时对那次交易失败还做了掩饰,说“搜索没什么用,真正的钱才是互联网的宝库。”
之后我想,“哇,这帮人真是傻瓜,我们早晚能超过他们。”从那以后,我们就不断赢得交易并打败其他公司。想想就激动。
Google怎样决定你的工作内容?
当时他们给了我和Marissa(https://en.wikipedia.org/wiki/Marissa_Mayer,Google的第20名员工)两个项目。一个是建立产品搜索,另一个是建立一个广告系统。我最后在产品搜索上花费了很多精力,因为看起来似乎产品搜索比广告系统更吸引人。后来我成了Onebox小组的一员,这个产品的基本思想是:你可以输入任何东西来获得答案,即使输入的不是常规的Web搜索也可以。
通常我都有很多产品上的想法,然后不断添加新功能。实际上我做了第一版的“您要找的是不是”功能,那是在我看了搜索查询日志之后,发现经常打错的不止我一个人。品质保证团队正在试图解决这些问题,以提高搜索质量的0.1%,然后我就想,“至少有20%的搜索被拼错了。要是能改正拼错的搜索,查询质量就能提高20%!”所以我做了这个功能。像这种的功能我还做了很多。
随着Google的成长,你还能一直做自己想要做的东西吗?创建Gmail是不是想做的东西之一?
在2001年前后,Larry发现每个团队都有自己的优先级,并没有做他认为从公司的战略角度上最重要的东西。他决定去掉管理层,围绕具体的项目来组织工程。他和当时的工程副总裁Wayne Rosing会与工程师坐在一起,给工程师指定项目。他们给我的项目就是“我们希望你做个电子邮件之类的东西。”这就是我得到的所有要求!所以我开始做一些电子邮件的东西,后来就成了Gmail。
在Google你怎样管理个人职业发展?
我从来没有认真考虑过整个“职业”的东西。我只是觉得大公司很可怕,我很不喜欢我在大公司接受到的一切,我不想躲在一个角落里做一些无关紧要的事情。我在大学一年级之后在微软做过实习,在实习的最后一天,我们组最聪明的一个工程师给了我一条建议:“你需要保证自己不会被放到角落里做一些不重要的事情。”我永远把这一条当做忠实的建议。我在Google的野心就是做一些很酷的产品,做一些重要的事情。
关于离开Google
为什么你决定离开Google?
我的女儿,也是我们的第一个孩子,出生比预计的早了100天。所以她的出生伴随着许多医学上的创伤,我们不得不在医院里呆了几个月。在一切都结束后,我很高兴地回到Google,因为我喜欢在Google工作。我兴奋得甚至前一天晚上都没睡好,我一直在想,“哦,我已经等不及回去工作了,我要回去工作!”
但第二天一进入办公室我立即没了精神。突然一下子就感觉像是回到了英特尔。部分原因可能是Google在我不在的这段时间里成长了很多,而另一部分原因则是“温水煮青蛙”效应::在我休假之前我根本没注意到一切都在缓慢地改变,但我回来之后我意识到,“哇,原来有这么多人在不知不觉中要求我做这么多我不在乎的事情。”我立即意识到,如果我想留在Google并获得成功,就必须适应大公司的氛围。我知道我能做到,但我不想做。我想做点别的,所以我辞职了。
关于如何成为优秀的工程师
成为优秀的工程师需要什么知识和技能?
计算机科学和其他任何工程都不一样,因为我们总是要和一大堆层次不同的抽象打交道。一些人只能在一个层次上工作,这样不会太有效,因为许多问题都需要在多个层次上解决。优秀的工程师需要从硅片的层次开始理解各个层的协议和系统。
怎样才能成为更好的工程师?
只要肯去做,实践是探索一切秘密的真理。
我从高中的时候就开始编程,而幸运的是,我这样做的原因是因为我没有别的事情可干。编程是我的兴趣,我永远都有想实现的的项目。我觉得没有任何事情能代替编写更多程序,因为你没办法在短时间内变得更好。我写了几年程序之后才敢说自己会写程序了。
与你共事过的最优秀的工程师都有哪些?
我共事过的最优秀的工程师之一就是Bret Tayler,他也是我在FriendFeed的联合创始人。我从来没遇到过如此优秀的工程师,同时也是如此优秀的产品经理、项目经理和设计师。他干什么都是天才,太不公平了!
关于Bret的记忆从Google时就开始了。他在Google甚至都不是工程师,不知道什么原因,他的职位是产品经理。作为Google地图的产品经理,他一直为JavaScript的速度慢而发愁,地图需要很长时间才能加载。所以有个周末他说,“我要重写JavaScript。”于是他重写了一切,让代码快了10倍,而代码量减少到1/3。他完全抛弃了整个团队的工程师工作了几个月的成果。能做到这一点的人实在太可怕了。
有人说他是10倍速工程师,我看是1000倍速。而且代码质量很高,也非常干净,绝没有任何普通的工程师能做到这一点。你可以找100万个普通的工程师,加在一起也做不到这一点,他们只会做得一团糟。
另一个人是Craig Silverstein,他是Google的第一名员工。他属于那种敲键盘和写代码速度能超过我的理解速度的人。有时候我喜欢看其他工程师工作,这样我就能学习他们的工作方法。但Craig太快了,我完全跟不上他的速度。屏幕一闪代码就过去了。他一直在切换Emacs或别的程序。他打字速度也非常快,我从来没见过那么快的人。
关于辞职和加入创业公司
你认为是不是每个在Google、Facebook或苹果工作的优秀工程师都应该辞职去创业?
不。
好。那谁应该,谁不应该呢?
如果你喜欢你现在的工作,而且也没有野心做别的事情,那么你辞职很可能会挣得更少、干得更多。如果你不喜欢钱少活儿多的工作,那我还是建议你别辞职了。
我想说,任何关于加入创业公司的通用建议都是错的,因为创业公司有太大的变数。绝大多数创业公司都是垃圾,只有很少的公司非常优秀,如果你加入了优秀的创业公司,那你能发挥得很好。如果随便选,那很可能会踩坑。
既然工作时长和薪水都不如大公司,那创业公司的好处是什么?
像今天Google这样的大型公司有太多聪明人,他们对于工作内容都非常有经验。所以,如果你加入Google,就只能在“正确”的级别上工作。但在创业公司,他们很可能缺乏必须的资源,所以你可以在你力不能及的级别上工作。我认为这是创业公司最迷人的地方。
Gmail就是一个例子。当时我只有24岁,从来没做过这么大规模的东西。Google今天绝对不会把这么大的项目交给一个只有24岁的没有经验的人。但在创业公司就能做这种项目。
今天,大公司给工程师的薪水远远高于你离开英特尔加入Google时的薪水。这种现象会如何影响工程师加入创业公司的抉择?
没错,这很简单。我觉得应该把创业公司看成一项投资,你实际上是在投资自己。你要相信在创业公司你能学得更快、发展得更快。如果你不认为创业公司能提供这一点,也许你不应该接受这份工作。如果去一个高手云集、发展迅速的地方能够成长得更快,或者成为你成为的角色,那么这个职位要比大公司更好。
我建议把加入创业公司当作回到学校学习的过程。在选择工作的时候要选择最好的学习机会,这才是最好的做法。这样,就算创业公司失败,你还可以回到Google,甚至拿到比以前更多的薪水,因为你比留下来的那些人有了更多的经验。
如果你想加入创业公司,应该怎样判断创始人是像Larry和Sergery那样的人,还是像Elizabeth Holmes那样的人?
没错, 这是最糟糕的组合:聪明人搞的一堆垃圾。我觉得你应该自己去面谈,问一些难以回答的问题,看看他们能否给出直接、有见地的答案,看看他们有没有逃避或轻视。如果他们有产品,尝试一下也能帮你做决定。我个人会躲开那些只有宣传没有产品的公司。
一般来说,在面试创业公司时,怎样才能确定他们是否适合你?
现在想来,Google打动我的一点,可能也是关于选择创业公司时的一点好建议,那就是他们的面试官问了我许多聪明的问题。他们问的问题都是只有真正擅长工作的人才能回答的问题。Urs问我,“假如你有个服务器,它运行得非常慢。你该怎样诊断问题的原因?”要想回答这个问题,你必须要对系统有深入的理解才行。
他们的问题需要从多个不同的层次考虑才能回答:“内核有什么问题?你是否理解硬盘并非输出信息的地方?你知道随机访问的时间是多少吗?”
我在面试的时候,遇到过一些其他公司问许多愚蠢的问题,比如“给出OSI网络模型的七层的名称”,或者一些写在教科书上的无聊东西。
而且,在我第一天去Google工作时,我感到了与英特尔不同的氛围。我很激动,我早上上醒来后很激动地去上班,办公室里永远都有高效的氛围。我觉得从这一点就能看出创业公司是否能成功——你进入办公室之后就能体会到。人们是否都在忙着工作,还是只是坐在那里刷Twitter浪费时间?人们去公司只是因为必须去,还是因为渴望工作才去?当时的Google真是个充满正能量的地方。
关于投资,加密货币,大学和开心
你认为成为工程师能让你成为更好的投资者吗?
也许吧。我的意思是,成为工程师能让你相信自己能做到一切!
我确实认为能将问题分解成更小的问题的过程在许多领域都有用。当然,作为投资者你需要去评价别人,特别是在技术领域没有技术背景的人很难做出正确的评价。如果有人说某件事情很容易或很难,那么没有技术背景的人就只能随波逐流了。
你加入Google的原因是喜欢Linux。现在的你还有什么感兴趣的技术吗?
这个问题我也很希望别人能告诉我答案!我能想到的最好的答案就是比特币和加密货币,我很肯定它们会吸引21岁的我。但加密货币不同的是,它里面充斥了各种幻想致富的垃圾,而这是Linux所没有的。
大学有用吗?
有用。至少,它能让你成长,让你独立。我不可能在高中毕业之后直接去英特尔,那是不可想象的。大学能教给你许多做人的道理。
在我上大学时,我已经有了第一份编程的工作。我与我父亲的一个朋友一起工作,他的工作是机械维修、工业机器人编程,这些机器人能从一个漏斗里取出金属棒然后放到研磨机里,我学了很多,但并没有认识任何写程序的人。能在大学里遇到许多会写程序的人让我很高兴,因为我能从他们那里学习。
为什么人不能永远快乐?
天啊,我不知道。我觉得可能是因为我们离革命的本源太远了。我们创造的这个世界很难让每个人都高兴。而且,还有一个行业的目的就是让我们不高兴,因为我们不高兴,就会为了我们的不高兴去购买“解决方案”,他们才能赚钱。
原文:https://triplebyte.com/blog/interview-with-gmail-creator-and-y-combinator-partner-paul-buchheit
作者:TRIPLEBYTE
译者:弯月,责编:郭芮
微信改版了,
想快速看到CSDN的热乎文章,
赶快把CSDN公众号设为星标吧,
打开公众号,点击“设为星标”就可以啦!
CSDN 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。
如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 CSDN 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱(guorui@csdn.net)。
推荐阅读: