For the first stretch of my freelance career, I billed hourly. It felt fair. Honest, even. Work the hours, send the invoice, get paid for time spent.
It was also quietly punishing me for getting better at my job.
The trap nobody warns you about
Here's what hourly billing actually does: it makes speed and skill a liability. The faster I got at building something, the less I earned for the exact same outcome. A client who needed a dashboard built didn't care whether it took me 40 hours or 15. They cared that it worked. But I was the one eating the pay cut for improving.
I noticed this properly on a project I now use as my own case study. A client needed a fairly complex authentication and permissions layer built into their platform. Because I'd built something similar before, I finished it in under half the time I quoted. I billed for the actual hours, out of habit and a weird sense of guilt about "overcharging."
I left real money on the table for being good at my job.
Why I kept doing it anyway
A few reasons, and I'd guess they apply to most developers reading this:
- Hourly feels defensible. You can point to a timesheet. Value-based pricing requires you to actually argue for the outcome, which is uncomfortable if you've never done it.
- Nobody taught us to price, only to code. Bootcamps and CS degrees teach architecture, not business. Pricing gets figured out on the job, badly, by most of us.
- Fear of the client saying no. Quoting a flat project fee based on value feels riskier than quoting hours, even though it's usually more profitable and more honest about what you're actually selling.
What changed it for me
I stopped selling hours and started selling outcomes. When a client asks for a feature, I now ask what that feature is worth to their business before I think about how long it'll take me to build.
A permissions system that lets a client onboard enterprise customers who require role-based access isn't worth "12 hours of dev time." It's worth whatever revenue that enterprise deal unlocks. That's the number I price against.
This doesn't mean charging arbitrary premiums. It means understanding the business impact of the work well enough to price it honestly on that basis, not on a stopwatch.
The practical shift, if you want to make it
- Scope the outcome, not the task. Before quoting, ask the client what changes for their business once this is built. Write that down. That's your pricing anchor.
- Quote a flat fee for defined scope, with a clear written boundary on what's included, so scope creep doesn't quietly turn your value-based fee back into an underpaid hourly rate.
- Keep a private hourly floor for yourself as a sanity check, not as your pricing model. If a value-based quote comes in wildly below what your time is worth, that's a signal to renegotiate scope or walk.
- Say the value out loud in the proposal. Don't just state the price. State what it enables for them. Clients pay more easily when they can see the return, not just the invoice.
What this actually cost me to learn
More than I'm comfortable admitting. Years of underpricing my best, fastest work. But it's also the single biggest lever I've pulled on Devinsol's margins, more than any marketing tactic or new skill I picked up.
If you're still billing hourly and getting faster at your job every year, you're on the same treadmill I was on. Get off it before it costs you what it cost me.
Suggested internal links: Link to a future article on scope creep (Day 18) and your Devinsol founding story (Day 4).
CTA: Follow for more founder-to-founder lessons, or book a call if you're figuring out your own pricing.
