Expand description
§Maturity Model for Engineering Metrics Programs
A metrics program’s overall maturity is scored across five dimensions: governance, instrumentation, outcome balance, cultural trust, and continuous improvement, each independently on a 1–5 level scale (Level 1, Initiate, through Level 5, Orchestrate). The chapter’s central recommendation is to take the minimum across dimensions as the honest overall score, resisting the temptation to average them into a more flattering composite.
§Formula
Honest overall score = minimum(governance, instrumentation, outcome balance,
cultural trust, continuous improvement)
(Average is computed alongside it only to make the gap visible.)§Why it matters
A programme with excellent instrumentation (Level 4) but weak cultural trust (Level 1) is not, in any meaningful sense, a Level 2 or 3 programme; the weak dimension actively undermines the value of the strong ones, since untrustworthy data corrupted by fear-driven gaming is not rescued by having been collected with excellent instrumentation. Reporting the minimum, even though it produces a less flattering overall picture than an average would, is what keeps the assessment honest.
§Example
use software_engineering::maturity_model::{
MaturityDimension, minimum_maturity_level, average_maturity_level,
};
// Instrumentation through continuous improvement score well, but
// cultural trust lags badly.
let scored: [(MaturityDimension, u8); 5] = [
(MaturityDimension::Governance, 4),
(MaturityDimension::Instrumentation, 4),
(MaturityDimension::OutcomeBalance, 4),
(MaturityDimension::CulturalTrust, 1),
(MaturityDimension::ContinuousImprovement, 4),
];
let scores: Vec<u8> = scored.iter().map(|(_, level)| *level).collect();
let honest_score = minimum_maturity_level(&scores).unwrap();
let flattering_average = average_maturity_level(&scores).unwrap();
assert_eq!(honest_score, 1);
assert!((flattering_average - 3.4).abs() < 1e-9);
assert!((flattering_average as f64) > (honest_score as f64));§Pitfalls
- Averaging the five dimension scores into a single, more flattering composite, instead of reporting the minimum — hides exactly the weak dimension that undermines the rest.
- Assessing only aspirationally, based on stated policy rather than concrete evidence for each dimension.
- Reassessing only after a crisis forces the question reactively, rather than on a fixed, regular cadence.
- Treating a low score as a verdict to feel bad about, rather than the diagnostic starting point for a targeted investment plan.
§Sources
- Chapter 8.4, Maturity model for engineering metrics programs.
- Capability Maturity Model Integration (CMMI), Software Engineering Institute (structural inspiration).
Topic doc: software-engineering-metrics/locales/en-001/chapters/08-04-maturity-model-for-engineering-metrics-programs.md
Enums§
- Maturity
Dimension - One of the five maturity-model dimensions, in the chapter’s own order.
Functions§
- average_
maturity_ level - The arithmetic mean across a set of per-dimension maturity levels — the
more flattering composite the chapter explicitly warns against using as
the overall score. Kept here so callers can compute it alongside
minimum_maturity_leveland see the gap between the two. - minimum_
maturity_ level - The minimum score across a set of per-dimension maturity levels — the chapter’s recommended honest overall score.