【译文】如何成为一个伟大而幸福的工程师

叁叁肆2018-12-07 09:53

翻译 :丁兴华

欢迎访问网易云社区,了解更多网易技术产品运营经验。


作为Gmail创始人和YC合伙人的保罗·布赫海特加入Google,如何成为一个伟大而幸福的工程师

保罗·布赫海特是YCombinator的一名合伙人兼工程师。他是Google的第23名员工,在Google创立了Gmail和Adsense的第一个原型。在离开Google后跟别人合伙创立了Friendfeed,其后来被Facebook收购的。

Triplebyte的CEO兼合伙人哈吉·塔加,与保罗坐谈他如何开始编程、加入Google并成为一名伟大的工程师。

访谈记录出于篇幅和清晰度的考虑有所修改。


成为一名程序员


你是如何开始编程的?

我刚开始有对编程有印象的时候是在玩一个虚构的RPG主机游戏。我卡在某个地方找不到需要的魔法手铐还是什么其它的东西。然后我觉得“与其在游戏中寻找,不如我直接黑进保存物品清单的数据文件”。我开始写程序来搞清楚游戏是如何存储东西的。然后我搞清楚了如何在我的物品清单里加入任何东西,甚至包括游戏中本不存在的。

然后我意识到,哇,这可比游戏本身有意思多了。在游戏中你被禁锢在它人的世界中。但通过编程,你可以在世界中为所欲为,对吧?这是个开放的环境,你的行为没有任何限制。从那时起,电子游戏相比编程就像是无意义的浪费时间了。

我真正开始编程其实要更早一些。一开始玩的时候我买了一台有一兆内存的386型电脑。我从编程论坛上找到一个写如何编程的文件和一个半调子C语言编译器。我通过这些东西懂一点。后来在hamfest我用11美金买了个带手册的Turbo C 2.0编译器。所以现在我有了一个管用的编译器和手册,然后我花了数年的时间埋头努力搞清楚它是怎么工作的。一开始我不是很喜欢这样,但我固执的下决心要把它搞明白。


你在上大学的时候觉得自己是个优秀的程序员吗?

我觉得我相当棒。我知道我那时不擅长做高扩展的东西但我的代码有用。我进大学的时候出于兴趣参加了ACM程序竞赛。最后我取得了亚军,然后我就觉得:“恩我还不错”


你为什么毕业后加入Intel?

我一直对创业公司和生意感兴趣。我10岁的时候就去我邻居家上门推销。我喜欢拿着清单去麻烦别人买东西。每卖一包贺卡我就能赚1美金。

毕业后我想在创业公司工作,但因为那时互联网上还没有那么多关于创业公司的信息导致我实在是不知道怎么找。但我知道他们可能在硅谷。那里是NetScape, SGI和一堆那么酷的公司所在地。我在加入Intel也是因为它在硅谷,而且我觉得这是个认识优秀人才和创业公司的好途径。我幼稚的幻想会在街上或者其它地方遇到他们。我觉得硅谷街上到处到是创业的公司和人。但这些都没有发生。


加入Google并创造Gmail


你为什么决定离开Intel?

总的来说,这份工作对我来说不够刺激。我不用工作的那么努力,直到有一天我坐在我的灰色隔间(我在一群被灰色墙壁包围的灰色小隔间之中,独自一人并听着白噪音)意识到:就像“我累了,我要回家休息”的感觉。我回到家,但一进门我就意识到“我已经不累了”。在Intel工作环境太疲乏了,我知道我要离开了。


你是怎么找到Google的,那时的招聘流程是怎么样的?

我特别喜欢Linux。实际上我在上大学之前大概93年的时候就用Linux了。我找了块只有60MB分区能用的破硬盘,在里面装了Yggdrasil Linux的发行版。它用来装一个小型Linux是够用了,但就不能再装下Emacs了,所以到我现在都用vi。

我会在Slashdot上阅读许多Linux相关的新闻。就是在那我知道了一个做Linux机器集群的小公司叫Google。对我来说还有什么比这更刺激的?而且他们有一个特别的Linux研究,所以他们经常在Slashdot的相关推荐上出现。并且他们有四种颜色而不是仅有灰色,所以我就去应聘了!

有意思的是,我的简历邮件由于他们邮件服务器上的误配置被退回了!但是当我第二天重新发送的时候他们已经修正了那个MX记录还是其它什么错误,然后有人给我回了个电话。我做了个电话面试,然后他们给我安排了一天现场面试。


你为什么决定要接Google的offer?

很简单,这是我唯一的offer。

其实这很令人兴奋,而且我觉得他们在做一些挺酷的事。但我并不认为那些业务或者公司会取得这么大的成功。我以为他们会中途出事并且被某个大型互联网公司碾压。那时候雅虎已经是一个巨型公司而且AltaVista(当时雅虎收购的搜索引擎公司 --- 译者注)有充足的资金。我搞不懂这个小公司怎么去竞争。但我决定不去关心。我想用Linux那套东西去工作而且我感觉在那会遇到几个聪明的家伙,或者他们之后会开一家会真正成功的公司。

事后我才意识到,Google的早期团队是极其出色的。我觉得他们在招聘人才方面做的非常好。在这方面,是由于他们在努力解决真正有意思的问题,而这正是聪明人喜欢做的。我记得Jeff Dean在他进Google的上家公司里刚入职时就立刻解决了所有问题。然后他问道:“现在我还能做什么?”说明已经没什么有意思的事情要做了。于是他离开了。他被Google挖来也是因为这里有意思的系统问题。

这形成了循环。那些聪明人会把更多聪明人带来。我觉得我们有Urs教授就像我们拥有UCSB整个系统部门一样。就像拉到一个人才的线头就把一串人才带出来。


所以你什么时候觉得Google不会死在半路了?

我在那边工作一周之后,就感觉:“恩这公司肯定能做大”。实际上我还回去跟他们要更多的股票期权,但他们说这只有在接offer之前可以谈!

即使这样在一年后我们与雅虎做交易之前,我都不觉得Google能真正成功。我们从当时野心勃勃的大公司Inktomi手中抢走了雅虎的订单。我们非常开心能在那当时值几十亿美金的大单上打败他们。我记得他们当时为了淡化失败公开宣称类似“搜索这种事并不重要,真正赚钱的是互联网缓存”

在那之后我觉得“哇,这些人太笨了,我们将会干掉他们”。从那时起,我们就继续赢得订单并碾压其它公司,非常刺激。


在Google他们怎么给你分配工作?

实际上一开始玛丽莎和我负责两个工程。一个是做搜索产品,另一个是做广告系统。我最终把更多精力投入在看起来更有意思的搜索产品上。我是一个叫OneBox小组的晚期成员,它的基本理念是你应该可以从任意输入中获得答案,即使它不是正规的搜索。

我经常从产品角度考虑问题,然后在开发的时候加些特性进去。实际上,我在研究了搜索日志后发现我不是唯一一个会犯拼写错误的人,于是做了第一版的搜索纠错功能。质量保障团队要在那些繁杂的东西中力求把搜索结果准确度提高0.1%,然后我想:“至少20%的搜索输入是拼写错误的,如果我解决拼写问题,就能提升20%的效果”。于是我把他们搞在一起。我经常把很多东西像这样搞在一起。


作为Google团队的一员,你可以自由去搞你感兴趣的东西吗?Gmail也是这样造出来的?

大概在2001年,由于各小组都做他们自己最优先的事而让拉瑞(指Google的创造人之一拉里·佩奇 --- 译者注)认为战略上对公司最重要的事受到阻挠。他的解决办法是取消统一管理机构改为按具体项目划分。他和当时的工程副总裁韦恩·罗辛会跟工程师们坐下来交给他们一些项目。他们说:“我们希望你能做一个类似电子邮件的东西”。我知道的就是这些。于是我去在电子邮件上做了些东西,成了今天了Gmail。


你怎么规划你在Google时期的职业生涯?

我从未真正参与整个“生涯”这种事。感觉就像个可怕的大公司。我总是对那些我觉得是大公司的东西非常敏感。我只是不想被困在角落里做些无关紧要的事。我大一后在微软实习。在实习期的最后一天,一位优秀的工程师给我一条建议:“确保他们不会让你在一个角落里做些不重要的事”。我一直记得这条建议。我在Google的抱负就是去开展一个优秀的产品或者做些重要的事。


关于离开Google


你为什么离开Google?

我的第一个孩子是个女孩,早产100天。我们在医院呆了数月,围绕她的出生有很多医疗创伤。当一切都结束的时候我非常兴奋能回去工作因为我实在太爱Google了。我反复想这件事直到失眠“天哪我迫不及待要回去,我要干活!”

但是当第二到来的时候,我精疲力尽。我突然有种在Intel的感觉。一部分是因为我不在的时候Google成长了很多,这也是温水煮青蛙的效应:在我离开的这段时间,我没有发觉事情在缓慢变化,但当我回来的时候我意识到了。“哇,我在会议上遇到一群我不认识的人在指挥我做一些我不关心的事”。我立刻意识到如果我继续呆在Google,还想获得成功与影响力的话,我将不得不成为大公司的一员。我知道我有能力做到,但我不想这样。我想做些别的事情,所以我离开了。


成为一名伟大的工程师需要什么


你觉得成为一名优秀工程师需要什么技能和知识?

由于我们在工作中有许多层抽象,计算机科学与几乎其它任何工程的原则都不同。因为通常情况下问题会涉及到各抽象层所以只了解其中一层的人没办法解决。优秀的工程师从硅基开始了解计算机的各种层级,协议和系统。


你如何成为更优秀工程师?

去做事。在大多数事情上自己参与是做好事情的秘诀。我从高中时代开始编程,而且我幸运的除了编程不用做其它的事。编程是我的爱好,我总是有一些项目去实践。我认为没什么能替代大量的编程因为你不能在短时间内真正精通它。我的确花了数年时间才会说自己有多么优秀。


谁是你合作过的最棒的工程师?什么造就了他们?

我合作过印象最深刻的工程师是布雷特·泰勒,同时也是我在FriendFeed的合伙人。我从没遇到任何人能同时兼任相当厉害的工程师、产品经理、管理者和设计师。他所有都擅长,这不公平!

关于布雷特我清楚记得的故事发生在我们在Google的日子里。他那时连一个工程师都不是,不知道为什么他是一个产品经理。作为Google地图的产品经理,他不爽JavaScript的缓慢,加载耗时太长。于是,某个周末他说:“我要重写它”。然后他重写了整个工程把大小缩减到三分之一而且运行速度快了十倍。他完全抛弃了一组工程师花费数月写的代码。简直不可思议。我们都说10倍效率工程师,他那简直是1000倍。而且代码优秀而整洁。完全不是普通工程师能做到的。你就是给我一百万普通工程师也不可能做到。他们会弄得一团糟。

还有另一个人叫克雷格·西尔弗斯坦,他是Google非常早期的员工。他在我理解他在做什么之前就能编程完毕。有时我喜欢看别人工作去学习他们做事的方式。但是跟克雷格太快我根本跟不上。他不断的在Emacs翻页或其它什么事。我从没见过别人像他打字那么快。


什么时候离职并加入创业公司


你觉得所有现在在Google,FaceBook或者Apple工作的优秀工程师应该跳槽去创业公司吗?

不是的


好吧,谁应该谁不应该呢?

如果你现在工作的开心,而且没有追求其它东西。你跳槽了或许会事更多钱更少。如果你无法接受事更多钱更少,那么我会建议你留在那里。

我觉得需要加个引言:普遍来看,加入创业公司都是错误的。因为他们差异巨大。大部分创业公司都是垃圾。他们之中仅有一小部分是例外,如果你加入了例外的那个,你能做得相当好。但如果你随便选一个,你很可能过得困难。


如果工作时间与报酬都不好,在创业公司工作还有什么好处?

一个大公司,像今天的Google,拥有这群经验丰富目的明确的聪明人。所以如果你加入Google,你会在工作中发挥出正常的水平。但作为一家创业公司,他们很可能没有需要的资源,所以你可能需要超水平发挥。这是我觉得在创业公司真正好的地方。

Gmail就是个例子。那时我才24岁,我从来没有完成或者做任何类似规模的东西。Google今天再不会把那样的项目交给相对没什么经验的24岁少年。但是在创业公司你能获得一个本应在成熟公司里由更高级工程师负责的项目。


现在大型技术公司会在像你这样的工程师从因特尔跳槽去谷歌的时候用加薪挽留。这会对工程师跳槽去创业公司产生怎样的影响?

是的,这很难。我觉得你要把它当然投资来看。你本质上是在投资你自己。你要相信你自己在创业公司会更快的学习和发展。如果你觉得他们不能提供这些,或许你就不应该接受这份工作。如果你去的公司有一群聪明且效率高的同事,你会比在大公司更快的成长为一名工程师或者其它职位。

我会建议大家把加入创业公司当做去读研究生。选择工作的时候像进修。这是最好的事情。那么如果这家公司倒闭了,因为你已经成为比之前呆在原公司的那些工程师更优秀了,你回Google的时候会薪水更高。


如果你考虑加入一家创业公司,怎么分辨创始人的优劣?

是的,他们就像精英与垃圾。我觉得你要简单面试他们一下。问一些有难度的问题看他们是否会正面且睿智的回答。如果有能试用的产品也可以。我不会去牛皮吹的天响但没产品的公司。


总而言之,你在面试的时候如何决定这家公司是否适合你?

就像刚才说的,Google最打动我的一点--同时也适用于每个跳槽去创业公司的人--是面试全程都在问聪明的问题。他们问我:“如果你有一台原因不明的慢服务器,你如何诊断出原因?”你需要非常了解系统才能回答这个问题。

他们的问题需要你在各个方面上的思考:“内核中运行着什么?你是否理解硬盘分割数据的原理?你是否了解随机查找的耗时?”

除Google外我只面试了一家公司,而且他们问了类似“列出七层OSI网络模型的名字”这种蠢问题,或者其它能从书本上找到的东西,一点意思都没有。

当然,我刚入职Google的时候,我有种跟Intel相反的感觉。我很兴奋,一醒来就想去工作。办公室里一直有这种生产力的骚动。我觉得这也是了解一家公司是否优秀的方式:一进门就能知道。人们是忙着工作还是坐在一起聊天打发时间?人们是不得不上班还是急于去工作?那时候的Google真的是个充满活力的地方。


关于投资,加密,大学和幸福


你觉得工程师身份有助于你成为更好的投资人吗?

可能吧,我是指作为一名工程师使有搞定一切的自信!

我觉得把大问题分解的能力在很多领域都有帮助。当然了,做为一名投资人你需要有能力去评估别人并且避免不公平对待。特别是技术的事情,没有技术背景的人很难搞定。如果有人说某事很难或者很容易做,不懂技术的人也只能相信他们的话。


你加入Google是因为极度热爱Linux。今天还有这么喜欢的技术吗?

我很期待别人来揭晓问题的答案。我觉得最接近的东西应该是比特币和加密技术了。我确信他们会吸引21岁的我。但加密技术与Linux的不同点在于,它充满了那些暴富的骗子。


大学有用吗?

我觉得有。那是成长和自立的阶段。我不想高中毕业就直接去Intel。那太可怕了。大学里有很多人的成长。

我上大学的时候已经有了第一份编程工作。我和一个朋友的父亲一起工作,他是做机器维修和机器人编程的,好让那些机器人从车的货斗里挑出金属棒再放到研磨器上。我学到了很多,但我并没真正认识会编程的人。我喜欢在学校里认识会编程的人因为可以向他们学习。


为什么总是有人不幸福?

额,我不知道。我想我们已经进化得太远了。我们建立了一个难以让人们幸福的世界。不仅如此,整个行业发展让我们不幸福。它就是通过让我们不开心再去买所谓“解决方案”来盈利的。

好的,就到这里,谢谢保罗


免费领取验证码、内容安全、短信发送、直播点播体验包及云服务器等套餐

更多网易技术、产品、运营经验分享请点击