“If I’d asked my customers what they wanted, they’d have said a faster horse.” Henry Ford
That’s the starting point of the talk and it means: The costumer does not know what he wants (can have) at the beginning of the project and developers does not know how to do it.
Agile tecniques address these problems because on each iteration the client can see a working prototype and can change his mind on time to allow the developers to deliver these change with some more iterations. Obviously these additional iterations are not for free.
In fact Aspeli suggests that the contract should be created on a iteration basis. For Example setting a price per iteration of xxxx€ and evaluate that I need N iterations to complete the project. The total price for the project will be xxxx*N€.
If the costumer asks for modifications and/or integrations they will be evaluated in terms of number of iterations required M and the price will become xxxx*(N+M)€.
Obviously the iterations have fix duration and allocated resources.
Other benefits of this tecnique are that each iteration:
- incrementally ship value
- keep the visibility of the project hight
- reduces the risk of misunderstanding on the requirements with the client
- remains adaptable to change along the project
Other good advices that Martin gives us are:
- Dont start a project if your client is 10x bigger than you
- Dont start a project if tour client is 10x smaller than you
- Add a risk premium of 10-25% on the contract