Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

靠跳槽拿到头衔

我在 Fastly 入职时的职级就是 Principal Engineer。所以说实话,对我来说,最关键的因素就是换公司。我做的工作类型并没有发生巨变,但正是换公司这件事,最终让我拿到了这个头衔。——Keavy McMinn

我父亲是一名经济学教授。他二十多岁拿到博士学位后,就在一所大学开始教书,在那所大学拿到终身教职,又在四十多年后从那里退休。在技术行业,这听起来像个童话。

很少有软件公司拥有四十年的历史,而在一家公司干满四十年职业生涯的人就更少了。曾经有个段子,说很多工程师为了最大化股票归属收益,会在一家公司待一年或四年,然后跳去下一家。即便真有过这种事,对于立志成为或已经成为 Staff 及以上级别的人来说,这也绝不是常见行为。

相反,一般来说,只要环境还能支撑他们成功,这些人就会留下来,公司也会奖励他们的坚守。如果环境变了,他们往往要么很快离开,要么在耗尽心力、精疲力竭之后才离开。

从 Senior Engineer 晋升到 Staff 及以上,需要多年时间去建立可见度和人际信任,这让你在感觉自己“就差”临门一脚时,很难下决心离开。离开,仿佛意味着一切从零开始。

但话说回来,正如 Keavy McMinn 所描述的,很多人拿到第一个 Staff 及以上头衔,恰恰是通过加入一家新公司。即便你在内部已经积累了足够的信任,有时候离开反而是最有效的出路。

对你来说,什么是正确的决定?

在继续之前,我想先承认两种截然不同的跳槽处境:一种是拥有特权的灵活,另一种是刚性的约束。你的居留身份可能依赖于工作签证。你可能要养活一大家人。你可能被限制在雇主很少的某个地理区域。本章的建议主要针对前一种情况,而能走到追求 Staff 职级这一步的技术人,大多处于前一种情况。如果你的处境并非如此,请务必对这些建议打折扣。

为什么离开管用

最了解你优势的公司,就是你现在的公司,它也是最有可能给你 Staff 及以上职级的公司。然而,实际授衔取决于太多偶然因素,现实往往并非如此。

如果你的团队整体非常资深,你的影响力可能会被归功于同事,从而很难证明你达到了 Staff 工程师的水平。你的经理可能预算有限,容不下另一个 Staff 工程师。你可能缺少内部 sponsor。你的公司可能根本不需要再多一个 Staff 工程师。以上任何一条,都可能意味着:你明明该被晋升,但现在的公司就是不会推你。

反过来,当你去面试新机会时,你可以一直面下去,直到找到一家愿意给你这个头衔的公司。你还可以有意去面一些发展阶段更早的公司,它们往往更看重你的经验。面试过程还会自动带来一个 sponsor—— hiring manager,而在面试这个阶段,他的利益和你的利益是一致性最高的时刻。

技术面试对工作成功与否的预测既不稳定也不可靠,这对行业和公司都是坏事,但如果你下定决心要拿到 Staff 及以上头衔、并且愿意广泛撒网,这反而对你有利。面试给了你做“偏见套利”的机会:找到一家格外看重你的某种特质的公司。那可能是一家看重技术大会演讲曝光度的公司,看重你的 API 设计经验的公司,或者看重你的编译器方向博士论文的公司。

同样,有时你会在一家公司陷入僵局,过去的声誉阻碍了你前进。也许你在指出包容性问题后被贴上了“难搞”的标签。也许你在午餐时让一位有影响力的总监难堪,他因此卡住了你的晋升。换一家新公司,你就可以甩掉这些包袱。

当然,你能不能_真正_甩掉技术圈里的过去,永远是个未知数。这个圈子有时候感觉挺小的。如果你在大厂待过、在技术中心城市工作超过十年,那么面试你的人里几乎肯定有你的熟人。

如果你在某家公司有一段糟糕的经历,也许是遇到了霸凌你的经理,也许是你个人生活正好处于艰难时期,那感觉就像一片阴云,毒害着你未来的机会。不过,和面试本身一样,推荐信和背调也充满随机性。如果你还需要证据,看看那些屡屡骚扰他人却依然能一家接一家地被知名公司录用的人就知道了。

离开之前可以先试试的事

如果你是因为缺乏兴趣、激情、支持或机会而想离开,值得先在内部看看水温。这样既能带着你的人脉走,又能获得换公司的大部分好处。取决于公司的规模和增速,这对你来说可能不是一个选项,但确实有人每两到三年就在同一家母公司内部换个岗位,并觉得这是保持投入和学习的有效方式。

另一方面,如果你是因为倦怠或耗竭而考虑离开,有时可以谈一个带薪或无薪的学术休假(sabbatical),用几个月给自己回血,通常还会顺带换个内部岗位。这在大公司更常见。(顺便说一句,你的同事休产假不是“在休假”,也不是“在度假”。)

裸辞

说到倦怠,如果你已经_特别_倦怠,值得考虑没有找好下家就直接辞职。用下面这个简单的清单可以判断这对你是否合适:

  • 你的签证支持这么做吗?

  • 不工作的话,你的积蓄能支撑至少一年吗?

  • 你身处岗位密度高的就业市场、可以远程工作,或者对下一份工作的地点很灵活吗?

  • 你擅长面试吗?

  • 当别人问你为什么裸辞时,你能讲出一个连贯的理由吗?

  • 前公司的同事里,有人愿意给你写正面推荐信吗?

如果以上全是肯定的,我还没见过谁_后悔_休这种长假的。不过要注意,只有休了半年以上的人,才会觉得自己脱胎换骨。休得短的人虽然也觉得有收获,但回来时往往只恢复了一部分。如果你真去休假,我强烈建议把经历写下来。即使不分享,写作本身也会帮你消化这些经历。

纵身一跃

如果你在现在的公司离 Staff 晋升只差一步,那外面一定还有另一家公司愿意给你 Staff 头衔。至于你在那里开不开心、拿到头衔后有没有支持,那就很难提前判断了。如果你的内部声誉已经受损,或者你一次次走到晋升门口却总被不断移动的标准线挡回来,而头衔对你又很重要,那就该认真考虑换个地方了。到某个时候,你必须听懂现在的公司在告诉你什么。

反过来,如果除了头衔,你对现在的岗位很满意,不妨想想能不能更有策略地去争取晋升。很多人在通往 Staff 及以上的晋升路上都会卡住,用晋升材料(promotion packet)这类方法可以帮助你走出僵局。如果你已经把能用的方法都用了,也认真投入了自我成长,还是走不通——那大概就是该换环境的时候了。

话虽如此,这些事也容易想太多。很少有人在十年后,还会津津乐道当年留下还是离开某个工作的故事。

找到合适的公司

拿到 Staff 及以上职级的魔法咒语只有几条:要么在换工作时谈下头衔,要么找一个支持性的环境“原地 baked”,在有实权的 sponsor 为你背书的同时积累内部信任。而两条咒语最重要的试剂,都是选对施法的公司。

好消息是,你去面一家新公司,虽然可能要花_几周_时间去判断能不能在那里拿到 Staff,但你不需要花_几年_。另一方面,如果你是想找一家能加入并长期成长的公司,那就是一段长达数年的、深入未知组织的旅程。这是个艰难的决定,而选对适合_你_的公司,会极大影响你能不能拿到 Staff 及以上职级。

格外看重你的公司

如果你的目标是职业加速度,那就加入一家因为某种原因格外看重你所擅长之事的公司。比如,Fastly 看重 Keavy 的 API 设计经验,Stripe 看重 Dmitry 的编译器工作。如果你的某种特长正好补上了限制他们成功的短板,你对公司的影响力会格外大。

管理得好的组织,看重的是你擅长的事。管理得不好的公司,看重的是你的身份。比如,一种把攻击性当领导力的文化,确实会提拔和围绕最有攻击性的人,但这会损害它的文化和团队。有时你会遇到一家公司,总体上给你的评价似乎合理,因为它看重你的某些附带属性,却不看重你自己认为有价值的贡献;这看起来行得通,但一般来说,这是 frustrations 的配方。

精英派和程序派

当你想选一家能帮你完成 Staff 转型的公司时,有很多公司价值观需要考量。其中特别重要的一点,是看清公司领导层本质上信奉的是重例外的“精英主义(meritocratic)”世界观,还是重一致性的“程序主义(proceduralist)”世界观。很少有公司完全处在光谱的某一端,但大多数会明显偏向一边。

当然,人们不会用这些词来描述自己。前一种风格几年前还会自称 meritocracy,现在这个词不流行了,他们会避开它,但核心信念没变。这种风格在硅谷特别常见,高度依赖例外,集中资源追捧一小撮被珍视的人。一般来说,在这类公司,如果你恰好符合他们心目中高潜力的样子,你会非常成功;如果不符合,日子会很难过。

另一种风格的公司相信一致带来公平。他们是先设计好钟表、上好发条、看它走字、偶尔修理的那种:按政策办事,而不是按例外办事。这类公司往往更结构化、更少凭直觉,能让更多人获得机会,但也可能变成僵化的官僚机构,在机器碾过个人时还面露得意。

不可避免地,精英派和程序派都把自己的世界观当作道德立场,而取决于你是谁、公司领导层是谁,你的体验会天差地别。

在面试过程中,可以用下面这些方法来分辨这两种心态:

  • 薪酬带宽很 rigid 且_真的严格执行_的公司,往往是程序派主导。愿意随意打破带宽的,是精英派。

  • 愿意为某个人凭空设岗、只为把他招进来的,往往是精英派主导。按既定编制招人的,是程序派。

  • 面试流程随意、 unstructured、想感受你的“气质”的公司,特别是面高级别岗位时,往往是精英派主导。流程越结构化,越偏向程序派。

  • 喜欢临时起意、凭空加一轮没有评分标准的面试的,往往是精英派。严格按标准评估你、即使不能让你发光的,往往是程序派。

精英派公司和程序派公司本身并没有谁更能把你推上 Staff 及以上。关键取决于你的身份,以及公司领导层的身份。这两块拼图对得上还是对不上,决定了你在追求 Staff 及以上职级时会得到多少支持、遇到多少阻力。

原型

大多数公司只招一两种 Staff archetype,尽管它们招人时都用同样的头衔来描述要招的岗位。要摸清一家公司的偏好,最有效的方法是去找它们现有的 Staff 及以上工程师聊聊,感受一下他们日常做什么。大多数公司并没有认真想过自己支持哪种 Staff 工程师,所以直接问往往不如预期管用。

足够大的公司最终每种 archetype 都会有一些,但那要很久以后,通常要等到工程组织扩张到_几千_人规模_之后_。

增长

如果你一直在高速增长、顺风顺水的创业公司工作,你可能想不到,有的公司根本没有容纳更多 Staff 及以上工程师的空间,但这在增速放缓的公司里出奇地常见:它们既没有这样的工作,也没有这样的预算。还没找到产品市场契合度(product-market fit)的公司也常受此约束——公司需要高度对齐、频繁转向,能留给领导岗的位置就很少;例外可能是那些恰好在卖开发者导向或技术基础设施类产品的公司。

如果你加入一家高速增长的公司,新的 Staff 机会会自然冒出来。在增速慢的公司,你可能要等有人腾出位置才有机会。这不是说你一定要去高速增长的公司——它们往往压力大、流程永远过时——这只是另一个考量因素。

要在新公司拿到 Staff 及以上的 offer,需要公司内部有人相信你,并愿意顶着相当大的组织阻力把你推到这个头衔上。要在内部晋升到 Staff 及以上,需要你的经理和管理链相信你,并愿意顶着_更大_的阻力把你推上去。没有一个有实权的领导者愿意为你投入组织资本,你就拿不到领导岗。

在找一家能追求 Staff 及以上职级公司时,很大一部分工作是找到一家能给你有效 sponsor 的公司。出去面试往往能有效找到 sponsor:你的 prospective hiring manager 通常有充分对齐的动机给你 Staff offer。同样重要的是,你投入的时间虽然不少,但和在一家公司干两年才发现永远到不了目标相比,还是_相对_低的。

最好找的 sponsor 是以前和你共事过的人。一个资深领导加入一家公司、再把老同事陆续带来,这种“楔形编队(flying wedge)”模式是知名且被鄙视的模式,靠的正是这种自带的推荐人即 sponsor,但只要适度,也不一定有毒。

这也是外部影响力和人脉能极大帮到你的地方。看过你的演讲、读过你的博客、在你的推文下点头赞同过的人,更可能在面试中主动为你背书,之后在晋升讨论中也更愿意为你说话。

持久性

特别是当你职业生涯还处在早期、正在追求晋升 Staff 时,一定要考虑公司的持久性:当你希望自己的工作在五年后开花结果、 culminate 为 Staff 及以上晋升时,这家公司还存在吗?

更微妙一点,你还要考虑 prospective Staff sponsor 的持久性。有些优秀的工程领导者在创造公平通往 Staff 及以上职级的小环境,但很多时候,这些地方会变成“价值观绿洲(Values Oasis)”,一旦 sponsor 离开公司或换岗,就难以为继。

给持久性去风险的方法,是加入商业模式真正成立的公司,并跟随与公司最高层价值观一致的领导者(这样即使他离开,你依然和潜在的 sponsor 们保持一致)。

节奏

在四十年的职业生涯里,有时你精力充沛,想找个有挑战、能全身心投入的岗位;有时你精疲力竭、状态低迷。如果你接受了一个节奏要求超出你当前承受能力的岗位,你会伤害自己。在承担技术领导岗位时,尤其要确认公司的节奏预期和你能提供的节奏一致,因为你的一部分考核就是为公司的节奏做表率。

以及,其他一切

领导岗的求职比普通的软件求职慢得多,要按月而不是按周算,催是催不来的。在评估一家公司能不能帮你到达 Staff 及以上的同时,你也要按常规流程考察它的一切。

翻翻你的 whisper network,打听有毒的问题和人物。确认它的使命是你能多年支持并保持投入的。找到那些在工作中能向其学习的人。如果这些 Staff 标准把你推向一家你本来有顾虑的公司,大概率你会后悔这个决定。

Staff 及以上岗位的面试

当你决定去面 Senior 工程师岗位时,你大概知道会发生什么:刷新简历,刷一遍 Cracking the Coding Interview,再查查公司资料、准备几个提问。走进面试,你知道大概是五轮左右:几道编程题,一道技术架构题,再加一些文化、行为或职业类问题。

如果面 Staff 及以上也能有同样清晰的预期就好了,但大多数公司自己都搞不定 Staff 及以上的面试 loop。可能是和 Senior 工程师完全一样的面试。可能是工程经理的 loop 加一道编程题。也可能是完全不一样的东西。

坦然面对模糊是 Staff 及以上岗位的核心能力之一,所以特别乐观的人可能会把 Staff 及以上面试的现状当作展示能力的机会。如果你没那么乐观,可能会觉得有点烦,但稍做准备就能让这些面试可预测得多。

画出你的底线

你的工程领导生涯可能长达二十年,但如果按岗位来算,这段时间怎么度过,很可能取决于四五个关键决定。每个决定都是稀缺资源,要有意分配。在进入面试流程之前,花点时间打磨你的标准:你愿意参加什么样的流程,以及什么样的公司适合你,先想清楚再说。

在面试 loop 中,你会收到一些信号,说明这家公司不太懂怎么面 Staff 及以上工程师。因为大多数公司的 Staff 及以上面试流程都很平庸,你不该一看到流程拉胯就直接退出,但要想清楚哪些信号是你的底线,越过就免谈。

很多 Staff 及以上的人画的一条线是:不练面试编程题。这往往意味着他们做面试里常见的算法题时会更慢、更容易出错。持这种立场的人是认定了:一家看重手速编程的公司,很可能会用错它的 Staff 及以上工程师。这条线_你_要不要画?自己定。

调试流程

画好底线之后,下一步是搞清楚你要面的这家公司到底用什么流程。问这些问题可能会让你担心公司重新考虑你的候选资格,但向招聘团队和 hiring manager 多问面试细节_永远_是合理的。到了 Staff 及以上级别,你_不_问反而让人担心。公司希望你超常发挥,而理解流程是准备工作的关键一环。

开始面试前,最重要的三件事是:

  1. 面试有哪些形式,分别在考察什么?

  2. 哪些面试需要专门准备?

  3. 面试官都是谁?

搞清楚之后,剩下的就是准备。针对不同题型记下你的应对思路。需要做 presentation 的面试,提前准备材料。_简单_查一下面试官的背景,好准备贴合他们的问题。

这也是判断你进没进对流程的时机。如果面试 panel 主要由初级和中级工程师组成,那很少能发出 Staff 及以上的 offer:panel 既评估不了你的长处,人们又往往抗拒发出比自己高的职级。如果没有深挖你过往成就的环节,也没有 presentation 机会,同样很难证明支撑 Staff 及以上 offer 的功力。

如果是错的 loop,但你恰好擅长这个 loop 考的东西,那依然可能拿到 Staff 及以上的 offer。但如果你对那些附带考察项没那么自信,那就礼貌而建设性地提出来,甚至可以给他们指指设计 Staff 及以上面试 loop 的资料。别被惯性拖进一个不支持你目标的流程。

特别值得搞清楚的是,这家公司的定级发生在流程的哪个环节。有些公司按级别发岗位,你觉得自己合适哪个级别就投哪个。如果你想找 Senior Engineer 岗位,那就投 Staff Engineer 的岗位。但很多公司把这些当暂定头衔,之后再定;还有些公司非常 rigid。唯一的办法就是问。

更主动地掌控面试流程,刚开始会很不习惯,理论上也可能错过一些机会,但那是好事:你的目标是找到最好的领导机会,而不是第一个机会。

善始善终

即使面试一路顺风,也要谈好细节,并且善始善终。给你的推荐人讲清楚岗位细节。给面试官发跟进邮件。约好的 sell chat 都去参加,并带着深思熟虑的问题。这一程,最后这一公里最轻松,只要你愿意走完它。

谈 offer

早在 2012 年,Patrick McKenzie 写了 Salary Negotiation,从那以后它成了软件工程师谈薪的默认指南。写得很好,是谈任何 offer 的入门读物,包括 Staff 及以上的 offer:如果你之前没怎么想过这个话题,从这里开始。

职业生涯的大部分时间,你拿到的 offer 都是按相对固定的公式生成的。可能是有个薪酬计算器,也可能是参照你上一份工资,但都是公司的体系在驱动数字。然而有个阈值,越过之后,公司愿意和你谈 bespoke offer,而不是体系驱动的 offer,但没人会告诉你你越线了——得你自己悟。

这种 bespoke offer _首先_体现在薪酬上有更多灵活性,特别是 offer 中 equity 部分的灵活性。但不止是钱。还包括 offer 中那些公司通常没有灵活性、但愿意为资深领导私下破例的方面。

比如:

  • 标准合同可能规定离职后只有三个月时间行使已归属的 equity,但他们可能愿意把一位 Distinguished Engineer 的行权窗口延长到五年。

  • 他们在 operational 上可能还没准备好给所有人 early exercise,但为了 close 一位 Sr Staff Engineer 的 offer,可能愿意破例。

  • 他们可能愿意提供 deferred compensation plan,支持 tax-advantaged 的支付节奏(这大多是上市公司的事)。

  • 如果用的是定量年假而不是无限年假,可以要更多年假天数。

  • 在家办公、工作时间,或者在他们目前不支持雇人的州或国家为你入职的灵活性。

很难知道某家公司的某个岗位过没过这个阈值,也很难去问已经在那里的其他 Staff 及以上的人,因为他们很可能没谈过这些(也许是因为他们是内部晋升的,根本没机会谈)。一个粗略的经验法则:如果一家公司有二十多人、不到五百人,除非你是进准高管岗,否则它们大概率不会为你做太多定制——它们根本没有 operational 能力这么做。但如果一家公司有几千人、而和你同级别的只有十几个人,那它们大概率愿意谈 bespoke 条款。

谈判要讲究策略,什么都谈。如果你坚持商务出差全程头等舱,_可能_能拿到,但公司很可能也会因此对你的优先级产生不好的印象。

无论谈什么,花时间给你的诉求配一个故事,讲清楚为什么这对你重要。比如,我合作过的一位资深候选人,把要延长行权窗口的诉求放在刚买房、刚在离开上一家公司时行权 equity 的背景里讲。这比直接要更多现金好接受得多。好的叙事能谈成事,还不会让人觉得你的动机有问题。