Gitlab hero border pattern left svg Gitlab hero border pattern right svg

Job Families

Job Families

They are organized by function in directories in the www-gitlab-com repo.

Confused about when you need to create a new job family and when you should add a new role to an existing one?


For each job at GitLab, there is job descriptions as the single source of truth for the expectations of that role. A job has the URL /job-families/department/title and contains the following paragraphs:

The position description will be used both for the Vacancy Creation Process, as well as serving as the requirements that team members and managers alike use in conversations around career development and performance management.

The job family does not contain

  1. Locations (EMEA, Americas, APEC), these are part of the headline
  2. Expertises, since these are free form.
  3. Anything that makes it look like a vacancy like "exciting opportunity" or "we're hiring for".

Leads and Managers

If you're working with a team lead or management job family, you should be aware of how GitLab defines these terms. Typically, team leads are individuals who oversee a specific project or area of expertise, but they do not manage people, which means they are not directly responsible for hiring, promoting, performance management, or termination of employees.

Manager job families are those responsible for directly managing other GitLab team-members. They do hire, promote, and terminate employees, and performance management is one of their key functions. Nomenclature to represent someone is a manager of people can be clarified with "Manager, Benchmark" (e.g., Manager, Marketing) The same holds true for director. Nomenclature to represent when someone manages a job function, and might not have people management responsibilites, can be clarified with "Benchmark Manager" (e.g., Marketing Manager)

New Job Family Creation

If a hiring manager is creating a new job family within the organization, the hiring manager will need to create the job family. If this is a job family that already exists (for example, Gitaly Developer would use the Developer position description), update the current position description to stay DRY. If the compensation for the job family is the same as one already in job_families.yml, you should just update the specialty, do not create a new job family.

Here is a brief walkthrough of this process. If you use these slides please remember that the HANDBOOK is the most up to date and the slides and/or videos may be dated.

  1. Create the relevant page in /job-families/[department]/[name-of-job-family], being sure to use only lower case in naming your directory if it doesn't already exist, and add it to the correct department subdirectory.
  2. The file type should be
  3. Add each paragraph to the position description, for an example see the backend engineer job family. All job families must have Requirements, Responsibilites, Performance Indicators, Job Grades, and a Hiring Process. There is a template below that may be useful.
  4. Assign the Merge Request to your manager, executive leadership, and finally the CEO to merge (also at-mention CEO in the #job-family chat channel). Also, cc @gl-compensation for a compensation review.
  5. Once the merge request has been merged, the People Ops Analyst will reach out to the HR Business Partner who supports the function to understand the job description and job family requirements in determining the appropriate compensation benchmark.
  6. Compensation Team: Compensation Benchmark data will be sourced from Comptryx, AdvancedHR, LinkedIn, Glassdoor, Paysa, Payscale and when applicable Cybercoders to determine the 50th percentile for the job family. For benchmarking we are only looking at the intermediate level in San Francisco.
  7. Compensation Team: In Comptryx, look at each position description by hovering over the title to make sure it aligns to our position description. For a history of mapping, take a look at the "Comptryx Benchmarks SF" tab in the "Comp Data Analysis and Modeling "Google sheet.
  8. Compensation Team: The level in Comptryx that aligns with intermediate is "proficiency,"except for in special cases (see the history of mapping for those cases).
  9. Compensation Team: Create a google document that includes the compensation data and determine the median for the benchmark, share the document with the CEO, CPO and CFO. Document should be titled Job title Comp Benchmark.
  10. Compensation Team: Create a merge request to add the benchmarks to the job families file in GitLab and assign it to the CEO. In the merge request refer to the job family title in the Google document that shows the compensation data sources and the proposed benchmark add the CPO, CFO and CEO to the MR for benchmark approval. Slack the CEO the MR for the new benchmark for review and approval. The CEO will review the document and approvals in the MR and then will make the final decision to merge the new benchmark. Once the CEO approves the MR will add the benchmark to the job_families.yml file which will automatically cause the Compensation Calculator to show at the bottom of the position description page.
  11. Compensation Team: Also add the benchmark to the "SF Benchmark" tab in the "Comp Data Analysis and Modeling" Google sheet, and document how you mapped this data in "Comptryx Benchmarks SF" tab if Comptryx was used.

Why Job Families Have Performance Indicators

All job families should have performance indicators. Those performance indicators should tell you whether or not you’re doing your job well or correctly. For example, our Sr. Director, Investor Relations role has performance indicators which compare how we’re being described by analysts to how we describe ourself.

Performance indicators are important because people want to know that they’re contributing. Applicants want to know what success looks like in a role, and team members what to know how they're being measured for success.

Company, functional, or department KPIs are too generic and, thus, not useful as job family performance indicators. Time sensitive PIs, like OKRs or weekly goals, are also not useful. Performance indicators should be specific to the role and not dependent on anyone else's performance. Job Families should have three to five PIs.

Job Family Creation Using Web Version of GitLab

Things You Will Need

Getting to the Right Place

Creating the New File

Title the File

Body of the File

Committing Changes

Assigning and Submitting Merge Request

Once the Merge Request is Submitted

Help! My pipeline is failing.

In October 2019, we added a CI Job that checks that job families have Requirements, Responsibilities, Performance Indicators, Job Grades, and a Hiring Process, as per the below template.

Under requirements, every role must have Ability to use GitLab. This will also fail the pipeline.

Template for New Job Family

layout: job_family_page
title: {Insert Title of Job Here}

{Insert brief description of the role here.}

## Job Grade
The {role name} is a [grade #](/handbook/people-group/global-compensation/#gitlab-job-grades).

## Responsibilities
* {add a bulleted list of responsibilities here}

## Requirements
* Ability to use GitLab
* {add a bulleted list of requirements here}

## Levels
### {Name of Level - i.e. Junior/Senior/Manager}
#### {Level} Responsibilities
* {add level responsibilities here}

#### {Level} Requirements
* {add level requirements here}

## Specialties
### {Name of Specialty - i.e. Security, Monitor, Create, etc.}
{Insert brief description of the specialty here.}

#### {Specialty} Requirements
* {add a bulleted list of requirements for this specialty here}

## Performance Indicators
* {add at least one KPI that this role will be the DRI for}

## Hiring Process
Candidates for this position can expect the hiring process to follow the order below. Please keep in mind that candidates can be declined from the position at any stage of the process. To learn more about someone who may be conducting the interview, find their job title on our [team page](/company/team/).
* Qualified candidates will be invited to schedule a 30 minute [screening call](/handbook/hiring/interviewing/#screening-call) with one of our Global Recruiters.
{Insert hiring process steps here.}

Additional details about our process can be found on our [hiring page](/handbook/hiring).

Helpful Tips

Creating a New Job Family from Scratch

Updating a Job Family Title