You have a prospective client and you are discussing the project. Often the client would like you to quote a fixed fee for the work, so maybe you think thats ok and come up with some number by using a fancy estimation tool or tossing chicken bones. It really doesn’t much matter, something is likely to go wrong anyways.
The most obvious problem is the one everyone talks about. The client wants more work for the same price or changes his mind and wants you to just do the changes for free. Sure you could go down the route of detailed specs and change requests etc. but that’s means you are spending your time pushing paper instead of making code work, which is hopefully why you are in this game in the first place. So often we absorb a little bit (which hopefully we accounted for in the quote) and it only becomes a real problem when you have a particularly difficult client. There’s alot more to say about this and I don’t pretend to be an expert on the situation or how to resolve it.
I’d like to talk about the other side of this problem.
You agree to do a job for a fixed fee. While doing the work, you realize that there is much more you could do to make the product better than was originally envisioned by you or the client. In a good situation you can talk it over with the client and they will to pay more for this additional value. However, often the client’s budget is limited and they are unable to pay for this work that you know “ought to be” done. I run into this relatively often my desire to build something great runs up against my desire to not work for free. Usually the two desires compromise but that never leads to a feeling of satisfaction.
The simple answer is to just avoid doing fixed fee work. Is there a better answer?