Productivity metrics for engineering team: what are some good ones?

xkcd: Code Quality

Recently I came to a conclusion that I really want to have all these metrics for our team @ ServiceTitan — basically, as many of good ones as we can collect automatically. I understand this won’t let us eliminate all the human supervision, performance reviews, etc. — but on the other hand, this clearly won’t make any harm — at least if we won’t explicitly indicate that certain metrics that are easy to cheat are absolutely important for promotions or bonuses :)

So this post is more a question rather than post: what productivity metrics would you like to capture for your team, or just for yourself, assuming you can implement a reasonably complex automation for this?

Let me start from some metrics I’d try to capture:

  • The straightforward ones — total # of commits, # of LOCs added / changed / deleted, # of tasks completed in Asana, # of code reviews done / outstanding, etc. Easy to capture, but not that informative. So let’s focus on more interesting code quality productivity metrics.
  • True # of added or changed LOCs: it’s the same added + changed LOCs metric, but we significantly discount renames, duplication, reformatting, and third-party code changes.
  • Unit test debt: # of new LOCs that aren’t covered by unit test code
  • Compiler warning debt, style warning debt: the same, but for compiler warnings and coding style violations
  • Task debt: # of tasks with the deadline set to some date in past
  • Duplication debt: # of added LOCs that are a part of code duplication blocks.
  • Total time spent on code reviews, total number of lines reviewed, average time spent on reviewing 1 line of code
  • # of new uncaught exceptions thrown from your code in production
  • # of bugfixes made in your code — based on commits tagged as bugfix
  • # of unbreaknow issues caused by your code
  • # of defects identified via code reviews
  • How your contributions are shared among UI, backend, automation scripts, etc.
  • What is the distribution of projects and tags for your tasks.

These are some examples. As you see, you can compute these metrics on individual, team, and company basis, and most of these metrics aren’t that complex to implement.

So what do you think:

  • Is introduction of such metrics useful at all? If no — why? If yes — can you explain how would you use it in your company?
  • What are the best tools for collecting / displaying these metics — esp. the one that your team uses?
  • What are some other useful metrics you’d like to track?

I’d be really happy to hear your opinion.

P.S. I asked the same question on Quora, so please feel free to reply there as well.

CTO @ ServiceTitan.com, creator of https://github.com/servicetitan/Stl.Fusion