There are three important components of developing one's career:
Team members who are (or want to be) on track for promotion should be engaged in a career coaching conversation with their manager. Some basic information about this process can be found in the People Ops handbook. Specific coaching plan templates are listed here to help start the conversation:
We want to build these documents around the career matrix for Engineering. Since this career matrix is still being developed, these documents are currently based on the job family requirements.
The first career matrix being developed is for Individual Contributors in Engineering.
When a team member is deemed ready for promotion, their manager should follow the promotion process outlined by People Ops.
Remember that the coaching process helps team members understand what they need to do in order to prepare for a more senior position on the team. The promotion process documents what an engineer has already done to deserve a more senior position on the team. The two processes are related, but they are not substitutes for each other.
Most career opportunities involve stepping into a position of informal or formal leadership. As such, the initiative of the individual is a necessary component, as well as a qualification. However, for the sake of inclusion, we do ask that managers periodically bring up the possibilities for advancement so that individuals know the avenues available to them and receive encouragement to pursue them. Managers and individual contributors should strive to have a career development conversation at least once a quarter.
The GitLab Engineering career track offers a full path of opportunity for individuals to contribute. The availability of senior engineering roles starting at Staff Engineer will be governed by the IC Gearing Ratios (TBD). There are scenarios where a position must become available before a promotion can occur. On the engineering track, there must be a position of need to be promoted from a Senior Engineer to either a Staff Engineer or an Engineering Manager, depending on your chosen path. Progression beyond these types of roles (e.g. Senior Engineer) are not guaranteed by time in role. There must be a justifiable need for the role and the candidate must have some level of demonstrated ability to thrive in these roles to be considered for the new position.
These next level opportunities are not guaranteed to be available and should not be viewed as career limiting. Again, using the Senior Engineering role as an example, is a critical role within GitLab. It is an accomplishment to thrive at the Senior level and should be celebrated as such.
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. Learn more about what it means to be a Staff-level engineer at GitLab in an Engineering IC Leadership page.
It's important that team members interested in the people management track have opportunities to try it out prior to committing themselves. Managers can provide multiple opportunities to Senior and Staff Engineers who want to consider moving into an available or upcoming manager role. Examples include hosting a Group Conversation, acting as the hiring manager for an intern position, or running a series of demo meetings for an important deliverable. These occasions for trying out management functions are useful and can provide good coaching opportunities for the individual looking to move to management. Some engineers may find through these experiences that they are better suited to remain on the technical path, and this gives them the ability to decide before investing a significant amount of time in the transition.
In order to facilitate the transition, we recommend any person moving from an Individual Contributor role to an Engineering Manager 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 people 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 create temporary management positions when there is organizational need, and we imprint these in our company org chart. These may be filled by someone who is transitioning into the role (Interim Manager), experimenting with the role as they work on determining their career path (Interim Manager or Acting Manager) or, someone who is just filling in while we hire and who is not interested in pursuing an Engineering Manager role long term (Acting Manager). This difference should be made explicit with the individual and team members before the temporary role is created. See the types of temporary roles for more information on this distinction.
When someone fills a temporary role they are providing a service to the company, and perhaps getting a valuable career development opportunity for themself; so, poor performance against those duties would not result in termination. At worst, the person would return to their prior responsibilities. That does not mean, however, that an individual is immune to termination of their employment, for example if they commit a breach of their prior responsibilities or of the company's Code of Business Conduct & Ethics while in a temporary position.
Once you have been designated as filling a temporary management role, the current manager should update all reports to in BambooHR with a job information change request and create an access level request to grant interim manager access in BambooHR. Note that direct reports in BambooHR generally are not moved to Acting managers.
Those interested in these roles must:
Process for selection:
An Acting Manager is someone who occupies a role temporarily and will move back to their original role after a set amount of time or other conditions. An Acting Manager may be experimenting with the role as a part of determining their career development path, or may be filling in for a vacant role while we hire.
When a team member is pursuing a people manager role (Level Manager+) long term we apply an interim period in the following instances:
|Current level||Desired level||Previous Management experience (6+ months)||Application of interim period|
|Manager||Senior Manager||No (managing managers)||Yes|
|Yes (managing managers)||No|
|Manager/Sr Manager||Director||No (managing managers)||Yes|
|Yes (managing managers)||No|
previous management experience can be management experience in a previous organization, or management experience at GitLab. "Acting" role management experience at GitLab can also count towards the 6 month threshold.
For Director+ positions no interim is required.
Exceptions can also be reviewed on a case-by-case basis depending on readiness for team members who have served in acting roles, and who have passed the interview process for a permanent role.
For details on logistics please refer to the promotions and transfers page.
Interim Manager positions are for individuals who are pursuing the role long term: the requirement is that, before moving into the role full time, they will make at least one successful hire. The official promotion will not occur before 30 days after that person's hire, so that we can assess whether the hire was truly successful. If the new hire's success is indeterminate at the 30-day mark, then we will continue to review until a firm decision is made. If the new hire is not successful, that does not mean that the Interim Manager cannot eventually move into the full-time role.
In some cases, or for Director level interim roles, it may not be practical or headcount planning might not allow for the Interim Manager to make a new hire. In this case the Interim Manager and the interim manager's manager should agree on success criteria based on the requirements of the role. Examples of other success criteria are (multiselect):
Once the Interim Manager's first new hire has been at GitLab for 30 days, or other agreed success criteria has been met, the Interim Manager can submit a promotion document to their manager. The goal of this process is to have a determination made by the interim manager's manager about the promotion to a permanent manager role after the agreed success criteria has been satisfied. Generally we aim to have the interim period not to exceed 4 months before turning into a fulltime role.
Typically, an apprenticeship provides an individual with an overview of a position or field over a short period of time. It’s surface-level learning geared towards team members who are still exploring their interests and deciding what options they’d like to pursue. If the field of interest, it's subject matter experts and the department they want to learn more about can support this effort, then this offers a good opportunity for an internship. For more information on the process please review this handbook section on Internship for Learning.
The apprentice agrees to:
In return, the department with which they are interning agrees to:
By default, apprenticeships last for 6 months. At the end of 6 months, both the intern and the department will determine whether it makes sense to extend the timeframe further.
If you wish to apprentice with an Engineering team, start by speaking with your manager.
Important: The Apprenticeship for Learning program should differ from any situations where there is actual temporary or permanent realignment/redeployment/secondment as a result of changing business needs. If you are unsure whether your situation is aligned with the Apprenticeship for learning program or falls into a resources realignment, please discuss with your aligned People Business Partner.
An internship is a position meant for someone who has decided on a career path and is looking to gain in-depth experience in a specific field. At GitLab this is the entry level of roles in Engineering.
In May 2020 we launched an internship pilot program as part of a Working Group. The pilot internship program has proven to be a great mechanism for hiring as well as offered great opportunities for our team members to gain mentoring experience. Due to the program's success currently we have decided to roll out internships on a continuous basis in Engineering.
With the roll out of the intern level in Engineering we have decided to deprecate what previously has been called the junior level (former entry level). Going forward all teams within Engineering can open an intern requisition when there's an organizational need. All information on Internships in Engineering can be found on this page.
Note that we have a specific section for Senior Engineer 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 Engineer.
The Senior Engineer role is a critical role where we need the most contributions. It should also be considered a destination role. It is not a given that you will naturally progress into the next role, whether it is Staff or Management. There are different needs and expectations for the next role. Individual growth and progression is supported and encouraged at GitLab, however progression beyond the Senior Engineering role is gated on availability and need. There may not be a need for another Staff or Management position.
Senior engineers 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 engineers to come up with simpler solutions to complex problems. Managing complexity is key to their work. Staff and Distinguished positions extend the Senior Engineer role.
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.
People Operations tracks the Promotion Rate for the company overall and each division separately. The target is 12% annually. This metric is treated as an organizational health indicator for the quality of decisioning making our leaders are employing, and for the fairness in our process. In FY21 Engineering was exactly on its target of 12%. So we would not currently consider blocking any individual promotion based on the overall rate. If that were to change, and Engineering became an outlier, we would reevaluate. Here is the company-wide process.
The following table outlines some of the possible lateral transfer options at any level of the role, but don't feel limited by this table. Compa Ratio might differ per individual to determine leveling for each of the positions listed.
|Starting Role||Lateral Options|
|Frontend Engineer||Product Designer|
|Product Designer||Frontend Engineer|
|Backend Engineer||Production Engineer|
|Production Engineer||Backend Engineer|
|Backend Engineer||Support Engineer|
|Support Engineer||Backend Engineer|
|Support Engineer||Solutions Architect|
|Support Engineer||Technical Account Manager|
|Support Engineer||Implementation Specialist|
|Automation Engineer||Backend Engineer|
|Backend Engineer||Automation Engineer|
Lateral transfers among backend teams are also an option. Those teams include Distribution, Create, Verify, Release, Geo, Monitoring, Gitaly, etc.
A team member may be "on loan" to another team for various reasons. This is less formal and handled differently than interim roles. When this occurs it is recommended to:
Team members who were on loan to another team documented these best practices in a retrospective.
Engineering includes groups of team members organized in different structures towards completing a mission. We’ll accommodate this diversity of structure by referring to these as "workgroups". A workgroup is a collection of team members with a shared mission and typically arranged according to a product group, team, or other problem-solving unit.
We use gearing ratios to govern the amount of Staff, Principal, Distinguished, and Fellow level positions (collectively referred to as "Staff+") in Engineering because the work needed to be done at these levels is proportional to the mission of their workgroup. This is similar to how Manager, Senior Manager, Director and VP level positions are proportional to the organization's size and our recommended span-of-control limits (bullet #5).
It's obvious why a manager cannot manage too many people effectively, or why they would be unable to have an impact if they managed too few people (see chapter three in Andy Grove's High Output Management for more detail on the concept of "managerial leverage"). It's less obvious how to determine the amount of Staff+ work that needs to be done, because it partially involves solving our hardest technical problems, which are unpredictable. But other important Staff+ work is proportional to the organization, and so it's easier to characterize. So we call it "technical leverage" to mirror "managerial leverage".
By default, each workgroup is limited to 1 Staff+ Engineer.
Some workgroups within engineering may directly align to staffing of Staff+ roles according to team organization. Each team has a single Staff Engineer, just as they have a single Manager; with the two working together to lead the team in their mission.
Distinct from the general team workgroup noted above, some workgroups based on their mission, may require multiple Staff+ team members. The need for multiple Staff+ team members in a workgroup should be examined and explained through the four archetypes.
As teams grow in both scope and size it is important to determine whether they should expand the number of Staff+ roles, or if the growth is reason to split out to another workgroup.
It is intended that gearing ratios not become overly complicated. In support of this, there is a default gearing ratio which can be assumed by all workgroups. As long as this default supports the workgroup mission, nothing further is required.
These gearing ratios govern the number of Staff+ positions available.
The default one Staff+ Engineer per workgroup may not enable the mission for every workgroup. In these cases an exception to the default gearing ratio is to be documented.
The method for documenting and adopting an exception consists of:
Since collective exceptions within a department will at some point impact overall funded headcount, exceptions require the approval of department heads. Exceptions to gearing ratios may be approved without the specific funding of new headcount (agreement that more staff is needed, but not currently budgeted).
All exceptions should be documented in a handbook page local to the workgroup or in an issue/epic, and linked to the table below. This process is established as of March 2021 and may not reflect all existing workgroup situations. At any point when additional exceptions are required, just start an MR to add them per the steps noted above.
|Scalability Team||Infrastructure||2 Staff+ : Team||Infrastructure Career Page|
|Delivery Team||Infrastructure||3 Staff+ : Team||Infrastructure Career Page|
|Staff Security Engineer Application Security||Security||2 : Team||Issue|
|Staff Security Engineer Red Team||Security||2 : Team||Issue|
|Staff Security Engineer Security Research||Security||2 : Team||Issue|
|Engineering Data Analyst||Quality||2 : Team||Hyperlink TBD|
|Distribution Team||Development||2 Staff+ : Team||Distribution Team Page|
|Geo Team||Development||2 Staff+ : Team||Geo Team Page|
|Vulnerability Research||Development||2 Staff+ : Team||Issue|
|Create:Ecosystem Team||Development||3 Staff+ : Team||Ecosystem Team Page|
|Create:Editor Team||Development||2 Staff+ : Team||Editor Team Page|
|Sharding Team||Development||4 Staff+ : Team||Sharding Team Page|
It is not the intent of these gearing ratios to limit individual opportunity for advancement although it is acknowledged that at full staff capacity this situation could occur. In March 2021 a point-in-time review of all engineering teams found that of 64 potential Staff roles, more than 40 were currently unfilled (from a gearing limit perspective). This analysis is available in this sheet (internal only) 2021 March - Staff Current Roles.
In addition to the current set of opportunities, our Engineering organization is continuing to grow and with each new team comes the potential for another Staff role.
Finally, in conjunction with the IC Gearing Working Group effort, the Principal Engineer role has been established to the Engineering Career Path. This new role offers further career advancement opportunities to existing Staff Engineers and in turn opens future opportunities for Senior Engineers.
A number of alternative approaches were considered as a solution for this gearing. The IC Gearing Working Group resulted in this model for the following reasons:
The approach to gearing ratios was established in early 2021 and much additional context can also be referenced from the IC Gearing Working Group.