When I penned down some simple thoughts on the way I work with a single client, I didn't expect the flurry of activity that followed it. 150,000 visitors from all over the world, more than 350 comments here, on reddit and on Hacker News. I probably hit a very sensitive nerve of the developer community. I'll try in this post to sum up the various comments and perhaps clarify some of my original points.
YMMV
The obvious point - I've described a way that I work that found works for me, at my current situation, with my current experience and my current client. I'm not advocating this as the solution for all software business issues. In fact, next year or even with the next client I might do things differently. Right now, however, this way Works For Me.
The response
A lot of very good points were raised, and I'm certainly wiser from them. A big thanks to everyone who replied (including guys belittling me or my work experience, being grounded now and then is valuable, too).
This works for only a specific kind of project
Certainly! This particular project is small and also a bit open-ended, the client has an idea of where he wants the application to go and is looking for someone to help him implement it. It's not something that has a clearly-defined boundary. Billing hourly in this case means the client can spend his limited budget on the things that give him the best bang for the buck.
Larger projects/organisations need fixed quotes
Of course, the moment you have to get an actual department to give you money, billing hourly will not work. They will need to see a fixed bid, or if you're lucky a non-binding, best-effort estimate. Being somewhat inexperienced in those things, I shy away for fear of getting burned. People with more experience might prefer those because if you play your cards right you will have a higher margin.
If you were more experienced, you'd be able to give accurate estimates
Definitely, if you have created the same thing 5 times already, coming up with a reasonable estimate is easy. In fact, after I saw the code I had to work with, I was able to provide very accurate estimates myself, never once going over. But would I commit to an arbitrary estimate before getting the chance to investigate? No. Would I agree to spend 3 days scoping out free of charge? No.
Given a detailed set of requirements, fixed bids are possible
Related with the previous point, if someone has a detailed set of requirements, and they are absolutely certain that's what they want, you may be able to give a fixed bid. However, I maintain that unless they got a software developer to draft up the specs, they're not going to be in the form required to give accurate estimates (and even then the chance of missing parameters is present).
How can the client trust you to be good, fast and honorable?
That's obvious - they can't. However, the potential client has already spent 1 hour on the phone and 2 hours in face-to-face meeting with me, explaining the application and his requirements. He has already had the chance to judge some qualities of my character (What kind of questions do I ask? Do I write things down? Do I understand the business concepts?). Hell, in many cases an organisation will hire an employee with less of an interview than this. Certainly a client can spend a few hundred bucks to see whether I can deliver on my promises. What if I made a fixed bid, got a down payment and produced crap?
Better developers will spend less time. What should they charge?
They should charge more because their hourly rate will be higher. I'll worry about it, when/if I reach this stage.
The client is often clueless
You need to protect yourself from them. The alternative is educating them, but you have to make sure you are compensated for that, otherwise you will be doing spec work for free.
Charge not the cost, but the value
A very good point. If I bill $600 dollars for something that gives the client a $20,000 value, didn't I get the short end of the stick? Probably. Depends on how content I am with even the short end of the stick. Perhaps as I get more experience with projects, I'll be able to pull off higher margins. Until then, I'd rather be safe.
Psychology of hourly rates
A very good point. A lot of time, the hourly rate you'll quote will be higher than someone's salary. Of course it's not a valid comparison, but it's hard to get that point across. It seems that fixed price is easier to swallow, even if the total outcome is the same. I've run into this myself.
Shower time!
Do you bill for time spent thinking in the shower? I'll leave that to my judgement for any given time. Time spent on the couch deliberately thinking, though, is definitely accounted for.
Honorable mentions
http://www.bestbrains.dk/Blog/2009/06/03/CollaborativeAgileContracts.aspx
A very good idea - a nominal hourly rate, less than the usual, to cover your costs, then a set of fixed payments upon certain milestones. I might try that on my next project.
There's more
There's more than 250 comments in reddit I didn't have time to do yet. I'll update the post when I get round to it.
Some more clarifications
To all people asking about what do I use for my automated reports, I'm using Harvest. The reports aren't completely automated, in that I have to click the actual buttons, but I'm getting essentially a report of the uninvoiced billable hours so far in a nice item list than I can send as PDF to my client.
One important aspect here is that the Greek IT market is completely random. The phenomenon of the "nephew that could do that in 2 hours" is rampant, a lot of unqualified people that claim they are web developers because the can setup a Wordpress blog are skewing the prices down. In this environment, and with a lowest-bidder-wins attitude, a fair fixed bid will have a hard time surviving. A high hourly rate sends a different message about personal value that I want to maintain.
Excuse me while I raise a sociological point - a lot of the feedback on hacker news was about how billing hourly will not scale. That is a) absolutely correct and b) somewhat irrelevant to me. I'm at a stage of my career where I'm trying to gather experience and expertise, scaling a business is not a priority. My current system suits my needs, gives me an incentive to put in the hours daily (I work from home and motivation can sometimes be hard to find), and allows me to know my monthly income. It's a very good safety net that will protect me from getting shafted or burnt-out.
Comments
Comment by xtian , 1 year, 6 months ago :
Hey Orestis, I really enjoyed both of these posts. I definitely agree with the points you're brining up.
At a consultancy I used to work for, they were doing a lot of fixed-price work (eg. for goverment departments), but they were trying to move people towards what they called target pricing.
They'd quote a target price, which was an estimate with a reasonable amount of contingency. (These quotes always had a fair amount of upfront investigatory work as well.) If the project went exactly to budget, that's what the client would pay. If it took less time, the client and the vendor would split the savings. If it went over the estimate they would split the extra cost, up to a cap - after that the vendor wore the cost of extra development, but the cap was generally pretty high.
In a fixed price quote, once the quote is agreed and work begins, it's in the vendor's interest to keep the scope fixed, even if the client's needs change (as they inevitably will), and to have any new requirements paid for as change requests. Conversely, it's in the client's interest to jam as much stuff as they can into the original project, rather than as extra changes. So the relationship becomes adversarial very quickly. Target pricing aligns the motivations, so that both parties benefit from underruns and suffer from scope creep.
I still think that the XP way of estimating and scheduling that you've laid out works better (since it can accommodate change far more easily), but target pricing is a kind of middle ground that might be a good way to build trust before going to a time-and-materials footing.
That said, the place where I was working still had trouble selling it to clients - they were competing with vendors who were offering fixed-price quotes. Often the competitors' strategy was to deliberately bid a very low fixed price, in the expectation that they could milk the client for lots of changes once they had the contract. (I know this because I'd worked at one of those places as well - it was a crappy environment.)
This was a while ago, though. It might be an easier sell nowadays.
Comment by Orestis Markou , 1 year, 6 months ago :
Nice comment you cooked there ;)
"they would split the extra cost" - doesn't that effectively mean that the vendor gets to work for half-price?
The most appealing contract type I've seen so far (as a comment in the original post) was the one where the vendor works at a reduced rate until certain milestones are hit, when he receives an agreed upon lump sum. In any circumstance, the sum stays the same. When exactly aligned, the total would be the original cost. When finishing earlier, the vendor has a high margin. When finishing late, the vendor works effectively for a reduced rate, but still receives the lump sum.
Now that I've typed that out, it looks very close to the target pricing you've described ;)
Comment by xtian , 1 year, 6 months ago :
"Doesn't that effectively mean that the vendor gets to work for half-price?"
Yes, it does - that's the vendor's incentive to finish below the target. With fixed pricing they get to work for free! Or you have a very unhappy client, because they have software delivered that doesn't do what they (now) need.
What you're talking about is similar, but it misses the incentive for the client to not try to jam extra things into scope. Their need for extra features is balanced (hopefully) with the knowledge that each one costs them money.
Comment by Alex Fatkulin , 1 year, 6 months ago :
I think what you should consider going forward is the following:
1. Everything else you buy in your life is fixed-price. When you buy a car do you ask "oh but how many hours it took you to build it"? Would you even care?
2. Customers buy results, they don't care about how many hours you've spent. If you've spent 8 hours on something and another guy spent 2 on the same things (because he's done the same in the past) -- do you think your work is worth 4 times more to the customer? If not then why should he pay 4 times more money?
3. You can leverage change orders for scope changes.
4. Look at the legal profession and what hourly billing has done to them. The more time they spent the more money they earn. They have zero incentively in actually resolving your case. This doesn't come fast. But this direct conflict of interest will slowly eat into you and your team. Lawyers been there and done that (and still do).
5. Billing hourly is billing for the labor and it's a direct descendant of Marx's labor value theory. It was proven wrong more than 100 years ago (that's why most other business don't change by the hour, it's not what the customer's buy). Google for it. Then Google for the marginal utility theory.
6. You're just shifting all risk to the customer. Missed requirement -- customer pays more. Don't have experience -- customer pays again. In fact the more clueless you're about what you're doing the more money you're going to earn.
Not saying you gonna change or anything. Just think about how it's working for you.
This post is older than 30 days and comments have been turned off.

Comment by Jonathan Hartley , 1 year, 6 months ago :
Crikey, I read your last post without even realising it was penned by you! Dehumanising readerstream.
All you wrote sounds eminently sensible to me, and agrees with a lot of my own memories of doing contract work for various companies, government agencies and individuals.
Jonathan