Optimism is an occupational hazard of programming. Predicting a projects cost is extremely hard and even the best predictions fail. We, the programmers, all know why we'd like to freelance on a per hour basis and not with a fixed project budget, but there are some pretty good reasons a client should want this too. So here are a few pointers to help convince the client.
1. The final product will miss the point.
You'll be missing out on agile development. Because the budget is fixed, there is very little room for pivoting the product. This means important new ideas are left out and difficult technical problems still have to be figured out, even if they have no significant effect on the product.
Unless you'd like to get another budget for thorough research, let's keep it agile.
2. We'll both be wasting time
Beside figuring out useless technical problems we'll argue about whether some feature was agreed upon or not. Yeah, written agreements can help, but those are always interpreted in multiple ways and writing these things wastes everybodies time. In the end of the day you need me to help you with your business and my aim is to deliver what you actually need, so again, lets keep it agile.
3. Our relationship will suffer
All this arguing adds up and will probably lead to some tensions. This means we may finish the product at hand, but further collaboration is not likely - then the client needs to find a new developer and how much time does that cost?
4. Your software will suffer
A bad relationship will probably result in a "let's just get this shit done" attitude and the code will suffer in quality, making it even harder for someone else to pick up the work and fix bugs, which this thing clearly now has.
Got any more tips for beginner freelance programmers?