I've always billed hourly, I've read the arguments against it (including this one), and I have't changed my mind about it. Occasionally, I'll sense that a client needs more or less hand holding, or that a particular project will be super fun, or a huge drag, so I'll adjust my hourly rate up and down, but this method of billing, overall, works really well for me.

Keep in mind though, I'm not a full time contractor. I do a few hours of freelance work a week (10-20 hours a month, for 1-3 clients), in the evenings, mostly on small projects that just take a few hours.

In addition, I'm unusual because I focus in a small specialty: web scraping, data collection, and data sourcing. I write web bots and design data architectures, basically. This is great, because I do variations on the same thing over and over again, it means that I very very rarely run into hidden problems and can very accurately estimate how long it will take me to collect a set of information from a particular source. I've actually walked away from work that was outside of this scope (even though I have a master's in software engineering, have done it for 10 years, and was perfectly capable of the job) just because I knew it would be a higher risk to bill for accurately, and didn't want a potential headache for the client or for me.

So I strike a middle ground between hourly billing and "fixed cost" that I believe benefits both sides: "This will take 3-4 hours, the deliverables will be <blah>, I bill $x/hour. If I find something that proves to be a huge blocker that, for whatever reason, I didn't see before, I reserve the right to revise this estimate upwards and ask for your approval on the revised estimate, but, in that case, you will not be obligated to pay for any work done up to that point, until you accept the revised estimate, if you choose to do that."

It's not uncommon that I discover that there's a method of collecting data from a site that I didn't see before, that is drastically faster than I had originally anticipated. Of course, I could do as the author suggested and bill for the original estimate, reveling in my loads of cash and free time, but here's the rub: I don't.

I actually really enjoy telling the client: "Hey, check this out! It only took half an hour! Anything else you want me to do?" and clients appreciate it. I get paid fairly for my time, and fairly for the difficulty of the project. In theory, I figure, if the clients were to shop this project around on the open market, someone else could figure out the "trick" and underbid anyone pricing based on "value to the client," and, of course, there's the danger that clients could figure out that this was NOT a 3-4 hour project at some point down the line, and I'd like to maintain their trust.

In addition, I've found that clients who get a "surprise bargain" are more likely to recommend me through word of mouth, they're more likely to add on extra work/features to meet their original budget anyway, and I feel good about myself. Is "feeling good about yourself" worth an extra few hundred bucks here and there? Maybe not, but, like I said, I'm getting paid exactly what I wanted to get paid my time, so it doesn't bother me too much.

But I am also billing based on value, and always keep that in the back of my mind. Over the last couple years, I've actually doubled my hourly billing rate, as I create tools, shortcuts, develop better techniques, and even add more value as a consultant for the client.

I've certainly toyed with the idea of creating web scraping tools that I can monetize as software (although it's a crowded space), moving towards the "fixed cost for the value this adds to your life" model, but for my freelance work, I just really enjoy sitting in my pajamas in bed, Netflix playing in the background, mindlessly cranking out some code and exploring new techniques while getting paid to do it.

I'll be the first to admit that hourly billing doesn't make sense for everyone, and every project, but I think I've found a good balance of risk for myself and the client that's appropriate for my skill level, specialty, and financial needs, and I'm just fine with that.