Books like “Implementing Lean Software Development”, written by Mary and Tom Poppendieck, act as a good reminder of the principles behind Agile and Lean development practices. The book explains in great detail (and supported by relevant real-life examples) the main things that underpin an ‘iterative development approach’.
In some of my previous blog posts I concentrated specifically on applying Agile practices in a product management context. By contrast, “Implementing Lean Software Development” focuses on developing software from an Agile point of view.
As a starting point, Mary and Tom Poppendieck emphasise the importance of creating a “just-in-time flow”, which addresses one of the things I really like about applying Agile methodologies: making any bottlenecks or constraints immediately visible as you soon start working on things. This visibility then helps one to address the underlying issue(s) and to improve processes accordingly. Mary and Tom Poppendieck refer to this latter aspect as the “learn-by-doing approach”, which is similar to the “plan-do-check-adjust” approach which I wrote about earlier. It all comes from the well known (and often misused) concept of “Kaizen”, meaning ‘change for the better’ in Japanese.
Poppendieck’s “7 principles of lean software development” form the backbone of this book. These principles prompted me to have a think about those areas of “lean” which I try to apply on a daily basis or where I can improve:
- Eliminate waste – In their book, the Poppendiecks list “The Seven Wastes of Software Development”. I’ve learned over the last few years that it takes quite a bit of discipline to reduce or remove common types of waste such as “partially done work”, “extra features” and “defects”. Particularly as a product manager, I believe there’s an important role in defining upfront when a product can be considered “done” . This doesn’t mean writing lengthy product specifications upfront but does imply a certain rigour around following set steps when working on a feature or a bug (e.g. define acceptance criteria, write acceptance tests, develop, launch, test and iterate).
- Defer commitment – Especially with complex products, the Poppendiecks advocate an approach whereby tough problems are tackled though experimenting with a number of potential solutions, leaving critical options open in the meantime. In my experience, this means starting with a clear idea of what a product or feature is supposed to do (and user problems it aims to solve) combined with rough idea of complexity. Instead of taking on all of the expected complexity head first and committing to a set solution/technology, one starts by first exploring a number of technologies and solutions (by, for instance, developing the bare minimum product first) before making critical decisions about the technology to use or the solution to use.
- Deliver fast – To me this is an absolutely crucial element of lean software development and product management. Fast delivery does’t mean that one should simply rush things out of the door, quite the opposite. I always try to work closely with developers, testers and stakeholders to work out what the “minimum marketable product” looks like and what the minimum requirements should be (I’ve written about both iterative product development and the risks of releasing too early too often before). This is is then followed by development, testing and deploying the highest priority/value feature set first, followed by further iterations.
Main learning point: reading “Implementing Lean Software” will be of benefit both to people who are completely new to lean software and to those who are already familiar with this development approach. The book provides a good outline and explanation of the key principles which underpin lean software development as well as a lot of practical guidance on how to apply lean software development on a day-to-day basis. Even if you feel that “lean” isn’t for you or that it doesn’t fit your organisation or product, “Implementing Lean Software” will at least provide you with all the information to base your approach or decisions on!