当我开始申请高级职位时,我做了任何工程师都会做的事:逆向工程需求。
我收集了50份高级工程师、Staff工程师和Principal工程师的职位描述,这些岗位薪资在18万到35万美元之间。以下是我的发现。
每份招聘中都会出现的词
有些短语出现得如此一致,以至于它们基本上是入场券:
- "生产系统"(47/50)——他们不想要只会做教程的人。他们想要凌晨两点被叫醒处理过问题的人。
- "跨职能协作"(44/50)——你将与产品、设计、数据和运维团队合作。你能在自己的专业领域之外进行沟通吗?
- "指导他人"(41/50)——如果你不能传授知识,你就不是高级工程师。没有例外。
- "架构决策"(39/50)——他们希望你设计系统,而不仅仅是实现任务。
- "运维卓越"(35/50)——SLO、监控、事件响应。仅仅构建系统还不够——你能运维它吗?
区分18万和30万+薪资的关键词
从高级工程师(18万)到Staff工程师(25万+)的跃迁,本质上是这样的:
高级工程师: "构建功能并维护系统。" Staff工程师: "定义技术方向并赋能其他工程师。"
具体来说,这意味着:
| 高级工程师 | Staff工程师 |
|---|---|
| 编写代码 | 编写代码 + 决定构建什么 |
| 审查PR | 定义代码审查标准 |
| 修复Bug | 预防Bug类别 |
| 实现架构 | 设计架构 |
| 使用监控 | 定义监控内容 |
| 遵循流程 | 创建流程 |
大多数作品集错在哪里
在看了几十个工程师作品集(包括我自己的旧版)之后,我发现了这个模式:
大多数人展示的内容: "我用React和Node.js构建了X。" 招聘经理想要的内容: "我因为X约束选择了React而非Vue,并且我接受了这样的权衡。"
大多数人展示的内容: "我有95%的测试覆盖率。" 招聘经理想要的内容: "我通过在我们的支付管道上实施有针对性的契约测试,将生产事故减少了60%。"
大多数人展示的内容: 一串技术列表。 招聘经理想要的内容: 你在规模下运维过系统,并在约束条件下做出过艰难决策的证据。
我如何据此重构我的作品集
经过这次分析,我做了三项改动:
1. 添加了平台工程页面。 SLO、事件演练、安全凭证、参考架构。这传递了"我运维系统,而不仅仅是构建演示"的信号。
2. 添加了带有"挑战"部分的案例研究。 不仅仅是构建了什么——还包括出了什么问题、如何诊断、以及学到了什么。这就是运维经验的信号。
3. 添加了带定价的服务页面。 这对求职来说听起来反直觉,但它传递了一个强有力的信号:"我并不绝望。我有选择。我是选择与你合作。"谈判筹码是真实存在的。
没人谈论的面试信号
我注意到一件事:在25万+美元的级别,面试更多不是关于你是否能做这份工作,而是关于你是否以那个级别的人的方式思考。
他们不是在测试"你能实现一个链表吗?"而是在测试:
- 当你描述一个系统时,你会提到故障模式吗?
- 当你讨论一个决策时,你会提到你权衡了什么吗?
- 当出问题时,你是承担责任还是责怪工具?
- 你能向非技术人员解释一个复杂系统吗?
我的作品集现在在面试开始之前就回答了这四个问题。
可操作的建议
如果你的目标是高级工程师及以上的职位,你的作品集应该回答:
- 你运维过(不仅仅是构建过)的最复杂的系统是什么?
- 你做过的一个涉及真实权衡的决策是什么?
- 什么东西出过问题,你是如何修复的?
- 你能把你所知道的教给别人吗?
技术栈的重要性比你想象的要低。运维成熟度的重要性比你想象的要高。
