Early on I billed by the hour, like most freelancers. I stopped after a client asked me a fair question: "Why should I pay more because it took you longer?" I did not have a good answer. Five years later I still do not, so DevKey Technologies does not bill hourly.
What hourly billing does to a project
Hourly billing puts the client and the developer on opposite sides of every decision. The client wants fewer hours; the developer is paid for more of them. Nobody behaves badly on purpose, but the incentive leaks into everything: a bit less pressure to simplify, a bit more willingness to gold-plate. It also makes every invoice a surprise, and clients who get surprised stop trusting the estimates that follow.
The only thing hourly billing is good at is protecting the developer from vague scope. There is a better tool for that.
Fixed scope, with a real discovery phase
A fixed price only works if both sides know what is being built. So the first step is always discovery: a free call, then written questions, then (if the solution itself needs designing) a short paid discovery sprint that produces screens, a data model and a written scope.
From that scope we quote one price, paid against milestones. Each milestone ends with a demo you accept before the next payment. If you ask for something outside the scope, we write it up and quote it before building it. That is the whole system, and it is boring in the best way: nobody is surprised by an invoice.
We take the estimating risk. If we underestimate, that is our problem, and it makes us estimate carefully, which is the point.
Retainers for products that are alive
Once a product is live, fixed scope stops fitting. The work is a stream of improvements, bugs and small features, and nobody wants to write a proposal for each one. A monthly retainer covers it: an agreed number of development days each month, a shared priority list, demos as things ship, cancel with notice.
Dedicated developers for teams that need capacity
Some clients have their own product team and simply need more hands. For them a named developer, part-time or full-time, works inside their tools and reports to their lead. Billed monthly. It is the closest we get to hourly, and it works because the client is managing the work directly.
When fixed price is wrong
Honest list:
- Research-style work where nobody can define the end state. Use a time-boxed discovery sprint.
- Rescue work on a codebase nobody understands yet. Start with a paid review, then quote.
- Clients who change their mind weekly. A retainer absorbs that better than a fixed scope, and we will say so.
What to ask any developer about pricing
Whatever model they use, ask: what happens when scope changes, what triggers each payment, and what do I own at the end. Clear answers to those three questions matter more than the rate.
Our answers are on the pricing page and the process page.