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

Development Department Performance Indicators

Executive Summary

KPI Maturity Health Reason(s)
Development Hiring Actual vs Plan Level 3 of 3 Okay
  • Development is curently seeing 265 by April 1st. We were slightly ahead in February of plan, but we have seen hiring slow in the last two weeks.
  • Health: Monitor health closely
Sales Renewal CSAT Level 2 of 3 Okay
  • Currently tracking at above 90% for the financial quarter.
Development Non-Headcount Plan vs Actuals Level 2 of 3 Okay
  • We are spending less than planned
Development Average Location Factor Level 3 of 3 Attention
  • We are above our target.
  • We need to set the target location factors on our vacancies and make sure recruiting is targeting the right areas of the globe on a per role basis.
Development Recruiting Average Top-of-Funnel Location Factor Level 2 of 3 Unknown
  • We need to get this as a chart in periscope.
  • We have set the target location factors on our vacancies and make sure recruiting is targeting the right areas of the globe on a per role basis.
Development Handbook Update Frequency Level 3 of 3 Attention
  • Needs attention. But my sense is we are not doing enough. For instance, we have not been able to fully update the handbook after the development department re-org (dev backend, and ops backend are still present. Although many of the new teams do have their own pages already)
  • We need to continue to push for more frequent handbook updates.
  • Our goal is set at 90 Handbook MRs per month.
MR Rate Level 3 of 3 Okay
  • We hit 11.7 in January and 10.4 in February. February being lower than January because of 2 less working days.
  • We need to continue to push for iterative behaviors and incremental MRs that are smaller and faster
Mean time to merge (MTTM) Level 3 of 3 Attention
  • We lowered our MTTM in February to below 5, but still have additional work to do.
  • We are focused on increasing the maintainer pool to have additional reviewers in place.
  • Our new goal is set at 4.21 days

Key Performance Indicators

Development Hiring Actual vs Plan

This is a subset of an existing KPI. Please see the definition for the parent KPI.

Employees are in the division "Engineering" and department is "development".

Target: 270 by April 1, 2020

Chart (Sisense↗)

Health: Okay

Maturity: Level 3 of 3

Sales Renewal CSAT

Can we improve the sales renewal process to meet a 90% satisfaction rating from internal sales teams?

Target: 90% by May 1, 2020

URL(s)

Health: Okay

Maturity: Level 2 of 3

Development Non-Headcount Plan vs Actuals

This is a subset of an existing KPI. Please see the definition for the parent KPI.

We need to spend our investors' money wisely. We also need to run a responsible business to be successful, and to one day go on the public market.

Target: Unknown until FY21 planning process

URL(s)

Health: Okay

Maturity: Level 2 of 3

Development Average Location Factor

We remain efficient financially if we are hiring globally, working asynchronously, and hiring great people in low-cost regions where we pay market rates. We track an average location factor by function and department so managers can make tradeoffs and hire in an expensive region when they really need specific talent unavailable elsewhere, and offset it with great people who happen to be in low cost areas.

Target: .58 average location factor

Chart (Sisense↗)

Health: Attention

Maturity: Level 3 of 3

Development Recruiting Average Top-of-Funnel Location Factor

We need to be proactive in measuring our location factor, starting with candidates who are at the top of the recruiting funnel.

Target: 0.58

URL(s)

Health: Unknown

Maturity: Level 2 of 3

Development Handbook Update Frequency

This is a subset of an existing KPI. Please see the definition for the parent KPI.

The handbook is essential to working remote successfully, to keeping up our transparency, and to recruiting successfully. Our processes are constantly evolving and we need a way to make sure the handbook is being updated at a regular cadence. This data is retrieved by querying the API with a python script for merge requests that have files matching `/source/handbook/engineering/development/**` over time.

Target: 90

Chart (Sisense↗)

Health: Attention

Maturity: Level 3 of 3

MR Rate

MR Rate (previously known as Average MRs per Development Engineer per month) is a monthly evaluation of how MRs on average an author performs. It’s important because it measures productivity. We include external contributions from the wider community. We want to be efficient at accepting community contributions, as a result, the data is analyzed on a per category/group basis and never per GitLab team or team members. The Senior Director of Development is the DRI on what projects are included.

Target: 10 MRs per Development Engineer per Month

Chart (Sisense↗)

Health: Okay

Maturity: Level 3 of 3

Mean time to merge (MTTM)

To be aligned with CycleTime from Development. Monthly mean time to merge MRs, it tells us on average how long it takes from submitting code to being merged. The Senior Director of Development is the DRI on what projects are included.

Target: On average under 14 days

Chart (Sisense↗)

Health: Attention

Maturity: Level 3 of 3

Regular Performance Indicators

Development Discretionary Bonus Rate

Discretionary bonuses offer a highly motivating way to reward individual GitLab team members who really shine as they live our values. Our goal is to award discretionary bonuses to 10% of GitLabbers in the Development department every month.

Target: 10%

URL(s)

Health: Unknown

Maturity: Level 2 of 3

Throughput

Throughput shows the number of Merge Requests (MRs) on a month by month basis. It’s important because it shows the overall development teams velocity and helps ensure that we are continually making our product better. The Senior Director of Development is the DRI on what projects are included. Please note that not all MRs in GitLab will count towards Throughput.

Target: 20% increase quarter of quarter

URL(s)

Chart (Sisense↗)

Health: Okay

Maturity: Level 3 of 3

CVE issue to update

Measurement of time CVE being issued to our product being updated.

Target: 7 days (until further data is provided)

URL(s)

Chart (Sisense↗)

Health: Okay

Maturity: Level 3 of 3

Response to Community SLO

Measurement of time from Community member MR proposed till GitLab response. It’s important because it shows our commitment to community and engagement.

Target: No Target Set

URL(s)

Health: Unknown

Maturity: Level 2 of 3

Backend Unit Test Coverage

BE Unit Test coverage shows the unit test coverage of our code base. As an example 95% represents that 95% of the LOC in our BE software is unit tested. It’s important as it shows how much code is tested early in the development process.

Target: 95%

URL(s)

Health: Okay

Maturity: Level 2 of 3

Frontend Unit Test Coverage

FE Unit Test coverage shows the unit test coverage of our code base. As an example 95% represents that 95% of the LOC in our FE software is unit tested. It’s important as it shows how much code is tested early in the development process. We are currently converting from Karma to Jest organically, so the performance indicator needs to show total coverage of the combined coverage.

Target: 75%

URL(s)

Health: Attention

Maturity: Level 2 of 3

Commit to Merge

We want to measure the number of MRs that were put into a release at the beginning of the development phase vs. the number of MRs that shipped at the end of the release cycle. The target is currently not defined, but we think it should be above 80%.

Health: Unknown

Maturity: Level 1 of 3

Other PI Pages

Legends

Maturity

Level Meaning
Level 3 of 3 Has a description, target, and Sisense embed (if public) or URL (or not).
Level 2 of 3 Missing one of: description, target, or Sisense embed (if public) or URL (or not).
Level 1 of 3 Missing two of: description, target, or Sisense embed (if public) or URL (or not).
Level 0 of 3 Missing a description, a target, and Sisense embed (if public) or URL (or not).

Health

Level Meaning
Okay The KPI is at an acceptable level compared to the threshold
Attention This is a blip, or we’re going to watch it, or we just need to enact a proven intervention
Problem We'll prioritize our efforts here
Unknown Unknown

How to work with pages like this

Data

The heart of pages like this is a data file called /data/performance_indicators.yml which is in YAML format. Almost everything you need to do will involve edits to this file. Here are some tips:

Two flags to note:

Pages

Pages like /handbook/engineering/performance-indicators/ are rendered by and ERB template.

These ERB templates call the helper function performance_indicators() that is defined in /helpers/custom_helpers.rb. This helper function calls in several partial templates to do it's work.

This function takes a required argument named org in string format that limits the scope of the page to a portion of the data file. Possible valid values for this org argument are listed in the org property of each element in the array in /data/performance_indicators.yml.