📖 I consider the defining work on this topic to be Will Larson’s book on the topic. You can read some of their writing on https://staffeng.com.
As a staff engineer at Cleo, I have been asked many times what my role entails. The role of a staff engineer can vary between companies, but in general, staff engineers are technical leaders who help drive the direction and success of their company's engineering efforts.
In this blog, I will explain what a staff engineer is, what their responsibilities are, and how they differ from other engineering roles.
At Cleo we do not use the common Junior/Mid/Senior distinction, instead we separate the role of software engineer into six levels. Our levels and the compensation ranges for those skill sets are publicly available. We believe that levels five and six approximately correspond to the roles of staff and principal engineer, and can be thought of in these terms.
What is a Staff Engineer?
The dry summary is that a staff engineer is a technical leader who has significant experience in software engineering. They are recognised as senior-level engineers and have a deep understanding of the company's technology stack. Staff engineers are responsible for driving the technical direction of the company and ensuring that engineering efforts align with the company's overall goals. But every staff engineer is different. My role as a staff engineer, and how I spend my time day to day, is quite different from the roles taken on by other engineers at Cleo at my level.
I’m going to focus primarily on my own experience in this blog post, but I want to note that there are multiple staff engineer archetypes. I fit best into the tech lead Archetype, but from time to time I will take on tasks that more closely resemble other Archetypes. This is because one of the main things that I bring to my role is flexibility. During various points in my career at Cleo, I have led multiple teams at once, I have delegated team leading responsibilities to focus on supporting a vital project, and I have been the main engineer delivering a much needed feature. This is true across all staff engineers at Cleo. We are called on when we’re needed, and our responsibilities shift according to the needs of the wider team.
Responsibilities of a Staff Engineer
As I’ve noted above, the responsibilities of a staff engineer are not constant. In fact, they are much more likely to shift than roles that are more consistently focussed on delivery. However, there are some parts that regularly rear their heads.
A key role of a staff engineer is to provide technical leadership. They guide the company's technical direction by collaborating with engineering teams to design and implement intricate systems. They also mentor junior engineers and ensure that engineering efforts align with the company's overall objectives. Effective communication is crucial in this role as staff engineers must explain complex technical ideas to non-technical colleagues in a way that's easy to understand.
However, this is only half the picture. It’s not just solving problems that are brought to us. It’s about seeing problems or opportunities in the structure of the company from a technical angle, and advocating for solving them. Like Glue Work, when done well it can be near invisible. The scaling issues are smoothed out just as the team starts to feel the pain, the feature is launched and Just Works with the rest of the system, and the team that was storming is now performing.
Architecture and Design
Staff engineers are responsible for designing and architecting complex systems. They work with engineering teams to develop the architecture of a system and ensure that it meets the company's technical requirements. They also work to ensure that the system is scalable and maintainable over time. Staff engineers must have a deep understanding of software architecture and design patterns.
At Cleo, our engineering principles guide our day-to-day work. Teaching the team how to apply them is a big part of the work of a staff engineer. This is not a prescriptive process, and I believe that if I cannot reach agreement with someone on how to solve a problem technically, I have either misunderstood them or failed in my own communication.
Staff engineers do not dictate approaches to architecture to the wider team. Instead, they work to express concerns and encourage discussion, bringing in the whole team’s ideas to build a stronger solution that everyone agrees on together. Sometimes this means that their responsibility is to get people with more knowledge together and facilitate the discussion, rather than putting forward their own ideas.
Code Quality and Review
Staff engineers are responsible for ensuring that the code written by the engineering team is of high quality. They review code and provide feedback to engineers, ensuring that the code is maintainable, scalable, and meets the company's technical requirements. Staff engineers have a strong understanding of software development best practices, but our specialisms differ.
For example, here’s Josh talking about what he looks for in pull requests (in the weeks after reading that, I caught not one but two of the issues he discussed in pull request reviews). They must also be able to provide constructive feedback to engineers in a way that encourages learning and growth.
Staff engineers are responsible for developing and executing the technical strategy of the company. They work with other technical leaders to develop the company's technical vision and ensure that engineering efforts align with that vision. This requires a deep understanding of the company's business strategy and the ability to translate that strategy into technical goals. Staff engineers must also be able to anticipate future technical trends and ensure that the company is prepared to adopt new technologies as they emerge—or resist trends if they’re not beneficial.
We’ve been working hard to adopt recent explosive growth in AI and large language models. After all, Cleo has always been about helping people to understand their own finances, in clear and sassy terms.
Staff Engineer vs. Other Engineering Roles
The role of a staff engineer is often confused with other engineering roles, such as senior engineers or technical leads. While there is some overlap between these roles, there are some key differences:
Senior engineers are typically recognised as experienced engineers who have advanced technical skills. They are responsible for writing high-quality code, mentoring junior engineers, and helping to drive the technical direction of the company. However, senior engineers typically focus on a specific area of the company's technology stack, whereas staff engineers have a broader understanding of the company's technology. Senior engineers are an important part of the technical team, but they do not have the same level of responsibility as staff engineers.
Technical leads are responsible for leading a specific engineering team. They work closely with the team to ensure that engineering efforts align with the company's goals. Technical leads typically focus on a specific area of the company's product, whereas staff engineers have a broader understanding of the company's product, and are responsible for driving the technical direction of the company as a whole. Many staff engineers (like myself) are also technical leads, but not all technical leads have the responsibilities of a staff engineer.
A staff engineer is a technical leader who has significant experience in software engineering. They are responsible for driving the technical direction of the company and ensuring that engineering efforts align with the company's overall goals. Staff engineers must have strong communication skills, a deep understanding of software architecture and design patterns, and the ability to anticipate future technical trends.
There’s no one single approach to being a staff engineer. Part of the reason I wrote this blog was to reassure people that you could be a tech lead at Cleo in ways that look different to how I do it.
If you're interested in becoming a staff engineer, I would recommend focusing on developing your leadership and communication skills, as these are essential for success in this role. The reason that there’s a stereotype of the detached Architect role is that many senior engineers progress towards roles with greater influence, without learning how to build trust and collaboration in their teams. You will need a deep technical understanding, but some of the best engineering leaders are so effective because they can access the skills of everyone they work with to solve the problems the team faces together.