在美国大部分的科技公司,作为软件工程师,一名应届毕业生在经过几年的经验积累后,通常都可以晋升为 Senior software engineer。之后如果想要在 career ladder 上继续往上走,通常有 2 个选择,一是成为 Engineering manager,二是继续走技术路线,成为 Staff engineer 和 Principal engineer。
作者 Will Larson 采访了二十多位在不同公司的 Staff-plus engineers,把故事和经验汇总成《Staff Engineer》一书。本文截取了其中几位的采访,来讲讲 Staff Engineers 是做什么的。
Staff Engineers 的日常工作是什么?
如果说 Staff engineers 的工作不过是继续做他们作为 Senior engineers 时候的事,例如完成项目设计和编码实现,好像的确是那么回事,但是也不完全准确。 Staff engineers 当然也做这些工作,但以前这些工作是他们工作的核心,而现在更多则是变成辅助性的任务。成为 Staff engineers 后,更重要的是,去制定技术路线和发展方向、提供 mentorship、尝试探索型项目和给公司的决策提供建议。
制定技术路线
Joy Ebertz - Senior Staff Software Engineer at Split
I feel most impactful when I can facilitate setting a technical vision for an area and get people moving toward that vision. I think we would all agree that we want our code to be better architected than it is or improved in some way. However, I’ve found that often people have some vague sense of wanting better without having a clear idea of what that thing they want is. I like to help the group decide on a shared understanding of where exactly they’re trying to get (it’s actually okay if we never get there) and come up with a general game plan of how to get there.
作为导师
Michelle Bu - Payments Products Tech Lead at Stripe
In my current role, I feel energized when someone I’ve sponsored sends an announcement that they’ve shipped their work, or when I see that I’ve helped shape or shift an engineering team’s model of an important topic. It’s these teams, not me, who are doing the hard work day-to-day of building and supporting their technology. I measure my impact based on their progress and, more importantly, the directionality of that progress and the alignment of their work to the company’s goals.
提供工程方面的观点
Dan Na - Staff Engineer and Team Lead at Squarespace
I have a seat at the table at higher level engineering discussions that occur at a level above individual projects and teams. We have recurring staff engineering meetings where we discuss problems that span teams which are both technical and non-technical in nature. I think a key responsibility of Staff-plus is a willingness to own all of the things that contribute to (or block) engineering output, which includes both technical strategy and culture.
探索
Ritu Vincent - Staff Engineer at Dropbox
In my current role within the incubator, I’m spending all day prototyping, but in my previous tech lead role, I did a lot of different things. I was coding, but I wasn’t coding very much, maybe 20% of my time. I was the tech lead for the desktop client area, and spent a lot of time coordinating and providing guidance on projects. I also spent a lot of time partnering with recruiting, which was something that I did because I was interested in it, not because it was required.
与我共事的 Staff Engineers
Staff Engineers 是我下个阶段的目标,因此我一直在观察,希望在平时的工作中填补中间的 gap。目前我所在的组负责开发和维护内部 libraries,围绕 observability 和日常功能开发提供统一的工具和库,希望能减少公司其他 developers 的痛苦和提升开发效率。由于我们组需要更加有经验的工程师(manager 原话),所以我们组常年有 2-3 位 Staff engineers,因此我得以观察和学习组内的 Staff engineers 是怎样工作的。
制定具体的 Road map 和计划
在每个季度,我们通常整个组会一起讨论未来的计划,着手分析和调整我们的目标。但是都涉及规划具体项目时,Staff engineers 往往会起到带头作用,写 proposals 和 design docs,创建 Jira epics,尤其是要梳理优先级和依赖关系时。
提供更深远和独特的思考角度
在 Slack 上,每个组都会有公开的 channel 用于答疑和同步进展,当遇到别的组提出疑问时,组里每个人夜都会参与回答和讨论,但是我能观察到 Staff engineers 思考问题的角度和深度往往更加深远,提出的想法也比我更有洞见。
给新人合适的指导
由于是远程的关系,日常工作中我们有大量的 pair,我通常会利用这个机会,简单介绍目前手头的工作进度,争取更早得到 feedback。另外,我们也非常依赖异步的 input,不管是代码 review 还是一般讨论。因此,Staff engineers 的一项重要工作就是给出反馈和建议,确保大方向和细节的同时,又能给经验稍微欠缺的同事成长的空间。我理解这就是广义的 mentorship。
My Takeaways
Staff engineers 的工作往往不紧急,但是非常重要,正如 Will Larson 所说,需要更长的时间才能体现价值(Slow but rewarding)。
是否达到 Staff Engineers 的能力没有统一的标准,但是在某些方面可见一斑。CircleCI 有一份文档,关于工程师胜任工作能力的描述,从 Associate Engineer 到 Principal Engineer,你觉得自己的能力到了哪个 level ?