I participated in a LinkedIn discussion around the topic “My client doesn’t know exactly what he wants and asks for a fixed price on the delivery”. These are my thoughts on the subject:
There are actually many of those clients, as Steve Jobs said “a customer doesn’t know what he wants until he sees it”. Your client has an idea, a vision, but not much of a detailed plan. And that is where Scrum helps.
Define a minimum viable product with your client, give the work a gross estimate, and together with your client just build it. Your client works hard to prioritize, to decide what to do if a feature doesn’t fit the budget, and helps your team to get the best possible result out – “best” means, the best fit for his business. Your team delivers the best engineering they have ever produced, no bugs, no defects, and also no frills, no gold-plating, just solid development. Take reviews and retrospectives very serious, use them to be better with product specs, and better with teamwork.
When the time/budget is up, together you produced the best possible solution for the given budget. Now your client is in a position to decide to do more work, and whether to do it with you.
Search around for Jeff Sutherland’s “money for nothing and change for free” article, and have a look at my article on long term planning.