Lean Software Development: An Agile Toolkit for Software Development Managers
From the Back Cover
In Lean Software Development, Mary and Tom Poppendieck identify seven fundamental "lean" principles, adapt them for the world of software development, and show how they can serve as the foundation for agile development approaches that work. Along the way, they introduce 22 "thinking tools" that can help you customize the right agile practices for any environment.
Better, cheaper, faster software development. You can have all three—if you adopt the same lean principles that have already revolutionized manufacturing, logistics and product development.
• Iterating towards excellence: software development as an exercise in discovery
• Managing uncertainty: "decide as late as possible" by building change into the system.
• Compressing the value stream: rapid development, feedback, and improvement
• Empowering teams and individuals without compromising coordination
• Software with integrity: promoting coherence, usability, fitness, maintainability, and adaptability
• How to "see the whole"—even when your developers are scattered across multiple locations and contractors
Simply put, Lean Software Development helps you refocus development on value, flow, and people—so you can achieve breakthrough quality, savings, speed, and business alignment.
Review By: Jon D. Hagar
01/24/2005
"Lean Software Development" by Mary and Tom Poppendieck targets software projects looking to becoming agile and agile groups wanting to incorporate more tools to its agile portfolio. The book presents twenty-two agile tools (or ideas) that implement agile and lean development concepts. The book covers eliminating waste, amplifying the learning process, last-minute decision making, delivering as fast as possible, empowering the team, building team integrity, seeing the entire objective, and instructions -- even a disclaimer that states the limitations of the book's message.
Each chapter sets a stage (or topic), one or more tools that addresses the topic, and a useful "Try This" ending. The stages covers typical software and industry projects with lessons learned by those professionals in the field. The tools contain specific techniques that can be use in different situations.
The authors illustrate lessons and tools with a variety of narrative stories and personal experience reports, and references from other books. The Try This section concluding each chapter contains exercises a reader can apply to a project, both in small settings like a staff meeting, or in larger contexts such as working with customers.
The book should not be confused as a book of techniques. According to the authors, it is "a book of thinking tools for software development leaders." Early in the book, the authors explain some of the history of lean thinking citing well-known wastes of software and other "death march" stories. While most of the stories in the book are software based, the book is not all about software.
Relationships to other industries and associated concepts (manufacturing and capabilities maturity model integrated [CMMI]) are also made. Early chapters highlight the ideas of iteration in development, staying flexible, and providing early products that facilitates customer acceptance. Some of these chapters address concepts such as pull systems and queuing theory, both examples of specific tools explained in the book.
Other chapters address the human side of software, covering issues of learning, understanding, communication, and decision-making. Tools found in these sections include self-determination, motivation, and leadership. Sections dealing with product tools such as testing, contracts, and conceptual integrity appear later in the book. The final and interesting chapter deals with instructions, limitations, and a warranty on what the book says. This provides some "caution – use only as directed" deals and insights representing context for the agile implementers.
This book targets software leads, managers, and technical people looking for agile insights about leadership domains. The book contains good references and informative graphics used to illustrate key points and ideas. The tools are excellent and presented in a style in which almost anyone should be able to use them. The tools are at the leader and management level, with no specific programmer or tester level tools like test-driven development or pair programming though aspects of these lower levels are referenced. There are numerous tables that summarize key ideas, for example the difference between development and production.
I like how the authors offer advice on when and how to apply concepts. More authors should explain the domains, contexts, and issues with any idea, tool, or technique. Also, I like that many of their war stories were not just from software. While some of the ideas seem like common sense, many projects need a good measure of sense and lessons learned. Tom and Mary provide useful ways to think about lean software. For example, a table and its associated text provide a way of thinking about baseline software profit and loss, which many software people do not consider but should since companies must make money to stay in business. The improvement concepts would fit well with potential developers who read this book, since Mary and Tom advocate successful improvement efforts are driven from the bottom as well as the top.
I will keep this book in my "lead and manager" section of my library. I find it a good addition to my other books on agile development as I continue growing from traditional viewpoints and methodologies to lighter-weight ones.