Continuing to work through Lean Software Development by Mary & Tom Poppendieck.
Chapter 2 – Amplify Learning
The problems solved by software do not have “right” answers, rather it is a case of seeking to reduce uncertainty as the project progresses – uncertainty about customer requirements, uncertainty about technology. Software development is therefore a process of learning and like all learning inherently cyclical.
The tools introduced in this chapter are primarily about adopting maximising opportunities for learning, enhancing communication between the people who understand different parts of the problem domain and allowing solutions to emerge that meet the needs of all stakeholders.
An iteration should be considered a demonstration of a possible solution; it should not be considered an only solution […] As iterations progress and more choices are made, the design space should be gradually narrowed
Tool 3 – Feedback
Tool 4 – Iterations
Tool 5 – Synchronisation
Tool 6 – Set-based Development
Reading this chapter I was struck by the importance of trust between all stakeholders – I’m looking forward to see how that might be dealt with when they discuss teams, committment, motivation and contracting issues…
Re-reading the chapter, and as the result of a couple of real-life project conversations that have happened since the original entry, I’ve realised the importance of the concept of variable scope. In the book the Poppendiecks cite ROI, It’s your job [PDF 716kb] by Jim Johnson of The Standish Group. In that document Johnson refers to a study of over 35,000 application development projects which found that in a typical system
45 percent of features are never used and 19 percent are rarely used
The Poppendiecks note (p32):
Since customers often don’t know exactly what they want at the beginning of a project, they tend to ask for everything they think they might need, especially if they think they will only get one shot at it. This is one of the best ways we know to increase the scope of a project well beyond what is necessary to accomplish the project’s overall mission. […] If you let customers ask only for their highest priority features, deliver them quickly, then ask for the next highest priority, you are more likely to get short lists of what is important. […] This approach to project management may seem to lead to unpredictable results, but quite the opposite is true. Once a track record of delivering working software is established it is easy to project how much work will be done in each iteration […] by tracking the team velocity you can forecast from past work how much work will probably be done in the future.