Turned out someone had uploaded the perl script to a Linux server using dreamweaver on a Mac, and the line endings were wrong. So I ran dos2unix on it and added a blurb to some documentation on what not to do and how to fix it again if necessary.
Made $1000 for less than 15 minutes of work!
But of course I also could have spent two weeks bashing my head against an awful perl script, never figured it out, and made nothing. It's a risk/reward trade-off.
Then the client tells you that wasn't their problem in the first place.
In the 10 years of contracting I've never done fixed rate for the reason the client never knows what they exactly want. It's not like installing a tiled floor or drop ceiling.
Being a professional means a lot of things, but fixed rate contracting is amateur hour truly. Every software dev learns this eventually.
That being said you need a good spec to do this, and that definitely isn't normally the case in software.
Often the goal of a cheap fixed price is to show how limiting that is so they know why you can't productize a fully customized solution.
What about fixed price makes the client happy in this situation? It's definitely not the fact that the contractor billed "waaay more than hourly".
The upside of fixed price is that it's more predictable and it aligns incentives. With hourly, the hidden incentive is to take as long as you can get away with because every additional hour you take is an additional hour you can bill.
With fixed price, the contractor has an incentive to finish earlier.
That's the part that I find many contractors miss: They treat fixed price as an opportunity to extract more money from the customer. As someone who has been on both sides of this (I've been a contractor and I've also hired a lot of contractors) I lose trust quickly when I spot contractors inflating fixed price bids because they think I won't be able to recognize what they're doing.
If your bid is more than the problem is costing them, they won't accept the bid.
If your business model is "inflating fixed price bids" rather than "solving problems for clients" then sure, you won't do very well in the long term.
It's actually the parent that taking the risk. As they said, it could have easily been some hairy problem that took forever to solve.
You are welcome to haggle on price or not hire them. As a freelancer or bussiness owner, not every prospective bussiness deal goes through. That is not a failure of their model, just the realities of commerce.
For instance, hourly billing makes a lot of sense if the scope is vague - the client carries the scope risk.
Fixed price is amazing when the client has a specific, measurable problem that they don’t know how to fix (but you do). You can solve it cheaply, get paid waaay more than hourly and have a happy client.
Being a professional means having multiple tools in your toolbox and knowing how and when to use them. Drafting contracts is all about deciding how the risk will be shared - you need the right risk-sharing model for each situation.
(edit: spelling)