从高级工程师晋升为Staff工程师 – 我的经验分享
从高级工程师晋升为Staff工程师的道路可能令人望而生畏。晋升过程往往令人困惑,而这个跨越尤其模糊。作为成功转型为Staff工程师的人,我想分享我的见解和经验,帮助你完成这段旅程。
我的Staff工程师之路
在过去十年中,我曾在PayPal和Slack等公司工作,从初级Web开发人员成长为Staff工程师。以下是我的时间线:
- 2013年:Telus Communications的初级Web开发人员
- 2017年:Pix System的Web开发人员
- 2018年:PayPal的软件工程师2级
- 2019年:晋升为高级软件工程师,2021年成为Staff工程师
- 2022年:Slack的首席技术成员
- 工作三年后转型为全职内容创作
我学到的一个关键教训:重要的不仅是你做了什么,还有谁知道你做了什么。
什么是Staff工程师?
Staff工程师是推动团队效率的技术领导者。你不仅通过交付的功能来评判,还通过如何赋能和成长团队来评判。这不再仅仅是关于代码。Staff工程是技术专长、领导力和指导的融合。
Staff工程的四大支柱:
- 技术卓越:Staff工程师构建可扩展的系统,评估技术,做出关键的技术决策,同时管理技术债务。
- 组织影响:他们解决超越团队范围的问题,充当各种利益相关者之间的沟通纽带。
- 指导和团队发展:Staff工程师通过帮助他人成功、 onboarding新成员和提升同事水平来成长团队。
- 项目领导力:他们确保项目按时交付,将复杂问题分解为可管理的部分,同时领导跨职能计划。
故事时间:在Slack构建字体选择功能
作为Staff工程师,我有幸参与了一些真正令人兴奋的项目。这些机会不仅帮助我增长技术专长,还教会了我关键的人际交往技能 – 如团队协调、估算、克服冒名顶替综合症、管理倦怠和有效委派。这些是任何希望提升职业生涯的工程师必备的品质。
一个突出的项目是Slack中的字体选择功能。在Slack首选项的外观选项卡上,用户现在可以选择字体 – 比如Comic Sans – 并立即在应用程序的每个地方看到变化反映。
这个项目是一个典型的绿地计划示例:在Slack中从未做过。这意味着要应对技术债务,考虑迁移到新系统,有时还要弃用过时的组件。它还需要与整个组织的团队合作,因为这样的功能的爆炸半径很大。这项工作不仅影响一个领域,而且影响整个用户体验。
在这样一个项目中担任技术领导者既具有挑战性又有回报。它扩展了我的技能,并强调了跨职能团队合作和技术愿景在交付高影响力功能中的重要性。
Staff工程师与高级工程师的关键区别
高级工程师是优秀的执行者,能够接受复杂的需求并将其转化为可工作的软件。他们高效解决技术问题,并指导团队中的初级开发人员。
Staff工程师是战略思想家,他们首先确定需要解决的问题。他们纵观整个组织,寻找影响机会,然后创建项目来解决这些问题。
高级工程师通常由经理或团队负责人分配项目,并处理领导层设定的优先事项。他们擅长执行定义的工作并解决其领域内的复杂问题。
然而,Staff工程师在团队之外的更大范围内运作。他们主动寻找工程组织和代码架构的改进。而不是等待指示,他们制定计划来改进代码库 – 找出性能优化、分析客户反馈、提高开发人员生产力、减少技术债务。
当Staff工程师确定这些改进领域时,他们不仅仅是提出工单或提交请求。他们通过定义项目范围、编写技术规范、概述可交付成果和创建架构设计来负责制定解决方案。这种从被动工作到主动工作的转变代表了从高级到Staff级别的关键过渡之一。
这样想:高级工程师被分配项目,Staff工程师创建项目。
Staff工程不是关于成为更好的个人贡献者。而是关于倍增周围每个人的效率并成长他人。
Staff工程师与经理角色
虽然Staff工程师面试新候选人、指导工程师、提供反馈并规划技术方向,但他们的角色在大多数公司中与经理级职位有显著不同。尽管有些责任重叠,但这两个职业轨道之间存在关键区别。
Staff工程师不:
- 参与雇佣和解雇决策
- 在晋升过程中提供反馈之外的输入
- 有直接下属
- 拥有正式的管理权限
根本区别:
- Staff工程师:通过专长和指导产生影响的技术领导者
- 经理:结合人力资源、技术和项目领导力与正式权限
在大多数组织中,Staff工程和管理代表两个不同的职业晋升路径,允许技术专业人士在资历和影响力上成长,而无需转型为人员管理角色。
为什么你可能还没有晋升
以下是五个阻碍人们的常见原因:
等待被告知你已准备好
许多人陷入等待经理拍肩膀说“你已准备好晋升”的陷阱。这种被动方法可能让你停滞多年。现实是,没有人会来找你给你任何东西。晋升委员会不会基于潜力晋升人 – 他们基于下一级当前表现的证据晋升。
修复:今天就开始像Staff工程师一样表现。负责跨团队计划,指导初级开发人员,并推动技术决策。与更广泛的团队分享你的成就。
当你持续6-12个月像Staff工程师一样行动,并且每个人都知道你表现得多好时,晋升就成了形式而不是信仰的飞跃。
行动项:确定一个你本月可以开始以Staff级别运作的领域。无论是领导技术设计评审还是指导初级工程师,开始展示你希望被认可的行为。定期分享状态更新 – 根据团队和项目每天或每周,并分享遇到的挑战和开发的解决方案。这不仅会让你被注意到,还会帮助创造自我推广和知识分享的平衡。
相信自己 – 不要等待外部验证。
冒名顶替综合症
你脑海中那个说“我不够聪明”或“我知道不够”的声音是冒名顶替综合症。每个人在某个时候都感觉像冒名顶替者。但成功的人尽管感觉像冒名顶替者,仍采取行动。
如果你让冒名顶替综合症支配你的行动或阻止你采取行动,你将阻碍自己实现伟大事物。你在网上仰望的人也面对过冒名顶替综合症。大多数成功人士每周,如果不是每天,都会遇到它。不同的是,他们学会将其放在一边,并制定前进计划。
修复:重新构建你的心态。而不是想“我不知道X”,想“我还不知道X”。专注于你的成长轨迹,而不是你当前的知识缺口。记住,你因潜力而被雇佣,而不是因为你已经知道一切。
行动项:保留一个“吹牛文档”,每周记录你的成就。当冒名顶替综合症发作时,回顾这些你能力和影响的证据。随着时间的推移,你会注意到你克服了当时感觉困难或不可能的事情。
你可以做困难的事情!
我制作了一个详细视频,突出克服冒名顶替综合症的策略。你可以在这里查看:
等待成为深度技术专家
许多工程师认为他们需要知道所有技术的所有知识才能获得晋升。这种“我必须完美”的思维会损害你的职业生涯。Staff工程师不需要知道一切。你需要知道的最重要技能是如何找到答案并帮助他人解决难题。
修复:学习许多事物的一点,而不是学习一件事的一切。一个知道一些数据库、系统和网站知识的Staff工程师将比只精通一件事的人更有效地表现和帮助。当你作为Staff工程师从事大项目时,你会学到更多。
行动项:选择2-3个你不了解但公司使用的技术领域,或选择一个新技术栈。每周花30分钟学习每一个。专注于它们如何与你已经知道的系统配合。
如果你不相信自己,为什么别人应该相信?
避免政治
许多工程师认为谈论他们的成就是“玩政治”,他们不这样做。这会毁掉他们的职业生涯。告诉人们你的胜利不是夸耀吹牛 – 这是必要的。如果你的老板和晋升委员会不知道你做了什么,他们无法帮助你。
修复:将自我倡导重新构建为数据共享。你提供关于你影响的事实信息,以帮助领导层做出明智决策。创建一个每月更新模板,包括:完成的项目、解决的问题、改进的指标和指导的人。你是在分享事实,而不是编造故事。
行动项:开始每两周给经理发一封电子邮件,突出你的关键贡献。尽可能包括具体指标:“将API响应时间减少40%,影响10,000每日用户”而不是“改进API性能”。
如果你不吹自己的号角,谁会?
挣扎于网络
内部网络对许多工程师来说感觉尴尬,但对高级和Staff级别晋升至关重要。Staff工程师需要在组织内产生影响,这需要与直接团队之外的人建立关系。
修复:将网络视为建立真正的专业关系,而不是交易性互动。从对他人的工作好奇开始。问问题如“你的团队面临的最大技术挑战是什么?”或“什么会让你的团队更有效?”
行动项:设定目标,每月与直接团队之外的某人进行一次咖啡聊天。专注于了解他们的挑战以及你的专长如何可能帮助。分享你正在做什么以及你有什么目标。这些关系通常导致合作机会,展示你的Staff级别影响。
如何成为Staff工程师
每个公司的晋升过程都不同,但以下是大多数地方适用的一些一般步骤:
1. 评估自己
使用你公司的工程阶梯(或像Block工程职业阶梯这样的公开可用模板)创建需求文档。诚实地检查每个需求,并将其标记为“达到”或“需要工作”。
如何做好:
- 对自己 brutally诚实。低估比高估你当前水平更好
- 如果某些感觉不清楚,向你的经理或其他Staff工程师询问每个需求的示例
- 使用你工作的具体证据和PR链接,而不仅仅是你对自己能力的感受
- 每1-2个月更新此文档以跟踪你的进度
常见错误:自我评估过于慷慨。如果你不是100%自信你“达到”某事,将其标记为“需要工作”。
2. 与经理讨论差距
首先,与经理安排一对一会议,审查你的评估。共同努力确定可以帮助你在需要改进领域成长的具体项目。这次会议可能感觉痛苦,但在水平设定中非常有帮助。请求关于你评估的反馈,看他们是否同意或不同意。
与经理评估后:
- 有2-3个你想专注的具体领域
- 询问可能帮助你发展这些技能的即将到来的项目
- 规划实现这些目标的过程
要问什么:
- “未来6个月什么项目可以帮助我发展[具体技能]?”
- “我应该向哪些Staff工程师学习?”
- “对于我这样试图晋升的人,成功是什么样子?”
跟进:会议后发送摘要电子邮件,包含你商定的专注领域和后续步骤。
3. 建立支持小队
晋升委员会希望听到多人关于你影响的意见。仅你经理的意见不够。因此,为自己建立支持小队是个好主意。这些是除了你经理之外的人,如导师、学员、领导层人员或鼓舞人心的同事,他们可以在晋升讨论中担保你的技能和影响。这些本质上是你的“赞助人”。
包括谁:
- 可以谈论你组织影响的跳过级别经理(你经理的经理)
- 与你合作过跨团队项目的工程师
- 你指导过的可以谈论你领导力和教学技能的工程师
- 可以验证你技术决策的其他团队的Staff工程师
如何建立这些关系:
- 志愿参加跨团队项目和计划
- 提供帮助其他团队解决你专长领域的技术挑战
- 参加公司技术讲座并提出深思熟虑的问题
- 通过内部演示或文档分享你的知识
这些关系应该是真实的,而不是交易性的。首先专注于提供价值。
4. 像Staff工程师一样表现
晋升委员会晋升已经在下级表现的人,而不是那些可能能够在该级表现的人。现在开始像Staff工程师一样行动。交付有影响的项目,指导他人,并负责技术决策。
如何开始:
- 选择一个你本月可以开始展示Staff级别影响的领域
- 志愿参加下一个跨团队项目或技术计划
- 询问经理你是否可以领导即将到来功能的技术设计
- 开始指导初级工程师并记录你对他们成长的影响
- 通过文档、演示和代码评审分享知识
- 识别和解决影响多个团队的技术债务
- 评估新技术并提出建议
评估标准
要转型为Staff工程师,你需要在多个维度展示持续卓越。理解评估标准并承担展示以下内容的项目有帮助 -
深度技术专长
你被期望:
- 为他人编写详细的技术规范
- 定义共享标准(例如,缓存层、API合同)
- 跨团队改进系统范围架构(例如,将延迟降低40%的微服务通信)
展示这些技能的项目示例:
- 架构可扩展、容错的系统(例如,支付处理的灾难恢复)
- 重新设计像用户登录这样的系统,以支持5000万+每日用户,99.99%正常运行时间
问题解决与创新
你被期望:
- 构建被他人广泛采用的可重用工具或框架
- 领导新技术采用(例如,Kubernetes、混沌工程)
- 通过你的创新设定工程范围标准
展示这些技能的项目示例:
- 修复视频录制软件中的无限镜像问题。(我做了这个并提交了我的第一个专利!)
- 解决内存泄漏或生产崩溃
- 创建创新解决方案,减少成本或提高性能
技术领导力
你通过以下方式提高团队质量标准和领导技术决策:
- 做出深思熟虑的构建与购买决策
- 减少技术债务
- 建立最佳实践并确保团队遵循
- 领导技术迁移同时确保0停机
- 提供有帮助、教育性的代码评审反馈
- 设定团队范围的编码、测试和评审标准
- 创建提高效率的模板、指南和文档
指导工程师
你通过以下方式帮助其他工程师成长:
- 指导初级/中级工程师通过复杂系统
- 深思熟虑地评审设计和代码
- 教授系统设计、架构和调试技能
你可能:
- 创建学习计划(例如,6个月入职课程)
- 主持研讨会(例如,调试生产、分布式系统)
- 帮助他人像系统设计师一样思考
- 帮助其他工程师获得晋升
如何构建你的Staff工程师组合
将你的组合视为你的晋升故事。它应该代表你过去12-18个月的成就,有清晰证明支持。你不仅展示你构建了什么 – 还展示你如何思考、如何领导以及你产生的影响。
包括什么
你的组合应该是10-15页,讲述一个引人入胜的关于你技术领导力的故事。以下是强大Staff工程师组合的要素:
- 执行摘要:一页概述,突出你最重要的贡献
- 技术领导力项目:3-4个主要计划,作为详细案例研究呈现
- 指标仪表板:跨性能、成本节约和采用率的量化影响
- 同行推荐:来自不同团队工程师的外部验证
- 成长轨迹:12-18个月视图,显示你的范围和影响力如何增长
如何构建每个案例研究
每个案例研究应遵循结构化格式,讲述完整故事。首先,你想讨论问题陈述:什么坏了?谁受影响?为什么重要?
然后覆盖你采取的技术方法。你可以讨论高级架构、关键决策和你考虑的权衡。之后,你可以讨论你如何实现一切 – 时间线、你如何协调团队以及你面临的任何技术挑战。
最后,你将分享你的结果,并讨论业务和技术影响,带有前后指标。分享任何经验教训并讨论你会做什么不同以及它如何贡献你的成长也是个好主意。
晋升过程
大多数公司使用基于委员会的方法,你的经理使用综合证据包为你倡导晋升。委员会问一个简单问题:我们认识这个人吗?我们信任他们的可信度吗?
你的经理向委员会提交晋升包,你与所有其他等待晋升的人一起被评估。为了帮助你的经理在委员会面前展示你最好的一面,我建议你与经理一起构建晋升包。这个包包括几个关键组件。
1. 职业计划与工程阶梯评估
这是你希望与经理合作一段时间的相同文档。本文档将你当前表现映射到你公司的工程阶梯标准。这不仅仅是自我评估 – 这是一个战略文档,对每个能力水平有具体证据。
要包括的关键元素:
- 对阶梯标准的逐行评估
- 每个技能领域的具体示例和证明点
- 清晰展示所有相关类别的“达到”表现
- 识别任何差距和解决计划
2. 组合与成就证明
确保你的组合不仅解释你完成了什么,还解释你产生的影响以及证明。它应包括:
- 代码示例和设计文档
- 完成的项目和你做的改进
- 来自用户和同事的反馈
- 代码评审评论和你获得的奖项
3. 吹牛文档
我们已经谈过这个,但这个详细日志作为你的专业亮点集,展示你评审期间的量化指标和定性成长。
要跟踪的量化指标:
- 创建和评审的拉取请求
- 交付的功能和时间线表现
- 代码评审讨论
- 错误修复率和系统改进
- 实现的性能优化
要记录的定性成就:
- 技术领导时刻
- 跨职能合作成功
- 指导和知识分享贡献
- 实施的创新和创造性解决方案
成长文档:
- 学习和应用的新技术
- 抓住的领导机会
- 反馈纳入和技能发展
4. 推荐信
从队友、其他部门、你帮助过的人和客户那里获得推荐。要求他们提供具体示例。
你的包应组织良好,基于事实,并展示你如何成长。让委员会容易看到你的价值,让你的经理为你说话。
六个月晋升计划
以下是帮助你导航晋升的结构化方法:
第1个月:评估自己 审查你公司的工程阶梯并评估你的差距。如果没有,使用公开可用的职业阶梯。
第2个月:创建计划 与经理讨论你的评估。确定解决你差距的项目。
第3个月:从事有影响的项目 开始与你的跳过级别经理和其他利益相关者建立网络。
第4个月:收集证明 记录你的工作,寻求反馈,并建立你贡献的证据。
第5个月:审查进度 更新你的职业文档并与经理审查。
第6个月+:继续前进 过程可能超过六个月,但坚持和结构将帮助你到达那里。如果花费更长时间,不要担心 – 这不意味着你不合格或不会成功。继续努力。
总结
晋升并不总是关于技能 – 它也关于时机和组织因素。如果你感到倦怠或不确定是否继续在技术领域,暂停或重新考虑你的道路是可以的。
掌控你的职业生涯。为自己倡导并分享你的成就。如果你需要个性化指导,预订与我的