Lean Software Development
- In Turkish
- yalın yazılım geliştirme
In short
Lean software development applies lean manufacturing ideas to software, aiming to deliver customer value quickly by removing waste and improving flow.
What is lean software development?
Lean software development applies the principles of lean manufacturing, especially the Toyota Production System, to building software. Its central aim is to deliver value to customers as quickly as possible by eliminating waste, meaning anything that doesn't add value from the customer's point of view. Mary and Tom Poppendieck popularized the approach in their 2003 book Lean Software Development: An Agile Toolkit.
The Poppendiecks describe seven principles: eliminate waste, build quality in, create knowledge, defer commitment, deliver fast, respect people, and optimize the whole. In software, waste includes partially done work, features nobody uses, handoffs between teams, task switching, waiting for approvals, relearning forgotten decisions, and defects. Teams use value stream mapping, a drawing of every step from request to delivery, to see where work sits waiting, then limit work in progress and track lead time, the total time from request to delivery.
Lean is like streamlining a restaurant kitchen: noticing that finished plates wait ten minutes because one person garnishes every dish matters more than making the cooks chop faster. Lean thinking is the foundation of Kanban and strongly influences DevOps, continuous delivery, and the idea of shipping a minimum viable product to learn quickly.
Lean is often confused with Agile. The two overlap heavily and Lean is often counted as part of the Agile family, but Agile emphasizes short iterations, feedback, and collaboration, while Lean focuses on flow and waste across the whole value stream, from idea to customer. Lean software development is also different from the Lean Startup method, which is about testing business ideas through build, measure, learn cycles. Despite the name, Lean does not mean cutting staff or budgets.
Key takeaways
- Lean software development adapts lean manufacturing ideas to software.
- Its main goal is delivering customer value quickly by removing waste.
- Common software wastes include waiting, handoffs, unused features, and defects.
- Value stream mapping and lead time reveal where work gets stuck.
- Lean underpins Kanban and influences DevOps practices.
Example
Value stream for one feature, from request to customer
Step Working time Waiting time
Idea approved 1 day 9 days (waiting for a planning meeting)
Development 3 days 4 days (waiting for code review)
Testing 1 day 6 days (waiting for the test environment)
Release 0.5 days 7 days (waiting for the monthly release)
Lead time: 31.5 days, of which only 5.5 days are real work (about 17%)
Biggest waste: waiting. Fix the release and test-environment delays first.Readers ask
What are the seven principles of lean software development?
They are eliminate waste, build quality in, create knowledge, defer commitment, deliver fast, respect people, and optimize the whole. Mary and Tom Poppendieck defined them in their 2003 book.
What is the difference between Lean and Agile?
Agile focuses on delivering software in short, feedback-driven iterations with close collaboration. Lean focuses on smooth flow and removing waste across the whole process, and the two are often used together.
See also
- AgileTeams & Process, p. 2Agile is an approach to software development that delivers working software in small, frequent increments and adjusts plans based on regular feedback.
- KanbanTeams & Process, p. 10Kanban is an Agile method that visualizes work on a board of columns and limits how many items can be in progress at once to keep work flowing smoothly.
- MVPTeams & Process, p. 13An MVP is the simplest version of a product that real users can use, built to test a key assumption and learn as much as possible with the least effort.
- DevOpsDevOps & Cloud, p. 14DevOps is a set of practices and a culture that brings software development and IT operations together to deliver software faster and more reliably.
- Extreme ProgrammingTeams & Process, p. 9Extreme Programming is an Agile method built on engineering practices such as pair programming, test-driven development, and continuous integration.
- Technical DebtSoftware Architecture, p. 45Technical debt is the future cost of extra work created when developers choose a quick or limited solution now instead of a better approach that takes longer.
Spotted a mistake or something missing on this page?Suggest an edit