Lean

Definition

Lean software development adapts lean manufacturing (efficiency, just-in-time for the end customer) to software: produce only what is required, guided by seven principles and 22 supporting tools.


Core Ideas

The seven principles

  1. Eliminate waste — learn to see waste, then reduce it. Software waste includes partially done work, extra/unused features, waiting, task switching, hand-off delays, extra processes (red tape), and defects.
  2. Amplify learning — keep asking why; understand purpose over literal requirements; short feedback loops and iteration.
  3. Defer commitment — options thinking; decide at the last responsible moment rather than up front.
  4. Deliver fast — pull systems (Kanban), queuing theory, and cost of delay; rapid delivery gives customers less time to change their minds.
  5. Empower the team — self-determination, motivation, leadership, expertise.
  6. Build quality in — perceived vs conceptual integrity, refactoring, and testing (customer tests: functional/acceptance; developer tests: unit/system/integration).
  7. Optimise the whole — ask the “5 whys,” use measurements (e.g. burndown charts), and the Theory of Constraints; avoid local optimizations that hurt the system.

Set-based vs point-based development

Explore several design options under constraints rather than committing early to one solution — this defers commitment and improves the design process.


Relationships