The Curious Nature of Hourly Rates
There are some services for which I think the model of charging based on an hourly rate is appropriate. Software development is not one of them.
Consider: some services fit the hourly model to a T. These are jobs where the hours spent are directly proportional to the value realized by the hirer. It makes sense that getting the hour long massage costs roughly double what the 30 minute session does. Or manning a reception desk. When somebody needs to be there, every hour that a body is there that creates value and fulfills a need of the hirer.
But software development runs counter to this notion. We programmers are pretty much always hired to solve a real problem stemming from a real need, not to provide hours of coverage hunched over a keyboard, and certainly not to provide extended enjoyment for the client by virtue of working longer hours (the massage therapist might hear the phrase “hey, that’s nice, why don’t you do that a little longer?”, I don’t think a programmer ever has).
No, in software development it’s virtually always the opposite: the longer a project drones on, the more painful it is. Just ask any stressed-out looking project manager who keeps getting excuses and pushed back deadlines from her development team.
But doesn’t more hours mean more quality?
Maybe, but that correlation is sketchy at best. To realize a given set of features, a pro can often do it both better & faster: the number of hours spent becomes an argument against quality, not for. (I’m much more apt to trust that a WordPress install got done right by someone else if it took them 15 minutes rather than 3 hours.)
Programmers can (and should) be hired on the overall demonstrable quality of their work, and a review of their portfolio plus a mutual understanding of the level of thoroughness/quality that is called for (throw-away prototype or enterprise level masterpiece?) keeps the fixed price model honest. (Because yes, without that mutual understanding a developer could hack the fixed-price model by racing through a project and cutting corners, to say nothing of whether or not he’ll be hired again).
Alignment of Priorities
If we can assume that a contractor is guaranteeing satisfaction (and we probably should, right?), than a faster execution of a fixed-price project is in the best interests of both parties. The client gets what they need sooner, and the effective hourly rate of the contractor is higher. When an accurate sense of the quality to be expected and a correlate price tag are established, the fixed price model creates this nice alignment of priorities between contractor and client.
By contrast, hourly creates a misalignment of priorities of client and contractor: the contractor gets rewarded for dragging their feet and making problems out to be more complex. Not a huge amount of course, because in the logical extreme they’d get dumped sooner or later. But it’s just too easy to milk the clock and divert energy from actually solving the problem, to instead convincing ones self and others that it’s more difficult than not.
Effective software development is all about fewer smart hours as opposed to longer hard hours. Pricing for it should probably then reflect that, and by the same token programmers should probably strive to avoid the Curse of the Hourly Wage.
Next: Selling Less is More
This is Programmer for Hire, a series of essays and explorations on the art of being a great programmer doing on-demand custom software development.
Looking to up your game as a programmer for hire? You can get one-on-one coaching from the author of this blog.
Looking for help and advice on how to get your programming project done? The author can help you as well.