Lean Software Development : An Agile Toolkit, Mary Poppendieck and Tom Poppendieck. An excellent resource on how the lean principles from product manufacturing can be applied unto software development. A good overview of content can be found in their 2002 paper here (pdf) and the Wikipedia article on Lean.
Each chapter in the book describes several “thinking tools” for the 7 Lean Principles.
- Eliminate waste describes how to identity and remove waste in order to maximize the flow of the value stream.
- Seeing Waste
- Value Stream Mapping
- Amplify learning emphasizes how short feedback cycles can improve the resulting product and development process.
- Set-based development
- Decide as late as possible in order to deal with uncertainty, and make better decisions.
- Options thinking
- The last responsible moment
- Decision making
- Deliver as fast as possible in order to enable late decision making, and produce value as quickly as we can.
- Pull systems
- Queuing theory
- Cost of delay
- Empower the team in order to make use of the expertise that lies with the people that actually do the work.
- Build integrity in to accommodate change and increase the period of usefulness of a product.
- Perceived integrity
- Conceptual integrity
- See the whole warns against sub-optimization, and provides tools for keeping the bigger picture in mind.
Books on process usually take me longer to get through than those dealing strictly with technical topics – with the density of information in some of the chapters, this one was no exception. It’s a real eye-opener though and comes highly recommended for those wishing to improve their software development process, even for those in non-agile environments.
What to read if you are in a hurry
The part on Queuing Theory was particularly informative and captures the substance of the book perfectly. More on this later.