Staff and Principal Engineers: why do we need them now? (Part 2)

Christoph Neijenhuis
commercetools tech
Published in
6 min readMar 28, 2022

--

Photo by Brett Jordan on Unsplash

We are an established scale-up with a well-known product and a substantial customer base. We are still experiencing a heightened state of growth, meaning new product domains, org structures, and roles are being built as we speak. Evolving our Tech Leadership track and adding new Staff and Principal Engineer roles felt like a natural step, marking down an important milestone in our organizational growth.

When we designed our tech leadership track, we looked at our internal requirements and, at the same time, at what others in the industry are doing. Both staffeng.com and levels.fyi suggest standardizing on a Staff, Principal, and Distinguished Engineer sequence. Our needs closely align with their definitions for Staff and Principal Engineers. There are still some differences in the details — for example, we base our Staff Engineer in a team, even though part of their work is to enable other teams.

Differentiation points between Senior, Staff and Principal Engineer roles

Even though the Senior Engineer role isn’t new, we describe it as the baseline in comparison to the Staff Engineer role. Let’s meet Nina, Stephanie, and Patricia, three different Engineers personas helping us spot the similarities and differences within their day-to-day work.

Nina, the Senior Engineer

Time spent of a Senior Engineer

As you can see, Nina spends most of her time coding. Some of that time is spent pair-programming, as she is keen to help others get unstuck. She also attends meetings, mostly team ceremonies. As a senior member of her team, Nina spends a good amount of time reviewing her team members’ code and also other work, such as product requirements with the Product Manager of her team or architecture decision records.

Brian, the Senior Backend Engineer in Nina’s team, is on parental leave for 3 months. Even though Nina is a Frontend Engineer, she helps the two Junior Backend Engineers in her team.

Stephanie, the Staff Engineer

As a Staff Engineer, Stephanie spends a substantial amount of her working time in the code base, either by writing code directly or by reviewing pull requests of others. However, reviewing takes up a more significant portion of her time than for Nina. Stephanie is also reviewing pull requests of other teams more frequently, and she is much more involved in crafting architecture decision records.

Time spent of a Staff Engineer

Every now and then, Stephanie is closely working with Product Managers in the early phases of product discovery. Just last week, she helped another team resolve a critical performance issue because she has loads of experience optimizing database queries. Therefore, Stephanie ends up spending more time in meetings compared to Nina.

Patricia, the Principal Engineer

Patricia spends the least amount of time writing code of all three. Because she isn’t part of a team, Patricia is very mindful that any production code she writes needs a proper maintainer who has more time for coding. Last week, she spent her coding time pair-programming with Nina integrating a new metrics platform into their codebase.

Time spent of a Principal Engineer

Just like Stephanie, the Staff Engineer, she spends a great amount of time reviewing the work of others. She is not only crafting a lot of architectural decision records, but also the technical vision of the whole organization.

A large part of Patricia’s job is spreading her knowledge. For example, she runs a monthly onboarding session for new joiners. Another part is keeping the organization aligned and projects on track. Patricia facilitates a bi-weekly sync meeting on the rollout of the new metrics platform that involves most teams within the organization. She is also running a monthly chapter meeting.

Core strengths for each role

Strengths of a Senior Engineer

Nina, the Senior Frontend Engineer, needs to understand the architecture of the codebase she is working with well, and she also has a good overview of the overall architecture. She has a great deal of expertise in the frontend framework and she is a security expert because her team is handling the UI for user accounts and logins.

Nina communicates technical issues thoroughly with her teammates, including the Product Manager and UX designer. She makes sure that epics, even those that take several months, are broken down into features, and those are broken down into tasks, and that Backend and Frontend work hand-in-hand.

Strengths of a Staff Engineer

Stephanie, the Staff Engineer, has a similar level of understanding of the overall architecture like Nina, but she has deep expertise in the database they are using. Other Engineers seek her advice on how to debug and resolve performance issues.

Stephanie is communicating more — both in meetings and in writing. She is approaching members outside of her team, and helps Product Managers of other teams understand the criticality of an issue. Stephanie can also drive projects that involve multiple teams.

Strengths of a Principal Engineer

Patricia, the Principal Engineer, has the best understanding of how all the different services work together. When a team isn’t sure which architecture to pick, she knows which other teams have solved similar problems before and how.

Effective written communication is something Patricia has worked on deliberately, as it helps her have a lasting impact. She can handle project management for tasks that involve nearly every engineering team in the organization, even if those run for several quarters.

Takeaways

We borrowed the persona concept to clarify how our Staff and Principal Engineer roles would look like at commercetools. Similarities and differences aside, there’s no better time to be joining our Tech Leadership Track as Staff or Principal Engineer.

There’s space for people to co-design their roles and help shape the bedrock of our technical leadership culture at commercetools. They will have the chance to oversee and drive change across various projects, achieving mastery in tech leadership in return. Compared to corporate tech organizations, changing things for the better will be welcomed and encouraged.

While the Staff and Principal Engineer roles do not entail any people management responsibilities (in the traditional sense of direct reports), they do require interpersonal skills and a leadership mindset to fulfill their day-to-day work. What’s distinctive about the Staff Engineer role is that they will be part of a specific team, taking on and solving team-specific topics, having a more direct impact on a team level (by also coaching individuals). On the other hand, the Principal role will enable our engineering teams to become more productive and increase their long-term capabilities without being part of one. Either way, both roles will play an important part in how our tech vision will evolve over time.

--

--