Other meanings of Lean software development
SOFTWARE ENGINEERING
Lean software development is the application of lean manufacturing principles to software development. It seeks to deliver customer value quickly by reducing waste, limiting work in progress, improving flow, building quality into the process, and learning continuously rather than relying on large batches and late inspection.
Lean software development transfers the thinking behind the Toyota Production System to knowledge work, while adapting it to software’s uncertainty and high change rate. Lean manufacturing emphasizes value, smooth flow, pull, built-in quality, and continuous improvement rather than simply maximizing local worker or machine utilization.1 Mary and Tom Poppendieck’s 2003 book helped establish the term in the software field and connected it with the emerging agile movement.2
The approach does not prescribe one lifecycle, team structure, or planning method. Scrum, Kanban, extreme programming, continuous delivery, and other practices can support lean aims when they shorten feedback loops and expose problems. The focus is on improving the whole value stream—from an idea through development, testing, release, and operation—rather than optimizing a single department.
Lean software development is commonly summarized by seven principles: eliminate waste, build quality in, create knowledge, defer commitment, deliver fast, respect people, and optimize the whole.2 Waste includes partially completed work, unnecessary features, handoffs, waiting, excess process, task switching, defects, and unused human capability. A feature that is never used is waste even if it was implemented efficiently.
Teams apply these principles through small batches, frequent integration, automated testing, direct customer feedback, visual workflow, explicit work policies, and limiting work in progress. Pull systems begin new work when capacity becomes available instead of pushing large queues onto downstream teams; the Kanban Guide describes this emphasis through visualizing work, managing flow, and improving the system collaboratively.3 Deferring commitment means preserving options until relevant information is available, not avoiding decisions indefinitely.
Lean treats fast delivery and high quality as mutually reinforcing goals: small, integrated changes make defects easier to localize and feedback easier to act upon. Toyota’s production-system description likewise places built-in quality and just-in-time flow at the center of its operating model.4 In software, practices such as test automation, peer review, trunk-based integration, observability, and safe deployment mechanisms reduce the cost and risk of learning.
Useful measures examine the system rather than ranking individuals. Common flow measures include lead time, cycle time, throughput, work-in-progress age, deployment frequency, and escaped defects. A team can improve apparent utilization while making delivery slower if it creates larger queues or more handoffs. Lean therefore favors end-to-end outcomes and empirical experiments over activity counts, lines of code, or individual busyness.
Lean software development is not synonymous with “doing less” or with cutting staff and budgets. Its original waste concept is broader: excess inventory, waiting, defects, and underused skill can all arise from management decisions and system design, while a smaller feature may create more value than a larger one. Lean also treats stopping the line to address a quality problem as a productive control, an idea reflected in Toyota’s jidoka, or built-in quality.4
Another overlooked dimension is knowledge creation. Spikes, prototypes, simulations, experiments, and early operational releases are not merely preliminary coding; they reduce uncertainty before expensive commitments. “Respect for people” similarly implies giving teams the information and authority to improve work, not simply asking them to work faster. These ideas connect lean software development with agile values such as frequent delivery, customer collaboration, and responding to change.5
Lean software development is a family of principles and practices, not a single standardized methodology; implementations differ according to product, organization, regulatory setting, and technical architecture.
Help improve the encyclopedia. Reports go straight to the site manager.