Lean Software Development - An Agile Toolkit By Mary Poppendieck and Tom Poppendieck
This book contains seven chapters devoted to seven lean principles and thinking tools for translating each principle into agile practices.
- Eliminate waste. Waste is anything that does not add value to a product, value as perceived by the customer.
- Amplify learning. Development is an exercise in discovery. Take your most difficult problem and devise a way to increase feedback. Start iterations with a negotiation session between customers and developers. Post a progress chart for your current project in a common area so the team can see what needs to be done and everyone can see the project is converging. Find your toughest outstanding development problem and have the development team come up with three options on how to solve it. Instead of choosing one of the solutions, have the team explore all three options at the same time.
- Decide as late as possible. Development practices that provide for late decision making are effective in domains that involve uncertainty, because they provide any options-based approach.
- Deliver as fast as possible.
- Empower the team.
- Build integrity.
- See the whole. Finding and removing the limits of growth. Avoid the pattern called “Shifting the burden”. Ask “five whys” to counter the tendency to the burden to symptoms rather than addressing the root cause of a problem. Avoid “Suboptimization”. Local management tends to create local measuremens of performance. These local measurements often create systemwide effects that decrease overall performance.