Lean Software Development: A Tutorial

Mary Poppendieck, Michael A. Cusumano

IEEE Software · 2012 · 146 citations · 5 references

Concepts

TL;DR

Agile methods typically treat architecture and design as external or incremental, which often leaves solution design, user interaction, and high‑level architecture inadequately addressed, leading to problems when design and development are not tightly integrated. The paper aims to place lean software development in context by comparing its similarities and differences with agile software development. Lean development offers principles that enforce a whole‑product, cross‑functional life‑cycle, integrating design, development, deployment, and validation into a single feedback loop focused on discovering and delivering value.

Abstract

To put the concept of lean software development in context, it's useful to point out similarities and differences with agile software development. Agile development methods have generally expected system architecture and interaction design to occur outside the development team, or to occur in very small increments within the team. Because of this, agile practices often prove to be insufficient in addressing issues of solution design, user interaction design, and high-level system architecture. Increasingly, agile development practices are being thought of as good ways to organize software development, but insufficient ways to address design. Because design is fundamentally iterative and development is fundamentally iterative, the two disciplines suffer if they are not carefully integrated with each other. Because lean development lays out a set of principles that demand a whole-product, complete life-cycle, cross-functional approach, it's the more likely candidate to guide the combination of design, development, deployment, and validation into a single feedback loop focused on the discovery and delivery of value.

References

5