Lean Software Development: An Agile Toolkit

Product Description
Lean Software Development: An Agile Toolkit Mary Poppendieck Tom Poppendieck Forewords by Jim Highsmithand Ken Schwaber *Adapting agile practices to your development organization *Uncovering and eradicating waste throughout the software development lifecycle *Practical techniques for every development manager, project manager, and technical leaderLean Software Development: An Agile Toolkit Lean software development: applying agile principles to your organization … More >>

Lean Software Development: An Agile Toolkit

5 thoughts on “Lean Software Development: An Agile Toolkit”

  1. Books written during the first phase of agile software development have been about very specific practices we should employ. There are some excellent books on the Extreme Programming, Feature-Driven Development and Scrum agile processes. These books teach us “do a, b, and c if you want to do Extreme Programming” or “do x, y and z if you want to do Scrum.”

    In the last year we’ve seen books by Highsmith (Agile Software Development Ecosystems) and Cockburn (Agile Software Development) that represent the second wave of agile software development-that of learning to think agilely rather than following a prescribed set of agile rules. Mary and Tom Poppendieck’s book is the latest and best book for teaching how to think agilely.

    The book contains 22 “thinking tools.” The thinking tools are drawn from the world of lean manufacturing where they have helped improve product delivery speed, quality and cost. Each tool is presented as a guideline. Each thinking tool is described with enough detail that you can put it into practice; but, more importantly, the reasons supporting each are made explicit. So, instead of simply reading that it is good to “deliver as fast as possible” we learn how rapid delivery is supported by pull systems (where work is pulled into the current step from the prior step), how queuing theory helps us identify bottlenecks, and how to calculate the cost of delay (to see which bottlenecks are worth removing).

    This book is the perfect blend of highly actionable instructions and descriptions of why those actions work. I highly recommend this book to anyone who wishes to improve his or her software development process. The authors’ ideas are applicable both to projects using agile approaches today and to more traditional, plan-driven projects.
    Rating: 5 / 5

  2. This is an excellent discussion of how the principles of Lean Manufacturing apply to Software Development. The authors explain why the usual metaphor of software as manufacturing is not quite right, and why the metaphor of Lean Manufacturing is something we can learn from. The book is clearly written and the authors provide examples and anecdotes to help you to understand their points. This was a fairly quick read, and I am likely to refer to it often.
    Rating: 5 / 5

  3. Our reading group at work recently read “Lean Software Development.” There are several things I really like about this book:

    1. Its thinking is clearer than most. The Poppendiecks make sharp distinctions between principles, tools, and practices. (More on this will follow.)

    2. It presents an Agile approach without demanding that one follow all tenets of Extreme Programming (such as pair programming).

    3. It recognizes that in the past it has been a mistake to think of software development as being roughly analogous to manufacturing. Creating custom software is not very much like assembling cars within a factory.. Software development is much closer to product development, much more like the work that goes into designing the car in the first place. Principles (not necessarily techniques!) that work well in product design can have a much more straightforward application in software design.

    4. They specifically address the needs of safety-critical software, talking about how to apply these principles in environments that are heavily regulated or where a software failure may endanger lives.

    The book does suffer at times from and affliction common to this genre: over-enthusiasm. There can be a sense that all we need to do is follow what they say and all will be well. But, for the most part, the authors provide reasonable, realistic guidance for those looking to improve the way they go about creating software.

    Now that we have the overview, let’s look at the meat of the book: Agile principles. There are seven Agile principles which should govern a group’s software development process:

    1. Eliminate Waste

    2. Amplify Learning

    3. Decide as Late as Possible

    4. Deliver as Fast as Possible

    5. Empower the Team

    6. Build Integrity In

    7. See the Whole

    A chapter is devoted to each principle. In each, the principle is described, examples are given from both product and software development, and a number of “tools” are suggested as ways to apply the principle in software development.

    The principles are valid within any development effort, software or otherwise. For example, a good process will always seek reasonable ways to eliminate waste. In product development and manufacturing, waste may include scrap material that does not end up in a product. In software, the definition of “waste” will include things like partially done work, extra processes, extra features, waiting,

    etc.

    It is very important to keep the distinction between principles, tools, and techniques in mind. Principles must be reasonably applied to a given environment. The authors put it quite well: (pp. 179-180)

    * Eliminate waste does not mean throw away all documentation.

    * Amplify learning does not mean keep on changing your mind.

    * Decide as late as possible does not mean procrastinate.

    * Deliver as fast as possible does not mean rush and do sloppy work.

    * Empower the team does not mean abandon leadership

    * Build integrity in does not mean big, upfront design.

    * See the whole does not mean ignore the details.

    “One team’s prescription is another team’s poison. Do not arbitrarily adopt practices that work in other organizations; use the thinking tools in this book to translate lean principles into agile practices that match your environment.”

    I strongly recommend this book.
    Rating: 4 / 5

  4. I am a senior software systems engineer working for an aerospace company. I recently read the Poppendicks’ book and have mixed feelings about it. Overall they present some great lean development principles and tools that appear to be useful in boosting productivity in my software engineering organization. On the other hand, their understanding of CMM/CMMI is so off-base that it is hard for me to take them seriously as authors.

    They misrepresented CMM several times in the book, so they either do not understand what CMM is and how it works, or they are intentionally misrepresenting it to “scare” people into using their lean software tools. The reality is that agile software development principles and tools fit perfectly into the CMM/CMMI models and the Poppendicks would have a much stronger book if they realized that. Rather than bashing CMM to make their tools seem more useful, they might do better if they realized that CMM/CMMI and lean software development can work perfectly together.

    My advice to people interested in buying the book is to only read the book if you can take what the Poppendicks say with a grain of salt. Read about the lean principles/tools and think of how you could apply them in your software development environment. In the spirit of implementing the primary principle of lean development (i.e. eliminate waste), I would ignore the anecdotes they include in the book. They appear to be intentionally sensational while offering little value.
    Rating: 2 / 5

  5. Although this book is from the Agile-series, the approach and advice extends to any methodology from the heavy (and still used) waterfall SDLC, to XP and agile methods.

    Key steps in this book will show you how to streamline your development methodology in accordance with lean thinking:
    – Eliminate waste by cutting the fat out of processes, reducing rework, viewing your SDLC as a value stream.
    – Amplify learning, with an emphasis on iterative planning, feedback loops and team communications.
    – Decide as late as possible, which is enabled by concurrent activities, depth-first versus breadth-first problem solving, and other effective tools and techniques.
    – Deliver as fast as possible, based on analogies between manufacturing pull systems and scheduling, and how to accomplish the same in development.
    – Empower the team, which is a fundamental element of lean thinking. The tools and techniques presented in this section of the book are a mixture of common sense, leadership and management.
    – Build integrity in. If ever there were a direct connection between the lean thinking approach to manufacturing and software development, it is here. Tools and techniques given include model-driven development, refactoring and testing techniques.
    – See the whole, which emphasizes system thinking, metrics, optimization, and the supporting tools and techniques.

    Any or all of the above can be effectively applied to any SDLC or methodology and produce results. Lean thinking was developed by Toyota as a manufacturing paradigm, which has been extended through that company and is applied to business processes outside of the manufacturing domain. That this team of authors has applied it to software development is not as unnatural as it may seem at first glance given how vastly different software is to create versus cars, for example. But, the paradigm has been proven outside of manufacturing before this book was written, and the basic philosophy and principles can be applied – which this book evidences.

    If you want to look at development from an entirely unique perspective purge the words agile, XP and any other methodology from your mind while reading this book. I can almost guarantee that you’ll find something in every chapter that you can put to immediate use in your own organization. As an aside, a book on software testing that is consistent with lean thinking in many ways, and closely aligned to the content of this book is “Software Testing Fundamentals: Methods and Metrics” ISBN 047143020X.
    Rating: 5 / 5

Leave a Reply to Steve Berczuk Cancel reply