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
| Symptom | Likely cause | Where to look |
|---|---|---|
| Everything is in progress, little is finished | Too many priorities at once | Work in progress per person |
| Features take months | Work is sliced too large | Size of changes and time to first release |
| Pull requests wait for days | Review bottlenecks | Time from opened to merged |
| Releases are rare and scary | Manual testing, fragile deploys | Deploy frequency and change failure rate |
| Teams wait on each other | Architecture couples the teams | Cross-team dependencies per project |
How to identify the constraints
- Measure lead time, deploy frequency, change failure rate and time to restore
- Trace three recent pieces of work from idea to production and note where they waited
- Interview engineers, product and leadership separately
- 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.