- ManufacturingSoftware
- InventoryPartially done work
- OverproductionExtra features
- Extra processingRelearning
- TransportationHandoffs
- WaitingDelays
- MotionTask switching
- DefectsDefects
Lean software development applies lean thinking from manufacturing to building software: remove waste, learn fast and deliver value to customers in a steady flow. It focuses on the whole system, not just coding speed.
Mary and Tom Poppendieck introduced the approach in their 2003 book Lean Software Development: An Agile Toolkit. This guide covers the seven principles, the seven wastes of software, flow metrics, value stream mapping and how lean compares with agile and DevOps.
Key takeaways
Lean software development adapts lean thinking to software and focuses on the flow of value to the customer.
The Poppendiecks describe seven principles, from eliminating waste to seeing the whole.
Typical software wastes include partially done work, extra features, waiting and task switching.
Flow metrics such as lead time and work in progress show where work gets stuck.
Lean, agile and DevOps overlap and work well together rather than competing.
What is lean software development?
Lean software development is a way of running software work that treats waiting, rework and unused features as waste. The goal is to get useful software to users sooner, with fewer defects.
The Poppendiecks drew on the Toyota Production System. They also used earlier lean thinking set out by Womack and Jones in their 1996 book Lean Thinking. They adapted these ideas for a field where the product is code, not physical parts. See our overview of the Toyota Production System for the roots.
Software differs from a factory in that every project is new. Lean software therefore relies on learning, not on repeating a fixed process.
What are the seven principles of lean software development?
The seven principles are eliminate waste, amplify learning and decide as late as possible. The rest are deliver as fast as possible, empower the team, build integrity in and see the whole. The 2003 book framed them in this way.
A later edition in 2006 revised the wording. It split learning and quality differently and used terms such as 'defer commitment' and 'optimize the whole'. Check the edition you are reading before you quote a list.
Each principle has a practical meaning, covered in the next two sections.
Principles one to four: waste, learning, timing and speed
Eliminate waste means removing anything that does not add value for the customer. This starts with learning to see the waste, which the next section lists.
Amplify learning means shortening feedback loops. Short iterations, frequent demos and quick user testing all help the team find out sooner what works.
Decide as late as possible means keeping options open until you have enough facts. Make irreversible choices late and reversible ones early.
Deliver as fast as possible means shipping small pieces often. Short cycles cut the delay between an idea and customer feedback.
Principles five to seven: team, integrity and the whole
Empower the team means letting the people who do the work make decisions about how they do it. Managers set direction and remove obstacles.
Build integrity in means designing quality into the product from the start, through testing, clear design and automation, rather than inspecting at the end.
See the whole means improving the entire flow from idea to customer, not one stage in isolation. A faster coding step does little if reviews and releases still queue for days.
What are the seven wastes of software development?
The seven wastes of software development are partially done work, extra features, relearning, handoffs, delays, task switching and defects. The Poppendiecks mapped them from the seven wastes of manufacturing.
Partially done work is code that is written but not released. Extra features are functions that nobody uses but that still need maintenance.
Relearning is rediscovering knowledge the team already had. Handoffs lose information between people. Delays hold up decisions and releases.
Task switching drains attention across too many projects. Defects need rework and erode trust. Compare this list with the eight wastes of lean manufacturing.
How do flow metrics and value stream mapping help?
Flow metrics and value stream mapping show where work waits, so you can fix the biggest delays first. Both make invisible queues visible.
Useful flow metrics include lead time, the time from request to delivery, and work in progress, the number of items started but not finished. Say a change takes 10 days from request to release, but only 2 days are active work. The other 8 are waiting. These numbers are illustrative.
A value stream map for software traces each step from idea to production, noting active time and wait time. Our guide to value stream mapping explains the method, and the flow metrics tools category covers related software.
Limiting work in progress helps flow. A kanban board makes that limit visible, as described in our guide to kanban project management.
How do teams apply the principles day to day?
Teams apply the principles through small, repeatable habits: limiting work in progress, finishing before starting, and reviewing flow often. Each habit maps to one or more of the seven principles.
Eliminate waste: hold a short review of the backlog and drop requests nobody has asked about for months. Unused features cost maintenance time.
Amplify learning: demo work to real users every week, and note what surprised the team. Decide as late as possible: choose a database or vendor only when the first feature truly needs it.
Deliver as fast as possible: split a large feature into slices that each reach users. Empower the team: let the people doing the work set their own working limits.
Build integrity in: write automated tests alongside code, so quality is not left to a final check. See the whole: invite operations and support staff to planning, so delays beyond the code become visible.
How do you measure flow in software delivery?
Measure flow with four numbers: lead time, cycle time, work in progress and throughput. Together they show how fast work moves and where it waits.
Lead time runs from the customer's request to delivery. Cycle time runs from the moment work starts to the moment it is done. The gap between them is time spent waiting in the backlog.
Work in progress counts items started but not finished. Throughput counts items finished in a period, such as a week.
These figures are linked by Little's Law, which says average work in progress equals throughput multiplied by cycle time. Try it with our Little's Law calculator. Say a team finishes 5 items a week and holds 20 in progress. Average cycle time is then 4 weeks. The numbers are illustrative.
If you want shorter cycle time, the law shows you can cut work in progress. Track the trend over weeks rather than judging a single week. Software in the flow metrics tools category can chart these measures automatically.
What is the difference between lean, agile and DevOps?
Lean is a set of principles about value and waste. Agile is a set of values and practices for iterative delivery. DevOps links development and operations to release reliably. They overlap and support each other.
Lean asks what creates value and removes the rest. Agile, based on the 2001 Agile Manifesto, emphasizes working software, collaboration and response to change.
DevOps, sometimes called lean DevOps when it stresses flow and waste, focuses on automation and shared ownership between development and operations. Our lean agile software hub covers the tools that bring these together.
The three differ in scope. Agile mostly governs how a team plans and builds in short cycles. DevOps mostly governs how code reaches production and stays healthy there. Lean looks across both, from idea to customer.
Here is an illustrative case. An agile team ships every two weeks, but releases wait four days for a manual approval. Lean flags that wait as waste, and a DevOps practice such as automated testing removes it.
Lean also adds a question the others do not always ask: is this work worth doing at all? Cutting an unused feature beats speeding it up.
In practice, many teams use agile ceremonies, lean thinking about flow and DevOps automation at once.
How do you start with lean software development?
Start by mapping how one piece of work moves from idea to release, then pick the largest delay and improve it. Small, visible steps build support better than a large program.
A simple start is:
1. Map one recent feature from request to production.
2. Mark the waiting time between steps.
3. Set a limit on work in progress.
4. Review the flow weekly and adjust.
The same thinking applies to design work, as our guide to lean UX shows. For software that tracks delivery flow, see the value stream management software category.
Frequently asked questions
What are the principles of lean software development?
What is the difference between lean and agile?
What is lean in software engineering?
What is the difference between lead time and cycle time?
What is lean DevOps?
Choosing Value Stream Management Software?
Read the buying guide: what to look for, mistakes to avoid and questions to ask vendors.