Book by Nicole Forsgren, Jez Humble & Gene Kim.

As Martin Fowler mentions in the forward, the “book focuses on IT delivery, that is, the journey from commit to production, not the entire software development process.”

The book claims that they found 24 capabilities that drive software delivery performance and thereby business improvements. They prefer a capability model over a more traditional “maturity model” because:

  1. You never “arrive” at done; continuous improvment means there’s always more work.
  2. the change is non-linear. You could do all of the CD capabilities and none of the architecture, rather than having to do a bit of each one to hit each ‘rung’ of the maturity ladder.
  3. capability models are outcome based, rather than a checkbox b/c you installed a tool
  4. things change. What is S-tier today is C-tier tomorrow.

Measures of performance

  1. Delivery lead time - The time it takes for work to be implemented, tested and delivered.
    1. Note this doesn’t capture when the feature is designed, including POCs of wholesale new things, (which they call the “fuzzy front end”)
    2. They further restrict their work to code commit -> running in prod
  2. deployment frequency (as a proxy for batch size measurement)
  3. time to restore service
  4. change fail rate (percentage of deploys which required remediation; e.g., lead to service impairment or outage, require a hotfix, a rollback, a fix-forward, or a patch)

Capabilities that drive software delivery performance

All tall order, to be sure, but doable.

continuous delivery capabilities

  1. Version control
  2. Deploy automation
  3. continuous integration
  4. Trunk-based development
  5. Test automation
  6. Test data management
  7. shift left on security
  8. continuous delivery

Architecture capabilities

  1. loosely coupled architecture
  2. empowered teams

product & process capabilities

  1. Gathering customer feedback
  2. value streams
  3. working in small batches (see batch size)
  4. team experimentation

lean management & monitoring capabilities

  1. change approval process
  2. monitoring
  3. proactive notification
  4. WIP limits
  5. visualizing work

cultural capabilities

  1. Westrum orgnizational culture
  2. supporting learning
  3. collaboration among teams
  4. Job satisfaction
  5. transformational leadership

Quotes I liked

A successful measure of performance should have two key characteristics. First, it should focus on a global outcome to ensure teams aren’t pitted against each other. […] Second, our measure should focus on outcomes not output: it shouldn’t reward people for putting in large amounts of busywork that doesn’t actually help achieve organizational goals.