写点什么

绩效远超预期却无法晋升,我于是离开了谷歌

  • 2020-02-17
  • 本文字数:4539 字

    阅读完需:约 15 分钟

绩效远超预期却无法晋升,我于是离开了谷歌

我作为一名开发者在谷歌呆了四年。今年 2 月 1 号,我辞职了,因为他们不肯给我买圣诞节礼物。


好吧,刚才只是开个玩笑,我辞职的真正原因比这个要复杂得多。

在谷歌的头两年

在头两年,我爱过谷歌。


在年度员工调查时被问及是否希望在谷歌呆满 5 年,我想都不用想,答案是肯定的。


我当然愿意在谷歌呆上 5 年了。我身边有世界上最好的工程师,我们使用着世界上最好的开发工具,吃着免费的美食。



我最近的绩效评级是“远超出预期”。如果我坚持下去,很快就会晋升——成为高级软件工程师。这是一个多么棒的头衔!在我的职业生涯中,我可以很自豪地告诉别人:“我曾经是谷歌的一名高级软件工程师“。


我的上司向我保证,我的晋升近在咫尺。他觉得我已经能够胜任高级工程师的工作了,只是需要一个合适的项目向晋升委员会证明我自己。

上司没有提拔你?

在谷歌,上司是不能直接提拔下属的,他们甚至连投票的资格都没有。


相反,谷歌的晋升是由更高级别工程师组成的委员会和你不认识的管理者决定的。


你需要提交晋升申请材料:一些团队成员提供的推荐信、你曾经写过的设计文档,以及一些可以用来解释为什么你值得晋升的小文章。


晋升委员会评审申请材料,并决定谁可以晋升。


在谷歌的头两年,我认为这个晋升机制很棒。当然,你的晋升命运交到了委员会手中。他们不受任何偏见或政治因素的影响,他们可以看到你过去的一切,并认可你的高质量代码和精明的工程决策。

但事实并非如此

在我第一次提交晋升申请材料之前,我并没有想过这种机制背后的逻辑。


在我的印象中,晋升委员会是公平公正的。如果我每天都选择正确的问题来解决,让代码库变得更好,帮助团队有效地完成任务,那么委员会也会看到这些,并嘉奖我。


但事实并非如此,我花了两年时间才知道背后的真相。

天真地工作

在那之前,我的主要工作是负责处理遗留数据。这个工作主要是维护数据管道,有时候工作量会增加,因为在负载压力下数据管道会出问题,经常悄无声息地出故障或产生错误的输出。这些故障需要几天才能诊断出来,因为从最开始就没有人写过文档。


我自豪而深情地维护着数据管道,让它慢慢走向正轨。我修复了几十个 bug,并编写了自动化测试,确保它们不会再出问题。我删除了几千行代码,这些代码要么已经没有用了,要么可以用更新的库来代替。在了解数据管道的过程中,我记录了很多东西,同事们也可以看到这些东西,而不只是我一个人。


但到了申请晋升时,我发现这些都是无法量化的。我无法证明我所做的事情给谷歌带来了积极的影响。

要么给出指标,要么跟什么都没发生一样

数据管道没有记录太多的指标,它记下的那些指标反而表示事情变得更糟。我修复的 bug 反而让整体的 bug 数增加了。之所以会这样,是因为我让管道在异常情况下快速抛出错误,而不是暗地里还把坏数据传递下去。我的工作极大地减少了开发人员修复这些故障的时间,但没有提供用于衡量时间的指标。


从表面上看,我的其他工作做得也不太好。有几次,为了帮助一个面临发布延迟风险的同事,我将自己的项目搁置了几周,甚至是几个月。这对整个团队来说是好事,但对于晋升来说却显得平淡无奇。在晋升委员会看来,同事的项目更大更重要,需要多个开发人员协作。如果他们能够说服我去帮助他们,那说明他们有很强的领导力,而我只是一个没有头脑的工人,自己的工作无关紧要,别人叫我去帮忙,说去就去。


我提交了第一个晋升申请,结果就像我所担心的那样:晋升委员会说我无法证明自己可以处理复杂的技术问题,他们看不到我给谷歌带来的影响。

从被拒绝中学习

被拒绝算是一个沉重的打击,但我并没有气馁。我觉得我的表现是超水平的,只是晋升委员会没有看到。我可以解决这个问题。


我觉得我在谷歌的头两年太天真了。我没有提前做足准备,确保我的工作可以留下书面记录。现在,我知道这个机制是如何运作的,我可以继续把工作做好,只是需要把它们更好地记录下来。


例如,我的团队因为错误警报收到了大量电子邮件。如果是以前,我只会把这些警报修复掉,但现在我知道,要让这项工作出现在我的晋升申请材料中,首先需要设置指标,这样就有了警报频率的历史记录。在申请晋升时,我会向委员会展示警报的下降趋势图。


不久之后,我接到了一个似乎注定要让我晋升的项目。它重度依赖机器学习,而机器学习在谷歌一直都很热门。它将原本需要数百个人手动执行的任务自动化了,所以给谷歌带来明显且客观的影响。在整个项目过程中,我还要带一名初级开发人员,这通常会给晋升加分。

节日礼物,如梦初醒

几个月后,谷歌结束了向员工赠送奢华节日礼物的传统,他们用原本购买礼物的预算为贫困学生购买 Chromebook。


不久之后,我注意到了两名员工之间的一段对话:


员工 A:你其实还是可以拿到礼物的。谷歌的股票升值了,你可以把股票卖掉,然后为自己买份礼物。

员工 B:如果我跟老婆说,我没有为她准备圣诞季礼物,但她可以用我银行卡里的钱买她想要买的礼物,那会怎样?

员工 A:你现在与谷歌之间只是一种商业关系。如果你把你和妻子之间的那种“浪漫”关系与你和谷歌之间的关系相提并论,那么你就错了。


等等,我与谷歌之间只是一种商业关系。


我居然花了两年半的时间才意识到这一点,这个听起来是不是有点奇怪?不过不得不说,谷歌在组织内部建立社区意识方面做得太到位了,让我们觉得我们不只是员工,我们就是谷歌。


那段对话让我意识到我不是谷歌,我只是为谷歌提供服务,以此来换取金钱。


所以,如果谷歌和我之间的商业关系只是为了服务双方各自的利益,那为什么我要把时间花在这些服务谷歌利益的任务上,为什么不是为我自己呢?如果晋升委员会不嘉奖我在 bug 修复或团队支持方面所做的工作,我为什么要做这些事情呢?

为了晋升而改变

我的第一次晋升申请给了我一个错误的教训。我原以为只需要继续把工作做好,但要把它们记录下来,让晋升委员会看到就可以了。但其实我应该反其道而行之:弄清楚晋升委员会想要什么,然后专门去做那些工作。


我采用了新的策略。在开始做一件事情之前,我会先问自己这样做是否有助于晋升。如果答案是否定的,我就不做了。


我的代码质量标准从“5 年之后还具有可维护性”变成了“能持续到我晋升就可以了”。我不记录或修复任何 bug,除非它们会影响项目发布。我避开了所有维护工作。我不再热心校园招聘志愿者工作。我原本每周参加一到两次面试,后来就不去了。

我的项目被取消了

后来,优先级发生了变化。管理层把我的项目交给了印度的姐妹团队。作为交换,那个团队给了我们一个他们的项目。这是一个没有文档的系统,基于几乎已被弃用的基础设施而构建的,但不管怎样,它仍然是生产环境的一个关键组件。我被安排去清理代码,并迁移到新的框架,同时又要保持它能够在生产环境中运行,并且要求性能要达标。


从晋升来看,这是几个月以来我所经历的一次挫折。因为我没有为交出去的项目发布任何东西,但我花了两个月时间,什么都没有留下。接下来,我需要花上几周的时间才能熟悉接手的系统,而要保持它能够运行,可能要多花上几个礼拜。

我还在做什么?

这是 6 个月来上司第三次在项目进行到一半时给我重新分配工作。每一次他都向我保证这与我的工作质量无关,完全是高层管理策略或团队人员变化导致的。


我开始高屋建瓴地看待正在发生的事情。撇开我的上司、上司的上司、晋升委员会不说,如果只看我和谷歌之间的“商业“关系,我们之间究竟发生了什么?


谷歌一直告诉我,在我完成一个项目之前,它是无法对我所做的工作作出任何评判的。但另一方面,我又无法完成任何一个项目,因为谷歌总是中途打断,然后分配给我新的项目。


这种感觉实在是很荒谬。


我的职业生涯被委员会支配着,他们只花了一个小时来考虑我是否可以晋升,他们的一个决策可以抹去我职业生涯几个月的进步。


最糟糕的是,我对自己的工作不满意。我不再问自己“如何才能解决这个具有挑战性的问题”,而是想着“怎样才能让这个问题看起来对晋升有帮助”。我讨厌这样。


就算我晋升了,那又怎样?人们普遍认为,每一次晋升都比上一次要难得多。为了继续推进我的职业生涯,我需要参与更大的项目,与更多的团队协作。但这也意味着项目可能会因为更多的因素而失败,因为超出了我的可控范围,这可能会浪费我几个月甚至几年的时间。

除了晋升还有什么路可走?

在这个时候,我发现了Indie Hackers这个网站。


它是一个为小型软件公司创始人提供的在线社区。这些人并不是要成为下一个扎克伯格,他们只想要建立适度可盈利的业务,用以支付他们的账单。


我一直很想创立自己的软件公司,但我只知道硅谷的创业模式。我认为,作为一名软件公司的创始人,大部分时间都会花在融资上,剩下的时间则花在了如何吸引下一批百万用户上。


Indie Hackers 为我们提供了另一种选择。大多数会员都是用自己的积蓄创办自己的业务,或者将其作为副业。他们不需要向投资人汇报,也不需要向委员会证明什么。


当然,也有不好的一面。他们的收入不那么稳定,而且面临着更多灾难性的风险。如果我在谷歌犯了一个让公司损失 1000 万美元的错误,我不需要承担任何后果。我只会被要求写一篇事后分析报告,让每个人都学习一下。对于 Indie Hackers 上的大多数创始人来说,一个 1000 万美元的错误就意味着业务的终结和几辈子的债务。


Indie Hackers 上的创始人引起了我的注意,因为他们可以掌控一切。不管是让业务大获成功还是让它多年停滞不前,都是他们在发号施令。但在谷歌,我感觉无法掌控自己的项目,更不用说我的职业发展或团队的发展方向了。


我想了几个月,最后决定了,我想成为一名 Indie Hacker。

在离开谷歌之前做的最后一件事

我在谷歌还有未完成的工作。在为晋升这件事投入了三年时间之后,我不想在离开时一无所获。再过几个月我又可以重新申请晋升了,所以我决定再试一次。


但在绩效考评期前的六周,我的项目又被取消了。


事实上,我的整个团队都被解散了。这在谷歌是很常见的,他们甚至委婉地把这个叫作碎片整理。管理层把团队的项目转给了印度的姐妹团队。我和其他成员必须在不同领域重新开始。


我还是申请了晋升。几周后,上司向我宣布了结果。我的绩效评级是“极好”,这可能是最高的分数,每轮考核大约只有 5%的员工能够拿到。晋升委员可以看到我过去 6 个月所做的工作,刚好那几个月正是我为晋升而做出改变的时期。


但他们觉得 6 个月不够长,所以,祝我下次好运吧。


上司告诉我,如果在接下来的 6 个月里我能够完成同样质量的工作,就有很大的晋升机会。我不能说上司的话完全没有诱惑力,但在过去的两年里,我已无数次听过“6 个月内有很大的晋升机会”这句话。


是该走的时候了。

接下来该怎么办

当我告诉别人我离开谷歌了,他们认为我一定有什么绝妙的创业点子,只有傻瓜才会放弃谷歌软件工程师这样轻松的工作。


但我确实是一个没有绝妙创业点子的白痴。


我的计划是去尝试不同的项目,每个项目花上几个月时间,看看有没有能够上道的,例如:


  • 继续在KetoHub上投入,看看能否让它盈利;

  • 基于 Sia(我经常提到的一种分布式存储技术)构建业务;

  • 多花点时间写作,想办法从中赚到钱。


谷歌是一个非常棒的工作场所,在那里我学到了很多有价值的技能。离开谷歌对我来说很艰难,因为我还有很多东西要学,但除了谷歌,也有很多其他很棒的公司。我不会一直有机会创办自己公司,我只是期待我将去向何处。

原文链接

Why I Quit Google to Work for Myself

延展阅读

为什么我离开了 BAT 们


2020-02-17 15:424796
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 388.6 次阅读, 收获喜欢 1980 次。

关注

评论 4 条评论

发布
用户头像
这个哥儿们对晋升还是有误解的,晋升不是对你辛苦工作对奖励,而是你满足下一个level的要求,而且确实也有对应的空缺。
2020-04-01 14:47
回复
用户头像
所以不论国内国外,都这个德行,容易晋升都都是可量化可得见摸得着的
2020-02-29 22:19
回复
用户头像
什么叫有技术没脑子,这个就算是范本了。总觉得被团队低估,总是被自身高估……
2020-02-18 14:28
回复
这样说太露骨了吧。可能只是经常和电脑打交道,而忘记了与人沟通的不同吧。毕竟人比电脑更复杂
2020-02-19 11:39
回复
没有更多了
发现更多内容

谈谈前端性能优化-面试版

loveX001

JavaScript

React组件之间的通信方式总结(下)

beifeng1996

React

PING命令解析

穿过生命散发芬芳

ping 1月月更

fastposter v2.11.0 天花板级的海报生成器

物有本末

海报 海报生成器 海报编辑器 海报生成 海报小程序

React源码分析(二)渲染机制

flyzz177

React

模块3作业-学生管理系统的架构设计文档

陈实

「架构实战营」

Java高手速成 | Spring、JPA与Hibernate的整合

TiAmo

hibernate Spring JPA Spring Java

细说react源码中的合成事件

flyzz177

React

用javascript分类刷leetcode17.栈(图文视频讲解)

js2030code

JavaScript LeetCode

如果才能做好准备好前端面试

loveX001

JavaScript

HummerRisk V0.8.0:新增金山云、K8s基准检测、源IP审计分析等

HummerCloud

Kubernetes 云安全 云原生安全

我们为什么一定要持有一枚 Smart Royal NFT?

股市老人

沙龙预告 | 1月11日举办数字化业务安全生产沙龙第2期

信通院IOMM数字化转型团队

数字化转型 IOMM 数字化业务安全生产

React Context源码是怎么实现的呢

flyzz177

React

外包学生管理系统架构文档

Geek_e5f2e5

论坛预告 | 1月9日举办2023 ICT深度观察政企数字化转型分论坛

信通院IOMM数字化转型团队

数字化转型 IOMM ICT深度观察

React源码分析(三):useState,useReducer

flyzz177

React

前端leetcde算法面试套路之双指针

js2030code

JavaScript LeetCode

跨集群流量调度实现 Kubernetes 集群金丝雀升级

Flomesh

K8s 多集群管理 流量管理

【团队效率提升】Python-PyWebIO介绍

京东科技开发者

html 软件 markdown Python. 企业号 1 月 PK 榜

2023-01-05:konradkleine/docker-registry-frontend是registry的web界面工具之一。请问部署在k3s中,yaml如何写?

福大大架构师每日一题

云原生 k8s 福大大

架构实战营 - 模块 3- 作业

zealot0317

React源码分析1-jsx转换及React.createElement

flyzz177

React

前端leetcde算法面试套路之二叉树

js2030code

JavaScript LeetCode

【12.30-1.6】写作社区优秀技术博文回顾

InfoQ写作社区官方

热门活动

这些js原型及原型链面试题你能做对几道

loveX001

JavaScript

前端经典面试题(有答案)

loveX001

JavaScript

TextView(文本框)详解

梦笔生花

android UI TextView

我们为什么一定要持有一枚 Smart Royal NFT?

鳄鱼视界

ReactDOM.render在react源码中执行之后发生了什么?

flyzz177

React

绩效远超预期却无法晋升,我于是离开了谷歌_文化 & 方法_MTLYNCH.IO_InfoQ精选文章