I charge fixed prices, not hourly rates. This surprises people.
"But what if it takes longer than expected?"
Then I eat the difference. Here's why that's actually fine.
Why Fixed Over Hourly
Hourly billing creates misaligned incentives. The longer I take, the more I get paid. That's backwards—I should be rewarded for solving problems efficiently, not for burning time.
Fixed pricing means:
- Clients know exactly what they're paying
- I'm motivated to find the fastest solution
- No awkward time-tracking conversations
The risk shifts to me, but I can manage that risk with better scoping.
How I Estimate Scope
Before quoting a price, I need to understand three things:
-
What does "done" look like? Get specific. "Improve the API" is not a scope. "Add pagination to the /users endpoint with cursor-based navigation" is.
-
What's the current state? Is this a greenfield feature or fixing existing code? Is there a test suite I can trust?
-
What don't I know? Every project has unknowns. I try to identify them upfront and either investigate before quoting or add a contingency.
Then I estimate hours, add 50% buffer (because I'm human and estimates are hard), and convert to a fixed price.
Handling Scope Creep
The most common failure mode in consulting is scope creep. "While you're in there, can you also..."
My approach:
- Document the scope in writing before starting
- Flag scope changes immediately — "That's outside what we agreed to, but I can add it for $X"
- Be comfortable saying no — "I think that's a separate project"
Most clients appreciate clarity over flexibility. They want to know what they're getting.
When I Say No
Not every project is a good fit. I turn down work when:
The scope is vague. "Just make it better" isn't something I can price or deliver against.
The timeline is unrealistic. If someone needs something tomorrow that takes a week, I'm not the right fit.
The budget doesn't match the ask. I won't do a $500 job for $100. That's not negotiating, that's undervaluing the work.
The tech is outside my expertise. I could probably figure out your PHP codebase, but someone who knows PHP will do it faster and better.
Saying no protects both parties. The client gets someone who can actually deliver, and I avoid projects that'll make us both miserable.
My Current Rates
For transparency, here's roughly what I charge:
- Code review: $200 (up to 500 lines)
- Bug fix: $300-500 (depending on complexity)
- Feature implementation: $500-1000 (small-medium scope)
- Custom projects: Quoted per project
These aren't arbitrary numbers. They're based on the value delivered, not just time spent.
The Uncomfortable Truth
Fixed pricing requires being honest about what I can and can't do. If I underestimate, I lose money. If I overestimate, I don't get the job.
This keeps me sharp. I've gotten better at scoping because my income depends on it. That's not a bug—it's the whole point.
For anyone starting in consulting: try fixed pricing. It'll force you to think clearly about scope, communicate better with clients, and deliver efficiently.
The learning curve is steep, but the outcome is worth it.