Most important is the fork between purely technical work and managing teams. It's important that Engineering Managers self-select into that track and don't feel pressured. We believe that management is a craft like any other and requires dedication. We also believe that everyone deserves a manager that is passionate about their craft.
Once someone reaches a Senior-level role, and wants to progress, they will need to decide whether they want to remain purely technical or pursue managing technical teams. Their manager can provide opportunities to try tasks from both tracks if they wish. Staff-level roles and Engineering Manager roles are equivalent in terms of base compensation and prestige.
|Staff Developer||→||Distinguished Developer||→||Engineering Fellow||→||Chief Technology Officer|
|Junior Developer||→||Intermediate Developer||→||Senior Developer||↗|
|↘||Engineering Manager||→||Director of Engineering||→||VP of Engineering|
|Staff Security Engineer|
|Security Engineer||→||Senior Security Engineer||↗|
|↘||Security Engineering Manager||→||Director of Security|
|Staff Automation Engineer|
|Automation Engineer||→||Senior Automation Engineer||↗|
|↘||Manager, Test Automation||→||Director of Quality|
|Staff Services Support Agent|
|Intermediate Services Support Agent||→||Senior Services Support Agent||↗|
|↘||Services Support Manager|
|Staff Support Engineer|
|Junior Support Engineer||→||Intermediate Support Engineer||→||Senior Support Engineer||↗|
|↘||Support Engineering Manager||→||Director of Support|
We normally don't offer any internships, but if you get a couple of merge requests accepted, we'll interview you for one. This will be a remote internship without supervision; you'll only get feedback on your merge requests. If you want to work on open source and qualify please submit an application. In the cover letter field, please note that you want an internship and link to the accepted merge requests. The merge requests should be of significant value and difficulty, which is at the discretion of the manager. For example, fixing 10 typos isn't as valuable as shipping 2 new features.
We will occasionally hire a Junior Developer if we feel that they are capable of quickly becoming an exceptional member of our team, but lacking in some of the necessary skills for being hired at an Intermediate or higher level position. There are clear expectations and support provided to help ensure that they gain these skills as efficiently as possible.
Note: We are currently focused on rapid scaling and are not likely to consider internships or junior roles at this time.
Note that we have a specific section for Senior Developer because it's an important step in the technical development for every engineer. But "Senior" can optionally be applied to any role here indicating superior performance. However, it's not required to pass through "senior" for roles other than Developer.
Senior developers typically receive fewer trivial comments on their merge requests. Attention to detail is very important to us. They also receive fewer major comments because they understand the application architecture and select from proven patterns. We also expect senior developers to come up with simpler solutions to complex problems. Managing complexity is key to their work.
People deserve great managers. It's important that people interested in the management track have opportunities to try it out prior to committing themselves. Managers can provide multiple opportunities to Senior and Staff Developers who want to consider moving into an available or upcoming manager role. Examples include delivering an functional group update (FGU), acting as the hiring manager for an intern position, or running a series of demo meetings for an important deliverable. This is also very important for the individual. If someone finds out they don't like management (or don't have the aptitude) after accepting the title, they might feel like they have lost face when they return to their previous position. This is unnecessary and unfortunate, because management is a craft like many others and it's not for everyone.
In order to facilitate this transition, we recommend any person moving from an Individual Contributor role to a Management role work with their manager to create a focused transition plan. The goal is to provide a concentrated look into the responsibilities and challenges of management with the understanding that, if the role is not for them, they can return to the IC track. A good example of how to build such a plan can be found in this article. Another good resource for when you are ready for the critical career path conversation is this 30 mins video.
We strive to set the clearest possible expectations with regard to performance and promotions. Nevertheless, some aspects are qualitative. Examples of attributes that are hard to quantify are communication skills, mentorship ability, accountability, and positive contributions to company culture and the sense of psychological safety on teams. For these attributes we primarily rely on the experience of our managers and the 360 feedback process (especially peer reviews). It's our belief that while a manager provides feedback and opportunities for improvement or development, that it's actually the team that elevates individuals.
The following table outlines the lateral transfer options at any level of the role. Experience factor might differ per individual to determine leveling for each of the positions listed.
|Starting Role||Lateral Options|
|Frontend Engineer||UX Designer|
|UX Designer||Frontend Engineer|
|Support Engineer||Solutions Architect|
|Support Engineer||Implementation Specialist|
Specific backend teams can also be looked at for a lateral transfer. Those teams include Build, Platform, CI/CD, Geo, Monitoring, Gitaly, etc.