Key Performance Indicators are a common business practice. They are a quantifiable measure of performance for a specific objective. Occasionally, I am asked to create my own KPIs as an individual contributor. I think it is a bit strange, after all I work for the company, you’d think they would tell me what the KPIs are!
Ideally we want to avoid metrics which are created arbitrarily by team members. Hours worked is a great example of this especially in remote work environments. In hourly workplaces employees check in and check out to validate hours worked. I have never seen a software company do anything comparable. Typically, the software company employee is asked to fill in timesheets based on their personal memory with zero accountability. That scenario does not make for a good KPI.
For our KPI metrics we have the following criteria:
- countable
- verifiable by external system
- valuable
- Individually attributable
Countable
KPIs need to be quantifiable. It should be easy to number how many of X someone completed
Verifiable
There should be impartial systems tracking KPI completion. We want to use systems like PagerDuty, JIRA, Github, etc to source our KPI data.
Valuable
KPIs should relate to valuable activities for the company. We want our staff focused on things that are important.
Individually attributable
KPIs should be based on individually attributable work. We want to avoid subjective judgements of how much of task X engineer 1 did vs engineer 2. We also do not want to encourage infighting over who gets credit for which tasks.
Here are a few measurable things we could use for KPIs.
- lines of code
- commits
- bugs fixed
- tests written
- Pull requests opened | accepted / rejected
- Pull request comments
- Pull requests reviewed | approved / rejected
- story tickets completed
- stories estimated
- Projects lead
- Projects delivered / Epics delivered
- architecture documents published
- architecture documents reviewed / comments / approved / rejected
- Documentation pages published
- oncall response time when paged
- pages recieved daytime/off hours
- Prod deployments
- meetings attended
- Pair programming sessions attended
- Junior dev questions answered (answers documented in wiki / private stack overflow)
KPIs are a useful concept for businesses to track their performance. But they are often really ideal for business groups to examine their performance. Individual contributors rarely can claim responsibility for things like increasing the subscription renewal rate from 1% to 10%.
While this list is not exclusive it should include most of the trackable numerical things that software engineers do in their job. Then if you need to come up with some KPIs for yourself you can just pick from this list.
If you can think of some more good metrics for software engineers let us know!