Measuring Engineering Excellence
In today’s world, data must be a first-class citizen. It drives companies to make smarter, better-informed decisions.
Organisations’ engineering teams continuously create data as a by-product of their day-to-day actions.
Pipelines build, time to tenth merge request, and release frequency are all metrics in establishing the quality of your engineering.
Things have come a long way since measuring commits or counting lines of code!
Utilising this data through building visualisations and insights is proven to help teams improve their performance over time.
What are the benefits?
Being able to measure and quantify engineering metrics can enable organisations:
- Identify which teams need enablement – Code coverage, cyclomatic complexity and time to deploy can be used as metrics to indicate teams which may not follow the best engineering practices.
- Evaluate if processes are effective – Lead time, waste and production defects can all suggest improvements with requirements gathering, acceptance test definition and refinement ceremonies.
- Track trends over time – Allowing for long-term decisions and strategic planning such as cause-effect analysis around events such as measuring the effectiveness of introducing new cloud services.
How Can We Help?
At ClearRoute we have identified a model that can help you and your organisation harness the power of data. To get started, we suggest following a process of defining, ingesting, surface and adapting for specific measurements.
This approach allows you to get feedback early on from development teams and pivot if necessary.
Define
When defining metrics, we suggest defining measurements under three main categories.
Quality -The quality of each change released.
Speed – How fast can change be released into production.
Agility – How easily can you create change.
Below we have outlined some measurements we like to use on our engagements.
Quality | Speed | Agility |
How many peer reviews per pull request | Time to the tenth pull request | Size and complexity of change |
The cyclomatic complexity of change | Release frequency | Size of the repository |
Number of open defects | Change success and failure rate | Lifespan of branch |
Code Coverage | Build time | Cycle lead time |
Ingest
Once decided, you will need to start ingesting the data. Often, we find data will originate from multiple sources and will most likely need transforming to become structured and meaningful.
We have found that cloud-native platforms are ideal when performing these extract, transform and load operations.
Depending on complexity or ambition, you may need to decide between a database as a service or something more heavyweight.
We prefer starting small but occasionally a data lake could be more appropriate.
Surface
Once you have ingested data, we need to present measurements to the teams in meaningful ways.
There are so many approaches here. We suggest picking a tool that the relevant teams are incapable of ignoring and need to see.
If this means a weekly report in the team slack channel or a screen next to the scrum board it’s really up to you!
Once presented, include your new measurements as part of your development practices.
Use it to arm yourselves in making better engineering and business decisions.
Adapt
Following agile practices, it’s important to reflect on our chosen metrics and ensure they are providing value. If value is not being realised, then how can the measurement be improved, or maybe it’s more pragmatic to drop tracking the measurement altogether.
Once you’re satisfied with the results, you are now in a position to start the next definition cycle. Remember, there is not a one size fits all approach to utilising data. It will be an ongoing process that will be tailored to each team and organisation. Although, we hope this article can provide a solid foundation for you and your team.
If you’re interested in how to start measuring your engineering and learning more then feel free to get in contact today.