Lean software development

By Allen Jay Bercero

Lean software development takes the ideas of Lean manufacturing (the Toyota Production System) and applies them to building software: deliver the most value with the least waste, and improve the whole flow rather than any one part. It’s less a step-by-step framework than a mindset of seven principles, popularized by Mary and Tom Poppendieck in their 2003 book.

Where Scrum gives you roles and events, Lean gives you a lens: look at the end-to-end path from idea to delivered value, find what slows it down or adds no value, and remove it. That lens is where Kanban came from, and it underlies much of “flow-based” agile.

Also known as

Lean · Lean development · (the factory origin) the Toyota Production System applied to software

Don't confuse with

  • Lean software development vs Lean Startup. Lean Startup (Eric Ries) is a product/business method: build-measure-learn, validated learning, and a minimum viable product to find what customers want (it’s where the Lean canvas comes from). Lean software development is about the delivery process: applying factory-floor lean thinking to how software gets built. Same “lean” lineage, different target.
  • Lean vs Agile. Lean is a set of principles that predates and feeds agile; agile is the broader software movement. In practice Lean is treated as one of the agile methodologies, and it pairs naturally with Kanban.

The seven principles

Lean software development is usually stated as seven principles:

  1. Eliminate waste: remove anything that doesn’t add value for the customer (see the wastes below).
  2. Amplify learning: software is a learning process; use short cycles and fast feedback.
  3. Decide as late as possible: keep options open; commit when you have the most information.
  4. Deliver as fast as possible: short cycle times expose problems and shorten feedback.
  5. Empower the team: let the people doing the work make the decisions; respect their expertise.
  6. Build integrity in: quality is built in continuously, not tested in at the end.
  7. Optimize the whole: improve the entire value stream, not one team or stage, so local wins don’t create global bottlenecks.

The seven wastes

Lean manufacturing targets muda (waste). The Poppendiecks mapped Toyota’s seven wastes onto software:

Software wasteWhat it means
Partially done workCode written but not integrated, tested, or shipped; it ages and hides risk.
Extra featuresBuilding what nobody asked for (gold-plating).
RelearningRediscovering knowledge the team already had.
HandoffsPassing work between people loses context each time.
Delays / waitingWork sitting idle in a queue.
Task switchingSplitting attention across many things finishes none of them.
DefectsBugs, and the rework they cause.

In plain English

Look at the whole path from “idea” to “in the user’s hands,” find every place work sits, gets redone, or gets built that nobody needed, and cut it. Trust the team to do that, and keep quality baked in the whole way.

Where it sits

Lean is a mindset more than a ceremony set, so teams usually combine it with something concrete. Kanban is the most direct descendant (visualize the flow, limit work-in-progress, pull); many “modern agile” teams are really running lean principles through Kanban or Scrum. Core lean vocabulary you’ll meet: the value stream (the end-to-end path work takes), flow, pull, and kaizen (continuous, incremental improvement).

See also

References