Review: Software Development Metrics by David Nicolette (2015)
Several years ago I picked up the Manning publication Software Development Metrics, written by David Nicolette.
As the title implies, this book provides a high-level reference guide to several metrics commonly used in the context of software development.
The author takes each metric and positions it along four axes:
Axis | Description |
---|---|
Purpose | Some metrics are useful for steering a team through a project while others are useful for improving a pactice. |
Delivery Approach | “When scope, schedule, and budget are all fixed at the outset, the approach is traditional. When one or two of those factors are flexible by design, the approach is adaptive.” - p161 |
Process Model | The process you want to measure likely aligns primarily with one of these four reference process models: linear, iterative, time-boxed, continuous flow |
Delivery Mode | Delivery Mode can be either discrete (a traditional project with a discrete beginning and end) or ongoing (a product or operations stance). |
While these dimensions help characterize when each metric may apply, the author goes on to provide a high-level description of each metric and discuss both some key success indicators and some cautions or anti-patterns where that metric may be used in a way as to have adverse effects on a team or process.
I have collected the metrics from the book into the following table to provide a quick index into the author’s characterization and description of each one.
Metric | Purpose | Page | Approach | Process | Mode |
---|---|---|---|---|---|
Percentage of scope complete | steering | 11 | fixed scope | any | discrete |
Earned value | steering | 21 | traditional | any | discrete |
Budget burn | steering | 24 | any | any | discrete |
Buffer burn rate | steering | 30 | any | any | discrete |
Running tested features | steering | 32 | adaptive | iterative/time-boxed/continuous flow | discrete |
Earned business value | steering | 34 | adaptive | iterative/time-boxed/continuous flow | discrete |
Velocity | steering | 39 | any | time-boxed | discrete |
Cycle time | steering | 47 | any | any | any |
Burn chart | steering | 52 | any | any | discrete |
Throughput | steering | 56 | any | any | any |
Cumulative flow | steering | 59 | any | any | any |
Earned schedule | steering | 62 | n/a | n/a | n/a |
Takt time | steering | 63 | n/a | n/a | n/a |
Velocity | improvement | 68 | any | time-boxed | discrete |
Cycle time | improvement | 71 | any | any | any |
Burn chart | improvement | 75 | any | any | discrete |
Cumulative flow | improvement | 78 | any | any | any |
Process cycle efficiency | improvement | 82 | any | any | any |
Version control history | improvement | 88 | any | any | any |
Niko Niko calendar | improvement | 92 | any | any | any |
Emotional seismogram | improvement | 96 | any | any | any |
Balls in bowls | improvement | 102 | any | any | any |
Personality type profiles | improvement | 105 | any | any | any |
I recommend this book as a good starting point to understand that there are many different aspects of software delivery that you can measure.
The book provides not only a survey of popular software develpment metrics but also some high-level guidance on when you may not want to use each of these metrics.
As any experienced software developer will tell you our work so often comes down to balancing tradeoffs, so this author’s approach to the material will sit well with software engineers.