As a newly promoted engineering manager, I am still learning about the various ways to improve my team’s performance. One of the most important aspects of this task is understanding and measuring the metrics that will drive success. Here are some of the books and articles that I have found to be valuable resources in understanding and implementing engineering team metrics.
Key Metrics
The first book that I found to be extremely helpful is “Managing the Unmanageable: Rules, Tools, and Insights for Managing Software People and Teams” by Mickey W. Mantle and Ron Lichty. The authors provide a detailed overview of various metrics that engineering managers can use to measure and improve their team’s performance. Some of the key metrics that they discuss include:
Another book that I found useful is “The Lean Startup: How Today’s Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses” by Eric Ries. While this book is not specifically about engineering team metrics, it provides valuable insights into how to measure and improve the performance of an entire organization. The author emphasizes the importance of using metrics to measure progress and make data-driven decisions. This approach can help engineering managers to create a culture of continuous improvement and innovation.
Finally, an article that I found to be particularly helpful is “The Metrics You Need to Measure to Improve Engineering Performance” by Johnathan Nightingale. In this article, Nightingale describes the key metrics that engineering managers should focus on to improve their team’s performance. He emphasizes the importance of measuring the right metrics, rather than just measuring everything. Some of the metrics he discusses include:
I am still learning about these metrics and how to implement them effectively. By focusing on these metrics, managers can identify areas for improvement and make data-driven decisions to drive performance.
Practical Examples
Sure, here are some practical examples of how one might track these metrics using common tools:
- Code Churn: Code churn can be tracked using version control systems such as Git. You can use tools like
git diff
to compare the number of lines of code added or deleted between two commits. You can also use code analysis tools like CodeClimate or SonarQube to monitor your code churn and identify hotspots. - Defect Density: Defect density can be tracked using various software testing tools such as Selenium, JUnit, or TestNG. You can also use code analysis tools like CodeClimate or SonarQube to monitor your defect density and identify issues in your code.
- Lead Time: Lead time can be tracked using project management tools such as Trello or Asana. You can create cards for each task or feature and track the time it takes to move them from the “to-do” column to the “done” column.
- Cycle Time: Cycle time can also be tracked using project management tools such as Trello or Asana. You can track the time it takes for a task or feature to move from the “in progress” column to the “done” column.
- Deployment Frequency: Deployment frequency can be tracked using continuous integration tools such as Jenkins, Travis CI, or CircleCI. You can monitor the number of builds and deployments that are performed per day or week.
- Change Failure Rate: Change failure rate can also be tracked using continuous integration tools such as Jenkins, Travis CI, or CircleCI. You can monitor the number of builds and deployments that fail and calculate the percentage of failures.
- Mean Time to Restore: Mean time to restore can be tracked using monitoring and alerting tools such as Datadog or Newrelic. You can set up alerts for critical services or systems and track the time it takes to restore them when they go down.
Currently, I am using Statsd and Graphite to graph metrics, but I am seeking a better solution. I have been considering using Datadog and custom metrics. I am interested in hearing how others are tracking their team’s metrics. Please drop a comment below!