Staff Engineering
Who is this for?¶
This document is aimed at staff engineers, as well as anyone within the organisation who may be working with staff engineers.
Overview¶
Staff engineers work across all areas of the department, and across our entire technology estate. They are responsible for supporting all engineering teams, and maintaining a good working knowledge of the platforms and systems the department is responsible for. Staff engineers are also expected to work both independently and collaboratively on a range of projects to improve the departments suite of engineering tools, and more generally improve our effectiveness.
Staff engineers will spend much of their time working in the Support Hub as part of the Engineering Support function, but should also be expected to spend significant portions of their time working with other teams.
Staff engineers should be explicitly working within the Support Hub and participating in that team's activities and meetings, or explicitly embedded in another delivery team and temporarily be part of that team's structure and participating in it's activities. It is up to each Staff engineer to always make it clear where they are spending their time.
Types of work¶
A staff engineer can expect to engage in a number of different types of work, which can be broadly categorised as below.
Project work¶
This category is deliberately generic, and includes both Support Hub projects the staff engineer is contributing to, as well as individual projects they may be working on.
Individual project work should be managed just like any other Support Hub planned work. This will improve visibility of the work and provide opportunities for other Support Hub members to collaborate on readying or implementation, though it doesn't necessarily mean that other Support Hub members are available or expected to participate!
Research and investigations¶
This could be research or investigation into how to solve a specific problem, which would typically be done with the intention of contributing to subsequent technical design sessions with another delivery team. This might also be done to support a Product Manager where a problem has not yet been assigned to a specific delivery team.
As above, investigations should be managed and readied like any other Support Hub planned work. In this case the increased visibility could well result in opportunities for other Support Hub members to learn about relevant topics or contribute ideas that might not otherwise get heard.
Technical design support¶
A staff engineer can use their existing domain or technology expertise to help a delivery team create a technical design for some upcoming work. In most cases, participating in technical design will involve taking part in a design session; this may be anything from an hour to multiple days, depending on the scope and complexity of the work being designed.
Even when they lack technical expertise in a relevant area, participating in technical design sessions (or being updated with the relevant outcomes) can be an effective way for staff engineers to develop and maintain their domain knowledge across areas of our technical estate they are less familiar with.
Design sessions should appear as events in the staff engineer's calendar, which should serve to communicate their availability. However, extended design sessions should be communicated in advance with the rest of the Support Hub, to help mitigate the impact of their absence.
Delivery team support¶
A staff engineer will often spend some time embedded within a delivery team. This will often be a natural follow-up to help implement something they have helped in the design phase of. It could also be providing practical support to a team working with a particular technology or part of the domain that the staff engineer has expertise with, or it could simply be a way of providing additional software engineering resource to a team that needs it.
Whilst working with another team, the staff engineer will use whatever mechanisms the team they are joining already uses to manage their work and record their time.
Note
Given that staff engineers can work across any team, delivery teams should be aware that the staff engineer joining them to provide support may not be very familiar with their ways of working. Estimation is likely to be a particular challenge, as different groups of people will develop different shared subjective scales.
This makes it especially important for teams to document their working practices.
Working with Staff Engineers¶
This section is particularly aimed at anyone who wants to get some support from a staff engineer, including:
- Delivery teams working on particularly complex or unknown problems
- Product Managers working on a problem that hasn't yet been assigned to a delivery team
There is currently no set process for "booking" an engineer's time, so start by having an open conversation with them to discuss your needs and how they might be able to support. Be mindful that staff engineers will have commitments within the Support Hub, as well as requests from teams or department members, so engage with them early! It may also be worth bringing a Delivery Manager into the conversation, as they should have a good overview of delivery plans across the department.