Split by Capability
Decompose around user-visible capabilities before splitting work into frontend, backend, and database layers.
DecomposeOpen the decomposition tool →
The question
Which independent capabilities make up the outcome?
Do this
- Use verbs and user outcomes for top-level pieces.
- Keep all technical layers inside each capability.
- Split a capability again only when its child can be tested independently.
Example
- A store becomes browse catalog, manage basket, place order, take payment, and confirm order—not “frontend, API, database.”
Ask next
- ?Can this piece deliver an observable outcome?
- ?Does it hide several workflows?
- ?Did I split by organisation instead of behaviour?