我作为一名开发者在谷歌呆了四年。今年 2 月 1 号,我辞职了,因为他们不肯给我买圣诞节礼物。
好吧,刚才只是开个玩笑,我辞职的真正原因比这个要复杂得多。
在谷歌的头两年
在头两年,我爱过谷歌。
在年度员工调查时被问及是否希望在谷歌呆满 5 年,我想都不用想,答案是肯定的。
我当然愿意在谷歌呆上 5 年了。我身边有世界上最好的工程师,我们使用着世界上最好的开发工具,吃着免费的美食。
我最近的绩效评级是“远超出预期”。如果我坚持下去,很快就会晋升——成为高级软件工程师。这是一个多么棒的头衔!在我的职业生涯中,我可以很自豪地告诉别人:“我曾经是谷歌的一名高级软件工程师“。
我的上司向我保证,我的晋升近在咫尺。他觉得我已经能够胜任高级工程师的工作了,只是需要一个合适的项目向晋升委员会证明我自己。
上司没有提拔你?
在谷歌,上司是不能直接提拔下属的,他们甚至连投票的资格都没有。
相反,谷歌的晋升是由更高级别工程师组成的委员会和你不认识的管理者决定的。
你需要提交晋升申请材料:一些团队成员提供的推荐信、你曾经写过的设计文档,以及一些可以用来解释为什么你值得晋升的小文章。
晋升委员会评审申请材料,并决定谁可以晋升。
在谷歌的头两年,我认为这个晋升机制很棒。当然,你的晋升命运交到了委员会手中。他们不受任何偏见或政治因素的影响,他们可以看到你过去的一切,并认可你的高质量代码和精明的工程决策。
但事实并非如此
在我第一次提交晋升申请材料之前,我并没有想过这种机制背后的逻辑。
在我的印象中,晋升委员会是公平公正的。如果我每天都选择正确的问题来解决,让代码库变得更好,帮助团队有效地完成任务,那么委员会也会看到这些,并嘉奖我。
但事实并非如此,我花了两年时间才知道背后的真相。
天真地工作
在那之前,我的主要工作是负责处理遗留数据。这个工作主要是维护数据管道,有时候工作量会增加,因为在负载压力下数据管道会出问题,经常悄无声息地出故障或产生错误的输出。这些故障需要几天才能诊断出来,因为从最开始就没有人写过文档。
我自豪而深情地维护着数据管道,让它慢慢走向正轨。我修复了几十个 bug,并编写了自动化测试,确保它们不会再出问题。我删除了几千行代码,这些代码要么已经没有用了,要么可以用更新的库来代替。在了解数据管道的过程中,我记录了很多东西,同事们也可以看到这些东西,而不只是我一个人。
但到了申请晋升时,我发现这些都是无法量化的。我无法证明我所做的事情给谷歌带来了积极的影响。
要么给出指标,要么跟什么都没发生一样
数据管道没有记录太多的指标,它记下的那些指标反而表示事情变得更糟。我修复的 bug 反而让整体的 bug 数增加了。之所以会这样,是因为我让管道在异常情况下快速抛出错误,而不是暗地里还把坏数据传递下去。我的工作极大地减少了开发人员修复这些故障的时间,但没有提供用于衡量时间的指标。
从表面上看,我的其他工作做得也不太好。有几次,为了帮助一个面临发布延迟风险的同事,我将自己的项目搁置了几周,甚至是几个月。这对整个团队来说是好事,但对于晋升来说却显得平淡无奇。在晋升委员会看来,同事的项目更大更重要,需要多个开发人员协作。如果他们能够说服我去帮助他们,那说明他们有很强的领导力,而我只是一个没有头脑的工人,自己的工作无关紧要,别人叫我去帮忙,说去就去。
我提交了第一个晋升申请,结果就像我所担心的那样:晋升委员会说我无法证明自己可以处理复杂的技术问题,他们看不到我给谷歌带来的影响。
从被拒绝中学习
被拒绝算是一个沉重的打击,但我并没有气馁。我觉得我的表现是超水平的,只是晋升委员会没有看到。我可以解决这个问题。
我觉得我在谷歌的头两年太天真了。我没有提前做足准备,确保我的工作可以留下书面记录。现在,我知道这个机制是如何运作的,我可以继续把工作做好,只是需要把它们更好地记录下来。
例如,我的团队因为错误警报收到了大量电子邮件。如果是以前,我只会把这些警报修复掉,但现在我知道,要让这项工作出现在我的晋升申请材料中,首先需要设置指标,这样就有了警报频率的历史记录。在申请晋升时,我会向委员会展示警报的下降趋势图。
不久之后,我接到了一个似乎注定要让我晋升的项目。它重度依赖机器学习,而机器学习在谷歌一直都很热门。它将原本需要数百个人手动执行的任务自动化了,所以给谷歌带来明显且客观的影响。在整个项目过程中,我还要带一名初级开发人员,这通常会给晋升加分。
节日礼物,如梦初醒
几个月后,谷歌结束了向员工赠送奢华节日礼物的传统,他们用原本购买礼物的预算为贫困学生购买 Chromebook。
不久之后,我注意到了两名员工之间的一段对话:
员工 A:你其实还是可以拿到礼物的。谷歌的股票升值了,你可以把股票卖掉,然后为自己买份礼物。
员工 B:如果我跟老婆说,我没有为她准备圣诞季礼物,但她可以用我银行卡里的钱买她想要买的礼物,那会怎样?
员工 A:你现在与谷歌之间只是一种商业关系。如果你把你和妻子之间的那种“浪漫”关系与你和谷歌之间的关系相提并论,那么你就错了。
等等,我与谷歌之间只是一种商业关系。
我居然花了两年半的时间才意识到这一点,这个听起来是不是有点奇怪?不过不得不说,谷歌在组织内部建立社区意识方面做得太到位了,让我们觉得我们不只是员工,我们就是谷歌。
那段对话让我意识到我不是谷歌,我只是为谷歌提供服务,以此来换取金钱。
所以,如果谷歌和我之间的商业关系只是为了服务双方各自的利益,那为什么我要把时间花在这些服务谷歌利益的任务上,为什么不是为我自己呢?如果晋升委员会不嘉奖我在 bug 修复或团队支持方面所做的工作,我为什么要做这些事情呢?
为了晋升而改变
我的第一次晋升申请给了我一个错误的教训。我原以为只需要继续把工作做好,但要把它们记录下来,让晋升委员会看到就可以了。但其实我应该反其道而行之:弄清楚晋升委员会想要什么,然后专门去做那些工作。
我采用了新的策略。在开始做一件事情之前,我会先问自己这样做是否有助于晋升。如果答案是否定的,我就不做了。
我的代码质量标准从“5 年之后还具有可维护性”变成了“能持续到我晋升就可以了”。我不记录或修复任何 bug,除非它们会影响项目发布。我避开了所有维护工作。我不再热心校园招聘志愿者工作。我原本每周参加一到两次面试,后来就不去了。
我的项目被取消了
后来,优先级发生了变化。管理层把我的项目交给了印度的姐妹团队。作为交换,那个团队给了我们一个他们的项目。这是一个没有文档的系统,基于几乎已被弃用的基础设施而构建的,但不管怎样,它仍然是生产环境的一个关键组件。我被安排去清理代码,并迁移到新的框架,同时又要保持它能够在生产环境中运行,并且要求性能要达标。
从晋升来看,这是几个月以来我所经历的一次挫折。因为我没有为交出去的项目发布任何东西,但我花了两个月时间,什么都没有留下。接下来,我需要花上几周的时间才能熟悉接手的系统,而要保持它能够运行,可能要多花上几个礼拜。
我还在做什么?
这是 6 个月来上司第三次在项目进行到一半时给我重新分配工作。每一次他都向我保证这与我的工作质量无关,完全是高层管理策略或团队人员变化导致的。
我开始高屋建瓴地看待正在发生的事情。撇开我的上司、上司的上司、晋升委员会不说,如果只看我和谷歌之间的“商业“关系,我们之间究竟发生了什么?
谷歌一直告诉我,在我完成一个项目之前,它是无法对我所做的工作作出任何评判的。但另一方面,我又无法完成任何一个项目,因为谷歌总是中途打断,然后分配给我新的项目。
这种感觉实在是很荒谬。
我的职业生涯被委员会支配着,他们只花了一个小时来考虑我是否可以晋升,他们的一个决策可以抹去我职业生涯几个月的进步。
最糟糕的是,我对自己的工作不满意。我不再问自己“如何才能解决这个具有挑战性的问题”,而是想着“怎样才能让这个问题看起来对晋升有帮助”。我讨厌这样。
就算我晋升了,那又怎样?人们普遍认为,每一次晋升都比上一次要难得多。为了继续推进我的职业生涯,我需要参与更大的项目,与更多的团队协作。但这也意味着项目可能会因为更多的因素而失败,因为超出了我的可控范围,这可能会浪费我几个月甚至几年的时间。
在离开谷歌之前做的最后一件事
我在谷歌还有未完成的工作。在为晋升这件事投入了三年时间之后,我不想在离开时一无所获。再过几个月我又可以重新申请晋升了,所以我决定再试一次。
但在绩效考评期前的六周,我的项目又被取消了。
事实上,我的整个团队都被解散了。这在谷歌是很常见的,他们甚至委婉地把这个叫作碎片整理。管理层把团队的项目转给了印度的姐妹团队。我和其他成员必须在不同领域重新开始。
我还是申请了晋升。几周后,上司向我宣布了结果。我的绩效评级是“极好”,这可能是最高的分数,每轮考核大约只有 5% 的员工能够拿到。晋升委员可以看到我过去 6 个月所做的工作,刚好那几个月正是我为晋升而做出改变的时期。
但他们觉得 6 个月不够长,所以,祝我下次好运吧。
上司告诉我,如果在接下来的 6 个月里我能够完成同样质量的工作,就有很大的晋升机会。我不能说上司的话完全没有诱惑力,但在过去的两年里,我已无数次听过“6 个月内有很大的晋升机会”这句话。
是该走的时候了。
谷歌是一个非常棒的工作场所,在那里我学到了很多有价值的技能。离开谷歌对我来说很艰难,因为我还有很多东西要学,但除了谷歌,也有很多其他很棒的公司。我不会一直有机会创办自己公司,我只是期待我将去向何处。
撰文:InfoQ