THIS EXPLANATION
THE ROOM
CDA·32 Computing, Data & AI 7 MIN · 8 STATIONS

Choosing an indicator

A Socratic walk-through of choosing an indicator — reasoned out one step at a time, not lectured.

abcdefgh
a

The question we started with

THE QUESTION #

Of everything a service could measure, how do you pick the number that stands for the user's experience?

A service emits four hundred metrics. CPU, memory, garbage collection pauses, connection pool depth, cache hit ratio, thread counts, queue lengths, error counts by a dozen classifications. All are true, and all are cheap to collect.

Now suppose you must pick one number, put it on a page, and let a team's decisions turn on it — whether to ship, whether to stop and fix, whether to wake someone at three in the morning. Which of the four hundred do you choose?

The uncomfortable observation is that almost none of them qualify, and the reason is not that they are inaccurate. It is that the thing you actually care about — whether the service is working for the person using it — was never one of the four hundred in the first place.

b

Reasoning it through

REASONING #

Start by asking what a good indicator is for. Not "what is happening inside the machine" — that is diagnosis, which the four hundred metrics already serve. The indicator's job is different: it must stand in for a judgement no instrument can make directly, namely whether a user is being well served.

Which means an indicator is a proxy, always. So the question becomes: what makes one proxy better than another?

Try a candidate. CPU utilisation at eighty percent — does that tell you whether users are happy? It does not, in either direction. A service can be at ninety percent and serving everyone perfectly, or at five percent and serving nobody because it is deadlocked. The correlation with user experience is weak, and weak in a way that varies — so a threshold that is meaningful this quarter misleads next quarter, after an optimisation changes the relationship.

Now try another. Request success rate, measured at the point where the user's request enters your system. Ask the same question: if this drops, is a user worse off? Yes, essentially by definition — a failed request is a failed interaction. That directness is the first property worth naming. A good indicator sits as close to the user as you can put it, so that a movement in the number means something happened to somebody.

But directness alone is not enough. Consider a service where every request succeeds and every one takes forty seconds. Success rate is a perfect hundred percent. Was the user well served? Obviously not — so a single indicator usually cannot cover a journey, and standard practice is a small set: availability and latency, plus quality or freshness where the service's value depends on them. A search service that returns quickly with degraded results fails in a way neither availability nor latency detects.

Here is the move that organises all of this. Rather than starting from the metrics you have, start from the journeys a user actually takes — log in, search, add to basket, pay — and ask of each: what would it mean for this to have gone badly? The answers become your indicators. That reversal is the practical heart of the discipline, because the four hundred metrics were generated by the system's internal structure while the journeys are generated by the user's purpose, and only the second has any authority over what counts as good.

Two more properties to test each candidate against.

Can you aggregate it honestly? An indicator is usually expressed as a ratio of good events to valid events over a window, because that form is comparable across time and volume in a way a raw count is not. And the percentile matters: a mean latency conceals the tail entirely, which is why practice reaches for something like the 95th or 99th percentile — with the caveat that percentiles do not average across services, so a p99 of p99s is a well-known mistake rather than a shortcut.

And is it actionable? If the number degrades, can this team do something about it? An indicator dominated by a third party you cannot influence produces alarm without agency, and trains people to ignore it. This is a genuine tension, not a rule: the user's experience does include that third party, so the honest resolution is usually to measure it but hold the team accountable only for the part it controls.

One caveat worth stating plainly. Where you measure changes what you see. Server-side measurement misses everything between your edge and the user — DNS, the network, the client's rendering — so it systematically flatters you. Client-side measurement captures the real experience but arrives incomplete, because the most broken sessions are the ones that fail to report. That gap is real, not an artefact to be tuned away.

c

The analogy

THE ANALOGY #
THE FIGURE

Think of a doctor with a patient. Available measurements are almost limitless — every blood marker, every enzyme, every ratio. But the few that carry a consultation are chosen for a reason: they change when the patient's condition changes, they can be compared against a known range, and something can be done in response. A rare enzyme that drifts for a dozen unrelated reasons is measurable and true, and putting it at the centre of care would produce constant alarm and no better outcomes.

WHERE IT BREAKS DOWN

a patient can report how they feel, and the markers are checked against that report, whereas a service's users mostly leave silently — so an indicator has no ground truth to be validated against, and a badly chosen one can look stable for years while people quietly stop coming.

d

Clarifying the model

THE MODEL #

Three refinements.

The first separates two things that are often merged. An indicator is a measurement: the ratio of successful checkout requests to valid checkout requests over five minutes. An objective is a target placed on that measurement: 99.9 percent over thirty days. Choosing the indicator is the hard, judgement-laden part; the target is a business negotiation that only becomes meaningful once the measurement is trustworthy. Picking a target first is how teams end up defending a number that measures the wrong thing.

The second corrects a common instinct: that more indicators means better coverage. A page of thirty cannot be reasoned about during an incident, and it quietly reintroduces the problem you were solving — nobody knows which number decides anything. A handful per critical journey is the working scale, and the discipline is in what you leave off.

The third is about drift. The relationship between an indicator and real user experience is an assumption, not a fact, and deployments erode it. A new client-side cache can hold your server-side success rate steady while users see stale data. So the indicator needs periodic re-validation against complaints and abandonment — evidence from outside the measurement system, the only thing that can tell you your proxy has come loose.

e

A picture of it

THE PICTURE #
Choosing an indicator
Choosing an indicator The four requirements around the top-level one are the tests a candidate must pass, each carrying the risk of failing it. Follow the arrows from the three candidate elements: the two checkout measurements satisfy tests directly, while CPU utilisation only refines the goal -- diagnostic detail about the system, not evidence about the user. That distinction is what disqualifies most of the four hundred metrics. {"generator":"[email protected]","source":"../Socrates/.diagram-cache/_src/choosing-an-indicator.md","sourceIndex":1,"sourceLine":4,"sourceHash":"87632857dca6ff7b9bddefe4d86b49a7e674c85ea8defaee827d7f6387a529b6","diagramType":"requirement","layoutVariant":"source","repairedDuplicateIds":[],"motion":"entrance-with-reduced-motion-fallback","presentation":"editorial","attempt":1,"viewBox":{"x":0,"y":0,"width":2487,"height":828},"qa":{"passed":true,"findings":[]}} satisfies satisfies satisfies refines derives derives derives derives <<Requirement>> good_indicator ID: 1 Text: stands for whether a user was well served Risk: High Verification: Analysis <<Requirement>> close_to_user ID: 1.1 Text: measured at the boundary the user actually touches Risk: High Verification: Inspection <<Requirement>> covers_the_journey ID: 1.2 Text: availability plus latency plus quality where value depends on it Risk: Medium Verification: Analysis <<Requirement>> aggregates_honestly ID: 1.3 Text: a ratio of good events over valid events with a stated percentile Risk: Medium Verification: Test <<Requirement>> actionable ID: 1.4 Text: this team can change the number by changing the system Risk: High Verification: Demonstration <<Element>> checkout_success_ratio Type: candidate <<Element>> checkout_p99_latency Type: candidate <<Element>> cpu_utilisation Type: candidate

How to readThe four requirements around the top-level one are the tests a candidate must pass, each carrying the risk of failing it. Follow the arrows from the three candidate elements: the two checkout measurements satisfy tests directly, while CPU utilisation only refines the goal — diagnostic detail about the system, not evidence about the user. That distinction is what disqualifies most of the four hundred metrics.

f

What became clearer

WHAT CLEARED #
WHAT CLEARED

The four hundred metrics describe the machine; an indicator has to describe the experience, and no amount of internal detail adds up to that. Choosing one is therefore an act of judgement about which proxy you are willing to be held to — closest to the user, honest under aggregation, and something the team can actually move.

g

Where to go next

ONWARD #
  • Turning an indicator into an objective, and who is entitled to set the target.
  • Percentiles and why a p99 of p99s is not a p99.
h

Key terms

TERMS #
TermWhat it means
Service level indicatora quantitative measure of some aspect of the service, usually a ratio of good events to valid events over a window.
Service level objectivea target value or range for an indicator over a stated period.
Critical user journeyan end-to-end sequence a user performs to get value from the service, used as the unit for choosing indicators.

Every term the collection defines is gathered in the glossary.

Nearby on the shelf

4