Getting metrics right is pretty difficult - many try, and usually mess up. The problem?
Metrics require a context, and they also create a context. Without a proper definition of context, metrics are useless - or worse: guide you in the wrong direction.
A Metrics system
Let's say you have a hunch, or a need, that something could - or should - be improved. To make sure that you know that you're actually improving, create a metrics system covering the topic. To build this system, it should cover the organizational system in an adequate - that is, both simple and sufficient, model consisting of:
- Primary metrics (things we want to budge)
- Secondary metrics (things we expect to be related to our primary metric)
- Indirect metrics (things we expect NOT budge)
An example
We start with a problem statement, "Our TTM sucks." Hence, our metrics system would start with the primary metric "time-to-market" as a primary metric. A common sense assumption might be that an improvement to TTM will make people do overtime, or that people become sloppy. Thus, we add the secondary metric "quality" - we would like to observe how a change to TTM affects quality, and we set an indirect metric "overtime" - we set a constraint that people shall not do extra hours.
Systematic improvement
Define
- Define our problem statement: what problem do we currently face?
- Define our primary metric.
- Become clear on our Secondary and Indirect metrics.
Measure
- Get data to determine where these metrics currently are.
- Set an improvement target on our primary metric.
- Predict the effects on secondary metrics
- Set boundaries on indirect metrics.
Analyze
- Understand what's currently going on.
- Understand why we currently see the unwanted state in the primary metric.
- Determine what we'd like to do to budge the primary metric.
Improve
- Make a change.
- Observe changes to all the metrics.
Control
- If our Primary metric budged significantly and all other metrics are where we'd expect them to be, our change was successful.
- If that wasn't the case - we messed up. Backtrack.
- Determine which metrics we'd like to retain in the future to make sure we're not lapsing back.
Metrics are thus always bounded to a specific problem you would like to address.
Pitfalls to avoid
Incomplete metric systems
The most common problem is that we often only define primary metrics, which paves the way for building Cobra Farms, that is: we improve one thing at the expense of another thing, which might create an even bigger problem that we just didn't realize.
Red Herring metrics
Another issue is confusion between outcomes and indicators. This is also often associated with a Cobra Farm, but from another angle - we fail to address the actual problem and pursue the problem of the metric.
For example, if management wants to reduce the amount of reported defects, the easiest change is to deactivate the defect reporting tool. That reduces the amount of defect reports, but doesn't improve quality.
This is also called "Goodhart's Law:" A metric that becomes a target stops being useful.
Vanity metrics
Uncontrolled metrics ("waste")
We often collect data, just in case. And we don't connect any action trigger with it. Let's take a look at, for example, deployment duration: It's a standard metric provided by CI/CD tools, but in many teams, nothing happens when the numbers rocket skyward. There are no boundaries, no controls, and no actions related to the metric. If we don't use the data available to act upon it, the data might as well not exist.
Bad data
Category errors
Metrics serve a purpose, and they are defined in a context. To use the same metrics in a different context leads to absurd conclusions. For example, if team A is doing maintenance work and team B is doing new product development: team A will find it much easier to predict scope and workload, but to say that B should learn from A would be a category error.
It is a great article that covers the purpose of metrics. it shows your deeper understanding of agile development. This is my first time reading word "Cobra Farms" which is spot on. Right now i am working in an organization where management is pinning down on sprint burndown. on the first glance it seems reasonable because more than 50% roll over from sprint to sprint blaming the monolith was a very common issue. however once we start enforcing it, we see lots of decrease in morale, increas in resentment, blame game etc even though i am trying to stand ground and nudge the team into the direction of what they can do and how they can improve, they are not buying it. as a scrum master i see the only way i can build trust the team is to join with them and blame management. i didn't do that in time and i don't have that much trust in this team.
ReplyDelete