James Hobbs Discuss an engagement

Why is our software delivery slow?

Short answer

Software delivery is usually slow because of how work flows, not how hard people work. The common causes are unclear priorities, work that is too large, slow reviews and testing, fragile releases and hidden dependencies between teams. Diagnose where time is lost before hiring more engineers, because adding people to a slow system often slows it further.

The usual causes

SymptomLikely causeWhere to look
Everything is in progress, little is finishedToo many priorities at onceWork in progress per person
Features take monthsWork is sliced too largeSize of changes and time to first release
Pull requests wait for daysReview bottlenecksTime from opened to merged
Releases are rare and scaryManual testing, fragile deploysDeploy frequency and change failure rate
Teams wait on each otherArchitecture couples the teamsCross-team dependencies per project

How to identify the constraints

  1. Measure lead time, deploy frequency, change failure rate and time to restore
  2. Trace three recent pieces of work from idea to production and note where they waited
  3. Interview engineers, product and leadership separately
  4. Rank the constraints by impact, and fix the biggest one first

Related questions

Will hiring more engineers speed up delivery?

Only if the constraint is capacity. If it is priorities, review, testing or architecture, more people add coordination cost and can make delivery slower.