软件开发人员怎么升职加薪?技术高管建议你这么做

编者按:来想象两个场景。第一种场景,你走进领导的办公室说:“我要加薪,因为我参加了两个培训,看了三本书。” 再考虑第二种场景,你走进领导的办公室说:“我要加薪,因为我搞定了两个项目,解决了三个问题。”哪种场景能够成功显而易见。有些程序员对于晋升的理解过于简单,认为“做到份了就该升”,就好像代码的运行逻辑一样。如果通不过,就是领导为难,公司作怪。 但是,事情明显比这个要复杂。原文标题Software Developer Promotions: Advice to Get to That Next Level,作者Gergely Orosz。

我最近在晋升方面的表现的相当不错。从工程师过渡到管理层之后,有八个人向我报告。两年后,这八个人都被提升到了更高的级别,还有一些其他的开发人员,也加入了我的团队。此后,我帮助我团队以外的人成功地提出了晋升案例,我还成为一些工程师晋升委员会的成员。最近,我也被提升到了工程管理岗之上的一个级别。

对于工程师来说,晋升迟早会成为一个敏感话题。加入一个公司时,很少有开发者会思考这个问题,这很正常,因为人们都在关注如何尽快进入状态,融入公司。但随着时间的推移,身边越来越多的人得到晋升,升职成为许多人的头等大事。作为一名管理者,这自然成为我经常思考的一个话题。

这篇文章收集了我一直以来给团队中工程师的晋升建议,其中许多人都得到了升职。

做好准备工作

一旦对晋升有兴趣,就从收集基本信息开始,并评估晋升对你来说是否现实。

了解公司的晋升程序

每个公司都有不同的晋升流程。虽然一些公司可能有类似的流程,但不要想当然。如果有关于流程的资料,这就是一个很好的开始。最好还是询问领导。随着公司的成长和成熟,晋升过程也会发生变化。我观察到的最常见的晋升程序类型是这三种:

非正式晋升:经理们决定谁得到晋升。几个经理在一个房间里,然后拿出一份晋升人员的名单,这是小型初创企业和公司的典型过程。在会议上,经理们介绍团队中的人,由小组成员决定是否有资格晋升。

半正式的晋升过程,有一个经理人为主的晋升委员会。随着公司的发展,把所有经理召集到一起变得很困难,而且过于耗时。另外,以前的程序偏见开始变得更加明显。领导层的目标是建立一个更具可扩展性和更公平的程序。这通常从写下每个工程级别的基本期望开始,并要求经理们提交简短的文件,说明为什么他们团队中的工程师可以晋升。

正式的晋升程序:晋升包和委员会。这是像谷歌、Uber这类大型科技公司所遵循的程序类型。它要求有明确和广泛定义的工作阶梯,每个级别都有明确的期望。这样做的目的是使晋升尽可能地不偏不倚。更公平和透明的过程,需要制作更多的文件。需要自我审查、同行审查和经理审查。一个由高级工程师和经理组成的晋升委员会决定是否可以通过晋升。

所有的方法都有其好处和缺点。了解你的公司属于哪一种,这样你就能更好地了解你和经理要如何准备。

评估自己

大多数科技公司都遵循一种方法,即把已经表现很好的人提升到下一个级别。晋升通常是对你的影响力和技能持续超出预期的认可,而且符合下一级别的标准。

那么,与下一级别相比,你目前做得怎么样?你在一家公司工作时,回答这个问题要容易得多,因为那里的能力和水平都在文件中明确定义,可以参考。一些定义明确的能力的好例子包括Monzo、Square或Rent The Runway等公司。如果你的公司有明确定义能力的文件,请阅读你所在级别和下一级别的期望。列出你所展示的技能和你所产生的影响,以及如何与这些期望相匹配。

如果你的公司没有明确的能力和期望值,你仍然需要弄清楚你在当前期望值方面的表现,要达到下一个级别的期望值是什么。根据经验,要晋升,你要在目前的水平上做得非常好。因此,你可以从获得关于目前表现的反馈开始,与最有资格向你提供这种反馈的人交谈:你的经理。

让你的经理站在你这边

无论你的公司遵循什么程序,如果你的经理不支持晋升,得到晋升的机会就非常小。所以一定要让你的经理站在你这边。如何做到这一点?问问他们晋升是如何进行的,他们对晋升的理念是什么。问他们如何评价你目前的表现。根据经理的反馈,你可能会决定一步一步地推进,但你需要对此进行诚实的对话。

作为一名工程师,这种谈话对我来说总是感觉很尴尬,在我的职业生涯中,我回避了很长一段时间。现在回想起来,我希望没有回避,原因很简单。

在你准备好的时候得到晋升,这对你的经理也是最有利的。判断管理者的标准是他们是否有能力让团队提供更好的产出。他们通过让团队的工程师更有效率来做到这一点。为了使团队有更高的产出,团队中的工程师需要成长为更高效、更可靠、更资深的人。增长的外部可见指标之一是晋升。晋升意味着经理帮助这个人成长,或者通过指导、辅导,或者只是摆脱他们的方式。一个经理,他的团队变得更加资深,表明他们在培养人才方面做得很好。

所以我们知道,你的晋升对经理是有利的。但是,还是有很多开发人员认为 “我的经理不会提拔我”。问问自己:这是为什么?一个经理,如果他的下属工作停滞不前,就会开始吸引不必要的关注,无论是来自上面还是来自他们的团队内部。如果人们一直得到平均或较差的绩效评估,从来没有晋升的机会,这对经理来说也不是好事。因此,在你问过自己为什么经理似乎不想提拔你之后,也问问经理,什么是你可以和应该发展的领域,这对他们是最有利的。

在晋升到高级职位以上时要现实一点

通常情况下,晋升到高级别的主要依据是技能,展示技能,并产生影响。然而,在高级工程师级别以上,其他因素也会起作用。

首先,对于有多少人可以晋升到更高的级别,可能受到预算的限制。有些地方要求提供商业案例,说明为什么一个特定的团队或地区需要一名管理者、高级别职员或首席工程师。如果没有商业案例,即使你在其他方面有晋升机会,你可能也无法被提拔,这是事实。

其次,在高级工程师级别以上,你可能会发现要找到足够大和有影响的项目来保证晋升是很困难的。例如,你的团队可能正忙于交付小的、增量的功能,这些功能的复杂性不高,但商业价值还不错。几乎可以肯定的是,你不会因为在这里做了出色的工作,而被提升到高级别的职位。在这种情况下,你需要对职业有一个权衡,并决定如何前进。你要等待新的机会到来吗?你会调动团队,领导一个复杂而有影响的新项目的工作吗?你是否会提出一个具有巨大商业影响的新倡议,说服利益相关者启动它,并最终领导这个项目?没有简单的答案:你必须采取主动,收集信息,获得支持,并最终在你的职业生涯中明智地承担风险。

软件开发人员怎么升职加薪?技术高管建议你这么做_第1张图片

随着你在职业阶梯上的发展,要想进入下一个层次就越来越难了。在开发者的阶梯上,这是一个类似的挑战,从经理(manager)到总监(director)通常是类似的困难,就像从高级工程师到主管工程师一样。

把视线放在晋升上

一旦你知道晋升过程是如何进行的,对自己进行了评估,并且你的经理也站在你这边,那么就该集中精力了着手了。

设定目标,缩小你所欠缺的方面,以达到更高的水平

毫无疑问,你需要在几个方面做得更好,或者展示你的影响力。这可能包括像软件工程、有影响力的执行、设计复杂问题的解决方案、更好地与他人合作等方面。

设定S.M.A.R.T.目标,这将帮助你达到目标:具体、可衡量、可实现、现实、及时。设定的目标只取决于你自己,而不取决于外部因素。例如,如果你已经确定要改进的领域是在构造方面做得更好,就不要设定一个做复杂项目的一般目标。但你可以设定一个目标,每月至少彻底审查一份提案,在这个领域至少指导一名初级工程师3个月,或阅读一本相关书籍,并在未来2个月向你的团队和组织介绍学习成果。如果你被确认领导一个项目,你可以设定的目标是让你的提案得到两个团队以外的资深人士审查。

像你已经到了下一个级别一样行动和承担责任

有两种晋升的情况。一种是非常简单的:该工程师已经承担更高级别的职责,执行了很长时间。另一种是更有挑战性的:这个人表现出了很大的潜力,但有几个方面与下一水平有差距。这第二种类型的晋升案例是掷硬币式的,结果可能成功也可能失败。

当你在为晋升而努力时,要以持续表现出下一个阶段的水平为目标:不要只局限于你的重点领域。如果你的目标是高级别的,而你团队的项目有风险,那就设立并帮助整个项目成功。如果你的经理要求志愿者做一项无聊但重要的杂事,而没有人站出来,可以考虑举起你的手。在处理这项工作的基础上,将部分工作自动化,让团队中的下一个人更容易做。

记录下你的成就和影响

当你的经理或你要把晋升案放在一起的时候,第一个问题是你取得了什么成就,值得晋升。到那时,你会忘记你所做的许多重要工作。因此,要抢先一步,记录你所做的所有工作。

启动一个工作日志文件或类似的东西,你要持续保持更新。我创建的是一个谷歌文档。与你的经理分享,这样他们也知道你正在做的所有工作。没有人比你更了解你所做的工作。你的经理可能会对你所做的许多额外工作感到惊讶。当你被提拔的时候,这会让你们两个人都更轻松。

考虑对照下一个职业阶梯级别进行自我评估,列出你认为能证明你已在下一个级别工作的例子。向经理征求反馈意见,并利用这次审查来确定你可以努力弥补的与下一级别的差距。

软件开发人员怎么升职加薪?技术高管建议你这么做_第2张图片

经常征求帮助和反馈

晋升的工作不是一个短暂的过程:它可能需要几个月的时间。你很容易失去方向。

在公司里找一个导师来帮助你

虽然经理可能是站在你这边,为你的晋升而努力,但他们能给你的反馈也是有限的。你可以通过找一个导师,也就是另一个工程师,来加快职业成长。

尽量找一个已经在下一个级别的开发人员。如果他们已经在公司内部经历了晋升过程,那就更好了。向他们寻求指导,特别是关于成长到下一个水平的指导。与他们分享你的评估和目标,并请他们提供反馈和帮助,帮助你成长到下一个水平。

在我的公司里,我注意到那些主动建立这类指导关系的开发人员得到了多种好处。首先,根据导师的反馈,他们对自己想要的成长方式变得更有战略性。这些导师通常在公司工作的时间较长,并帮助工程师们处理一些不那么好的晋升问题。第二,即使他们这次没有得到晋升,有导师的开发人员也更容易保持心态平稳。导师站在他们一边,为他们达到下一个水平而投资。这使得这些开发人员更容易振作起来,继续出色表现,并在下一个周期获得晋升。

要求定期、明确的反馈

设定目标并为之努力是一件事。然而,特别是当你正在努力实现晋升这类重要的里程碑,定期获得关于如何做的反馈是同样重要的。

要定期向你的经理介绍你认为已经取得的进展。向他们询问关于你的进展的反馈,以达到下一个水平。尽早进行对话,讨论他们是否支持你在下一个周期晋升。即使答案是 “还没有”,也要让他们帮助确定可操作的事情,如果你完成了这些事情,你就能为下一个级别做好准备。

投入工作

如果你已经向经理和导师明确表示,你正在为晋升而努力,那就投入工作。在机会来临前的几个月里,要加倍努力,争取在下一个级别上有所表现,把事情做好,多帮助别人。

不要疏远你的同事

我有时会看到工程师们犯的一个错误是太专注于自己的晋升,结果损害了团队的利益。到了晋升的时候,他们往往没有得到机会,因为很明显,他们不是一个好的团队成员。越来越多的公司小心翼翼地不提拔那些影响团队的人,不提拔那些拉低团队的人。

为了达到你所设定的晋升目标而把别人挤开,是一种不好的策略。首先,这是非常短视的想法,你可能在晋升时需要同事的帮助。但即使不需要,这也是不成熟的表现。你的资历越深,就越希望你能成为一个优秀的团队成员,同时提供可靠的结果,这并不总是一个容易达成的平衡。但是,如果你发现自己强行推进目标,并使你的团队中的人感到不满,请考虑改变你的方法,使之更具协作性。

即使稳了,也不要马失前蹄

有一次,一个开发人员与他们的经理设定了一个目标,如果他们成功地领导并交付了ComplexProjectX,就能得到升职。项目进展顺利,这个人也升职了。当这个人听到这个好消息的时候,就放开了这个项目,没有把任何事情交接给别人。随着项目的展开,越来越多的问题浮现出来,没有人采取行动。最后,该项目不得不被撤销。

这件事就发生在晋升委员会开会讨论这位工程师的晋升之前。在讨论中,他们一致认为,虽然这个人在许多方面表现出了很好的技能,但在最后一刻,显示出了不成熟。没有任何沟通,也没有很好地解释为什么会发生这种情况。这个人在那个周期没有得到晋升。

保持脚踏实地

不要相信任何承诺 “肯定会晋升”的人。

我告诉团队中的所有工程师的第一件事是,我和任何经理都不能保证 “肯定会晋升”。如果有人对他们说这些,不要信。我见过太多的开发者被这样的承诺所伤害。即使有最好的经理,也有很多原因导致 “肯定”的晋升无法实现。

首先,任何经理人都可能意外地离开。最常见的辛酸故事是这样的。“基于我所做的出色工作,X经理承诺我将得到升职。然后他们就离职了。我的新经理没有兑现这个承诺,决定不提拔我”。第二个原因是,任何经理都可能误判他们的直接工作做得如何,或者误判公司内围绕晋升的政治形势。尽管相信 “已经稳了”这类声明中的好消息很诱人,但还是不要。如果你相信这种承诺的表面价值,无论说的人多么真诚,都会让自己失望。

不要把晋升作为你的唯一目标

无论你表现有多好,无论经理有多支持你,你都可能得不到晋升。如果你的唯一目标是晋升本身,就可能会士气低落,可能会考虑辞职并寻找新的工作,只是因为结果本身不尽人意。

曾经有一个工程师,我强烈支持他,百分之百相信他会得到晋升。尽管我为这个人打抱不平,到上级部门为他们说情,但还是没有成功。在这之后,我更加致力于帮助这位工程师在下一个周期得到认可。幸运的是,这位开发者不仅关注结果,而且同样关心在其他方面的成长。接下来的时间里,他们把晋升失败抛在脑后,继续保持着高增长的轨迹。

如果你的主要目标是关于职业成长,即使你没有得到晋升,你也会获得宝贵的技能。这些技能可能是诸如传达工程最佳实践、指导他人、领导项目、分享知识等。关注这些技能而不是仅仅关注晋升结果。根据你的公司所遵循的程序,晋升是一个概率问题。但没有人可以从你身上夺走你的成长。

晋升不是获得积极反馈的唯一途径

许多人把晋升看成是对自己工作出色的一种肯定。然而,虽然成功的晋升确实意味着好的反馈,但你得到的大多数积极的认可不是通过晋升。

你每天都会从和你一起工作的人那里得到反馈,人们会说 “谢谢”、“你真的帮助了我”或 “如果没有你,我可能还不知道怎么办 ”之类的话。你会从你的经理和导师那里得到反馈。当然,还有正式的绩效审查,你的经理也会总结你所做的出色工作,以及需要改进的地方。获得奖金或加薪也都是积极的反馈,而所有这些都会比升职更频繁地发生。

保持耐心和积极的态度,这是个漫长的游戏

曾有一个有几年经验的天才开发者加入我的团队,他急切地想晋升到高级职位。他有一个朋友最近被提升到这个级别,他觉得这个朋友在他前面,于是很沮丧。在进行了自我评估后,我告诉他,与下一级相比,他目前还存在太多的差距,无法在这个周期内进行晋升。即使他付出了努力,我也看不出他在下一个周期之前会升职,而这个周期还有9个月。我建议制定一个计划来实现这一目标。

首先,这个人很不高兴,认为我对他有意见。慢慢地,冷静下来后,我们制定了一个计划。一步一步我们取得了进展,他开始意识到自己有多少工作要做。最后,9个月后,他得到了晋升。他只有5年的经验,已经是高级职位了。作为对比,我自己花了很长时间才达到相同的水平。但是,与他们不同的是,我从未感到落后。

再等的6个月或12个月对你的职业生涯有什么影响吗?越在早期,你就越觉得有影响。然而,一段时间后,你可能会意识到,这不是短跑,而是马拉松。虽然你可能在第一份工作的几年里得到晋升,但随着时间的推移,晋升的速度会减慢:获得晋升的难度会增加很多。

玩长期游戏。积极进取,专注于你的持续专业成长。把你的成长当作一个旅程,而不是一场晋升的竞争。这样做,你能更好地保持平衡。

帮助他人

在公司内部获得晋升从来不是一件容易的事。当你成功地做到这一点时,考虑回馈他人,并将某人纳入你的羽翼之下,帮助他们成长。让别人知道你愿意指导别人。如果你看到团队中有人有很好的发展潜力,并且你觉得你可以提供帮助,就可以去指导他们。

即使你还没有得到晋升,也要帮助别人成长,并在成长中得到认可。如果你工作的公司有一个比较重量级的晋升过程,有同行评议,可能其他人需要提供同行评议。如果你加入的级别较高,其他工程师可能会向你请教相关的问题。

不要忘记,晋升是对你成长的一种认可。而成长的最好方式之一就是通过指导他人。保持平易近人和乐于助人的态度,并将其付诸行动。你会学到更多的东西,结交许多盟友,这样你的职业生涯将是一个更愉快的旅程。

译者:蒂克伟

你可能感兴趣的