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.