大厂级别、最常见的软件工程师职业发展路径,以及晋升到 Staff 工程师之后的发展
👋 大家好,我是 Gergely,这里是《务实工程师》通讯(Pragmatic Engineer Newsletter)。每期我都会从工程经理和高级工程师的视角,探讨大厂和高增长初创公司面临的挑战。
如果你还没有订阅,欢迎加入以获取每周更新。许多订阅者都是用公司的学习与发展预算来报销这份通讯的。👇
本期内容重点关注大厂和高增长初创公司的工程师职业路径。我将解答读者们发来的相关问题。我们将讨论:
- 大型科技公司典型的工程师职业发展路径
- 解析 L3 或 E6 这样的工程师职级
- 大厂和规模化初创公司在职业路径上的区别
- 在大厂成为 Staff 工程师之后,下一步是什么?
- 非典型的职业路径
- 给工程师规划职业生涯的建议
- 给工程经理帮助下属成长的建议
相关文章推荐:工程领导力的技能重叠------探讨大厂和高增长初创公司中,Staff 工程师、工程经理 (EM)、产品经理 (PM)、技术主管经理 (TLM) 和技术项目经理 (TPM) 的职能交集。
1. 大型科技公司典型的工程师职业发展路径
问:我最近作为初级软件工程师(公司称作 L3)加入了一家大型科技公司。这类公司通常的职业发展路径是怎样的?
首先需要明确:每个人的职业路径都不同。我会分享我观察到最常见的路径,但请记住,每个人的具体情况、团队动态和机遇都不尽相同。以下是大厂最常见的一些职业路径。
大厂常见(及不常见)的工程师职业路径
从初级到高级的路径:工程师以入门级身份加入(应届生或只有几年非大厂经验)。几年后,他们会晋升到下一个级别------许多公司称之为工程师二级 (Engineer 2) 等。再过几年,晋升为高级工程师 (Senior Engineer)。到了这个阶段,大家的发展方向开始出现分化。
长期担任高级工程师:大多数晋升到大厂高级工程师的人,会在这个级别停留很长一段时间。这是公司有意设计的。高级工程师责任重大,薪酬也非常可观,通常与大厂的一线经理收入相当。
超越高级工程师级别不仅仅需要更多技能和机会,还意味着你必须改变工作方式。高于高级工程师的职位与传统的软件工程角色截然不同。Staff 工程师和经理都被期望成为团队的"力量倍增器"或赋能者。对许多工程师来说,这种"向上"的跨越往往会让他们失去日常写代码的乐趣。
如果你喜欢亲自动手实践、喜欢在小团队工作,一直做高级软件工程师也是很棒的职业选择。有些工程师会横向调动去学习不同的技术栈。例如,后端工程师可能会转到移动端团队学习新技术,几年后又可能转做机器学习工程师。大厂的一大优势就在于鼓励跨技术栈调动,且不会影响你的职级或薪酬。我在职业生涯中就充分利用了这种灵活性。
跨栈调动能让你成为更全面的工程师,帮助你学到更多知识,还能让工作更有趣。掌握多种技术栈也能为未来的职业发展打下坚实基础,让你更容易跨团队协作。而跨团队、跨技术栈的工作经验,对日后成长为技术主管或 Staff 工程师大有裨益。
向上晋升通常意味着更多的责任和压力,但反常识的是,它不一定能带来薪资的显著增长。对于那些获得过大量股票期权的高级工程师来说,即使晋升了一级,如果股票大幅增值且占了他们总收入的大头,涨薪幅度可能并不明显。
当前高级工程师火热的招聘市场也表明,Staff/Principal 角色的薪水并不一定比高级工程师高出太多。几位正在找工作的 Staff 工程师分享说,Staff 和 Principal 级别的薪资包涨幅较小,反而是高级工程师的薪水涨幅更大(尤其是在非大厂领域)。
从高级工程师到 Staff/Principal 工程师:Staff 和 Principal 级别与高级工程师有着本质的区别。绝大多数 Senior+ 职位都要求具备长远和战略性的眼光,跨部门发挥影响力、领导大型项目以及频繁切换工作上下文成了家常便饭。这些角色通常需要赋能他人,或在复杂业务领域充当技术协调人。只有极少数情况要求你做极深度的技术钻研。
高级工程师通常服务于一个团队,而 Staff 或 Principal 工程师通常跨越更大的组织部门工作。CTO Will Larson 总结了四种典型的 Staff 工程师类型,大多数 Senior+ 职位都符合这些类型。
如果你喜欢专心写代码、讨厌频繁切换任务且希望立即看到工作成果,那你可能不会喜欢 Staff 或 Principal 级别的职位。而那些追求这类挑战的人,通常会将自己的影响力和作用扩展到跨团队及整个组织。在经理、同事的支持以及一些运气的加持下,他们最终晋升为 Staff 工程师。
公司内部晋升 Staff 通常比晋升 Senior 难得多。在 Senior 及以下级别,晋升期望和路径通常非常明确。但到了 Senior 之上,对于下一级别究竟需要什么样的产出和行为,存在很大的模糊性。想要在内部获得这种晋升通常需要经历不止一个绩效周期,如果你没有得到可执行的反馈或者在组织内部缺乏强有力的人脉,那就会难上加难。
在大厂达到 Staff 级别的另一个常见方法是:先在其他大厂做几年高级工程师,然后去其他公司面试。运气好的话,你可以拿到一个 Staff 级别的 Offer,这往往比内部晋升要快一些。当一位高级工程师觉得在当前公司很难晋升 Staff 时,经常会采用这种策略。
最后,从大厂跳槽到后期但高增长阶段的公司(比如 D 轮或 E 轮),也是从高级跨越到 Staff 的常见方式。这些公司有大量 Staff 级别的工作机会。相比之下申请 Staff 的人较少,如果你面试表现出色或者有很强的推荐背书,往往更容易谈下一个 Staff 头衔。
从高级工程师到技术主管 (Tech Lead):在担任高级工程师后,有些人开始承担更多的技术和项目领导职责,但无需承担人员管理责任。
在某些公司,高级工程师之上可能会有技术主管 (Tech Lead)、小队主管 (Squad Lead) 或技术主管经理 (TLM) 级别。这些职位仍要求写代码,但责任范围扩大到了确保整个团队的高效运作。这类团队通常很小(大概 5 个工程师以内)。他们通常不负责下属的绩效评估,但几乎都要参与招聘。这个角色往往是通往工程经理发展路径的一扇绝佳窗口。
从高级工程师到工程经理 (EM):在快速增长的团队中,已经在做类似技术主管工作的高级工程师有时会有机会转岗做工程经理。当年我在 Uber 就是这么走上管理岗的。
许多大型科技公司都有为初次担任工程经理的人准备的培训项目。在优秀的公司里,如果管理路线走不通,通常会提供一种"安全退路",让你重新做回软件工程师。更好的公司明白,他们既需要支持新经理,也需要为那些发现自己更适合做工程师而不是做经理的人提供退路。
大多数小公司不提供任何培训,对新手经理的支持也少得可怜。但在这些地方,转管理岗的机会更多。如果你在这种公司工作,请做好心理准备:选择管理路线后,你可能需要完全靠自己摸索。
在大厂里,工程经理很少甚至完全不写代码。相反,他们管理 6-12 人的团队,把大量时间花在招聘、确保团队健康运转、帮助成员成长以及把控团队工作方向上。他们不仅要负责团队成员的绩效管理和晋升,还要和团队的各种利益相关者打交道,包括其他工程经理、产品经理、数据科学人员及其他部门。
在大厂之间跳槽:一旦你以软件工程师身份进入大厂,在大厂之间跳槽就会变得容易得多。不仅简历更容易过筛,面试流程也与你当前公司的流程几乎一模一样。
在大厂间跳槽,通常意味着每次换工作都能大幅涨薪,即使是平级跳槽也是如此。在当前异常火热、过去一年薪水上涨 15-30% 的市场环境下,跳槽通常是拿到市场顶薪的最快途径。
成熟公司之间的职级评定正变得越来越标准化。虽然涨薪很普遍,但当加入规模和成熟度相似的公司时,想要在入职时提升职级是比较困难的。
我对跳槽没有任何意见------因为这对很多人来说可能是正确的选择。我唯一的建议是,多想想"留任"(即在同一家公司工作多年)所能带来的经验积累。关于是该跳槽还是留下来争取晋升的更多建议,请阅读本通讯的文章:提前为晋升做准备。
2. 工程师职级(如 L3 或 E6)解析
问:各家科技公司的 L3 或 E6 这些职级到底是什么意思?
谈论大厂职业发展就避不开工程职级。每家大型科技公司都为个人贡献者 (IC) 和管理层制定了职业阶梯。他们都会使用内部的名称和编号来代表这些职级。
很难直接比较任意两家公司之间的职级,因为各家对职责和期望的定义往往不同。例如,谷歌的"高级工程师"级别所意味着的责任和技能期望,远远超过一家小型初创公司的同名职位。
网站 Levels.fyi 将各大公司的职级进行了可视化,并试图展现这些职级之间的对应关系。他们利用职级评估标准,综合相同的工作范围和责任,回答了"如果我跳槽,应该对应什么职级?"的问题:
Levels.fyi 上的工程职级对比。这是一个很好的参考来源,能让你基于工作范围和期望,了解各公司的职级是如何相互映射的。
我正在编写一个介绍大型科技公司职级评定标准的系列文章------如果你愿意分享你们公司的职级期望(公开或匿名均可),请直接回复本邮件。
雷德福全球量表 (Radford Global Scale) 是另一种在内部定义职级的方法:
使用雷德福全球量表的职业阶梯示例:划分为管理人员 (Manager)、专业人员 (Professional) 和辅助支持人员 (Support)。软件工程师通常在专业人员轨道上,而工程经理在管理人员轨道上。
微软 (Microsoft) 是最早在内部对职级进行标准化的公司之一。他们的编号方式很不寻常,应届生从 L59 开始,并且他们将两个或更多内部职级映射到同一个外部头衔上:
谷歌 (Google) 的职级体系影响了许多其他大厂。采用类似内部职级体系的公司包括 Uber、Databricks、Airbnb、Instacart、Asana 等。
Facebook 采用了与谷歌相同的职级划分,只不过他们在工程职级前加上了"E",级别从 E3 到 E10。他们不对外公开每个级别的具体头衔:无论是初级还是高级,对外的头衔都一律叫"软件工程师"。他们对产品经理也是如此。这让你很难从外部判断 Facebook 员工的资历:他们可能是初级工程师,也可能是极其罕见的 E9 级别高级首席工程师。
Netflix (网飞) 则是个特例,他们只有一个级别:高级软件工程师 (Senior Software Engineer)。他们会根据每个人的市场价值支付完全不同的薪水,也是少数几家薪水能始终与市场持平的公司之一。众所周知,市场涨了多少,他们就会给员工涨多少,绝不吝啬。
其他有趣的职级设定还包括:
- 亚马逊 (Amazon) :入门级工程师被称为 L4。
- 苹果 (Apple) :职级从 ICT2 开始计算。
- 字节跳动 (Bytedance) :主要分为四个大级别,每个大级别再用破折号分出一半(例如 2-1, 2-2)。
3. 大厂和规模化初创公司在职业发展路径上的区别
问:高增长初创公司和大厂的职业发展路径有什么不同?