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?