【译文】高级软件工程师的诅咒

我的软件工程生涯始于 14 年前。那时,我使用 PHP 编写一些搜索引擎优化自动化脚本。慢慢地,我更好地融入了公司,开始开发产品的更多核心功能,最终甚至主导了自己的产品。

我在那家公司工作了 6 年。在那里工作期间,公司增加了大约 3 个人。这与一般的高速成长的初创公司相去甚远。我们没有头衔、没有晋升、没有绩效考核。我很开心,因为我在做软件工程,并称自己为软件工程师。只是当我需要修改我的简历以寻找新工作时,我才不得不回顾这 6 年,并尝试给每段时期加上 “正确 “的头衔:

  • 开始时是网络开发人员
  • 之后的高级软件工程师
  • 在领导自己的产品和一个小团队时担任技术主管

只有当我加入美国公司欧特克(Autodesk)时,我才接触到职称、职业阶梯和晋升。我了解到,许多公司,无论大小,都有职称和职业阶梯。

职称是怎么回事?

公司迷恋标题有多种原因。

首先,职称有助于规范薪酬范围。你不会希望一个有 2 年工作经验的工程师和一个有 6 年工作经验的工程师拿一样的工资。因此,你需要创建职称。第一个是初级,第二个是高级。初级职称的薪资范围是 X,高级职称的薪资范围是 Y。很多时候,公司会在一个外部职称后面设置多个内部职称。例如,高级软件工程师作为一个外部头衔,可以根据不同的因素翻译成 Sr.SW1 或 Sr.SW2。这样就可以进一步细分高级职等。与其把所有拥有 5 到 10 年工作经验的人放在一个名为 “高级 “的大桶里,不如把它分成拥有 5 到 7 年工作经验的 Sr.SW1,以及拥有 7 到 10 年工作经验的 Sr.SW2。从外表上看,他们都自称为高级软件工程师。

公司设置职称的第二个原因是为了促进发展和评估。职称通常与一系列角色和职责相联系。初级工程师可能是需要帮助和密切监督的人。这种协助和监督通常由高级工程师提供,因此,要成为高级工程师,就必须指导比自己经验少的人。其他职能可能包括影响范围和范围等。初级工程师的工作成果只会对其分配的任务产生影响。而高级工程师则可能在完成指定任务的过程中改进系统中的某些功能。员工工程师改进的东西不仅会影响自己的团队,还会影响其他团队。例如,引入一种新的监控工具,并被多个团队采用;改进某些工作流程等。

当进行绩效考核时,你的经理会考察你在团队和组织中的影响,并据此决定是否将你提升到下一级。晋升也意味着加薪,因为级别与薪资范围挂钩。

而当你去一家公司面试时,即使他们面试你时给你的外部头衔是 “高级软件工程师”,但在公司内部,他们会根据你的薪酬、工作年限、你通过面试的情况等因素,给你分配公司级别的头衔。有一个名为 levels.fyi 的网站,可以让您了解不同公司的不同职业阶梯,以及它们之间的比较。

晋升困境

很多时候,晋升失败会导致你被列入绩效改进流程,或者被解雇。如果你观察那些在一家公司长期工作的工程师的职业生涯,你会发现他们都在不断进步。从初级到高级,再到技术主管。或者从资深工程师到员工再到工程经理。这一切都取决于工程师想要成长的路线。

你不会看到有人在一个职位上呆很长时间,通常不会超过 2-3 年。相反,这些人会跳槽到不同的公司,有时会伴随着职称的提升。由于职称与工资挂钩,这也意味着工资的提高。这就是为什么人们说,如果你想加薪和/或提高职称,最好去另一家公司。有些公司要么迟迟不给你晋升,要么不给你晋升,而另一些公司则很乐意根据你的工作年限和面试通过情况给你晋升。

但并不是每个人都会跳槽,有些人确实会因为懒惰、安逸或其他原因而被困在同一家公司、同一个职位上。不幸的是,这些人很容易受到一种诅咒,我称之为 “高级软件工程师的诅咒”。

高级软件工程师的诅咒

在继续谈论这个诅咒以及如何避免它之前,我想先澄清一下为什么它主要适用于高级工程师。这里所说的资历,指的是根据公司的职业阶梯而不是工作年限划分的影响力和范围。如果我们看一下工程师的职业生涯,我们可以将其一分为二(至少从我的经验来看是这样):个人贡献(称为 IC)和领导能力。包括高级职位在内的所有职位都属于 “个人贡献 “的范畴。

IC 是指从事自己工作的人。他们完成任务、修复漏洞、履行团队职责(如值班安排)。他们可能会改进产品或代码库,提出自己的想法,指导经验不足的工程师,表达担忧并提出解决方案。但他们的工作范围主要限于个人/团队层面。他们不会产生任何跨团队或组织层面的影响。

当你跨越自己团队的界限时,你就进入了领导职位。在一个健康的组织中,领导职位分为两种:技术领导和人员领导。技术领导包括员工工程师、技术负责人、首席工程师、架构师等头衔。人员领导包括团队领导、工程经理、小组领导等头衔。您需要达到高级职称才能晋升为领导职位。如果您看到有人从初级职称晋升到领导职位,这可能说明组织不健康或初始职称分配不正确。至于您将晋升为技术领导还是人事领导,这取决于您的意愿以及您与经理建立的职业发展道路。

但是,如果你到了高级职位却无法晋升,该怎么办呢?卡在某个级别的原因有很多,但归根结底不外乎两种:一是你失败了,二是公司搞砸了。你失败了,可能是缺乏争取晋升的雄心壮志;缺乏晋升的愿望;安于现状;等等。公司搞砸了,可能包括缺乏适当的晋升协议;频繁的组织变革打断了晋升周期;无法正确确定晋升人选等。

哦,还有个人因素。公司不喜欢讨论这个问题,但我们都是人。可能是你的经理根本不喜欢你,所以他/她会尽力不提拔你。这可能纯粹是出于人道的不喜欢(他们不喜欢你的长相、说话方式、穿着打扮等);也可能是出于他们自己的不安全感,比如害怕自己成为多余的人,或者被你取代,而你是超级成功人士,渴望征服世界。最后,有些人就是管理不善。公司应该制定规程来避免这种情况的发生,但我们都是人,有时也会出错。

因此,如果你在高级职位上呆得太久,你就会受到 “高级软件工程师诅咒 “的诅咒。诅咒是这样的

高级软件工程师的诅咒
受诅咒的高级软件工程师是指担任高级软件工程师的时间太长,以至于在下一次求职时发现自己处于两个世界之间:

  • 他们的资历太深,无法被聘为高级工程师(由于工作年限或薪资预期的原因)
  • 他们没有领导经验,或者只有很少的领导经验,无法受聘担任领导职务(技术人员担任技术主管/员工/主管;人员担任团队主管/工程经理)。

因此,他们被诅咒在资深山谷中游荡,没有能力进入技术市场。

资深者呆得太久,就很有可能受到这种诅咒。我怎么知道?因为我是根据自己的经验来判断的。我是一名拥有 14 年以上工作经验的高级工程师,从不对职称感兴趣,也不会为了提高职称而跳槽。我喜欢我的工作,我认为我很擅长我的工作。但我从不喜欢玩公司游戏和攀登职业阶梯。我职业生涯的前半段是在非典型公司度过的,没有任何公司的BS,我可以证明我在我所做的事情上是成功的。

然而,当我发现自己已经精疲力竭时,我离开了企业世界,开始追求建立一个可持续发展的在线业务,并打算永远不再回到传统的工作场所。然而我失败了,在 6 个月的休假期间,我开始找工作。在申请了 100 多个职位后,我收到了一堆普通的拒绝。在那些没有拒绝我的人中,有些人告诉我,我胜任高级职位的资格过高,但胜任领导职位的资格过低。我不得不对自己被拒的原因做出假设。我本可以归咎于 2023 年的技术衰退,但我喜欢责怪自己,所以我不得不做一些自我分析。

虽然有可能是 2023 年的技术衰退,但如果我的理论有一丝可能是正确的,我也希望把它传播出去,让其他工程师不要重蹈我的覆辙。

如何避免诅咒?

有两种方法:要么按规则行事,要么退出游戏。

你必须遵守企业规则,痴迷于企业的职业阶梯。你需要遵循晋升周期,确保自己不会在一个级别上停留太久。如果是这样,你需要保持积极主动,考虑辞职,换一家公司。这种调动应包括职称的提升。

我知道这听起来很残酷。但这是你的职业生涯。一般来说,公司不会太在乎你。等到你自然而然地晋升到下一级时,你的经理可能会换,或者整个公司可能会重组。当其他比你更爱出风头、要求更高的人获得晋升时,你却会落在后面,慢慢陷入 “高级软件工程师诅咒”。

另一种选择是彻底退出游戏。请记住,FAANG 或 MANGA,不管现在的缩写是什么,都决定了行业的运作方式。如果他们有了头衔和职业阶梯,其他炒作驱动、风险投资资助的初创公司就会紧随其后。退出游戏的唯一办法就是找到一家与他们不同的公司。这家公司不在乎头衔,也没有绩效考核仪式。这很难,但这样的公司确实存在。我就是这么做的。我刚找到一家本地创业公司(事实上,是他们找到了我),这家公司不注重头衔和其他公司礼仪。我没有每日例会或每月回顾。我们只是从积压的工作中抽出项目来做。

你可以考虑的其他公司包括银行、铁路运营商、医院等历史悠久的大公司。这也包括无聊的标准公司的 IT 部门。请记住,现在几乎每家公司都需要程序员,但大多数公司不会带你去夏威夷参加派对,不会在城里最酷的大楼里有一间时髦的办公室和一个留着大胡子的咖啡师,也不会给你冠上 “全栈忍者小队队长工程师 “的高大上头衔。这也意味着他们不会付给你和 FAMANGA 公司一样的薪水,你也不会使用最新、最先进的技术(当然也有例外)。

您可以考虑的另一个选择是通过自由职业或承包合同转为自营职业。只要你能以合理的价格及时完成工作,没有人会在乎你的头衔是什么,也没有人会在乎你有多少年的工作经验。

这样的决定没有好坏之分。虽然我不认为自己会回到传统的企业环境中去(除非迫不得已),但我也能理解为什么有人想在 Meta 或谷歌等公司工作。如果你真的这么做了,请记住,你需要遵守某些规则。仅仅 “写代码 “是不够的。

本文文字及图片出自 The Curse of the Senior Software Engineer

你也许感兴趣的:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注