As a freelance Software Engineer I don't charge per hour anymore. There are several reasons for this, and I will try to expound them here in a clear and concise way.
There have been tons of articles written about freelance rates and pricing, and generally I do agree that sometimes hourly pricing or fixed price has more sense depending on the project size, scope or other considerations. But here I am talking about the day by day regular work that can span several weeks or even months.
I have been freelancing full-time the last year and a half, and I also did some freelance projects before. In general, I had really good experience with my regular clients, but I also had some problems at billing with new ones. I don't think it has been due to my clients, as I am usually pretty demanding of myself and blaming others is not the best way of improving, so I keep on trying to enhance my workflow, and billing was a big pain point.
I keep on using hourly rates when I am doing maintenance tasks or fast/easy fixes to already running projects, but I find it faulty for the regular work due to:
You are selling yourself cheap, and as more effective you get, more cheap you are
If you are an individual that works hard to get better day by day, improving your workflow and effectiveness any time you have a chance, hourly rates are pretty bad for you. The thing is, if a more junior developer will take 2 hours on getting a task done and you will take only 1, the Junior developer will earn more than you from the same work done. That does not make too much sense, right?
Psychologically it influences you
@deambulando told me once, that with hourly billing I was putting a price to my hours and that will turn me into a slave of my work. At that time I didn't think too much about it, but now I think it's true. What happens when you are taking a break or resting during the weekend while you could be earning a good amount of money for that time spent on the park? I guess it depends on the person, but charging hourly can happen to affect even your social life.
They have a ceiling of what you can ask
There is an arbitrary limit on the amount you can ask per hour. It happens as well with weekly and fixed prices, but less. Regarding that ceiling, you can read some interesting insights on the 2012 Freelance Industry Report[pdf] by Ed Gandia.
Clients want to know the cost, so if you estimate wrong, then you get in trouble
At the end of the day clients really want to know how much it will cost, and I think is a reasonable desire. So given that you have set a fair hourly rate and make an estimation for the task, what happens when it turns out to be much more complicated? Let me tell you: you will start feeling bad about it, working extra time without billing, fearing about your relation with the client and rising your stress level, producing guess what? Less quality work.
Allows infinite back and forth, with context switching wasted time and no sense of finalizing
This happened to me lately. I was working in a marketing platform for a rapidly growing client and charging hourly. The project was going fine, on time and with good feedback from the client. I was thinking already on wrapping up the project when a new marketing guy arrived at the company.
As you can imagine he had different ideas about what was right about the content and design of the site, so we started a back and forth of feedback and revisions that took a whole week.
This not only made me lose a lot of time on content switching, but generated a feeling of frustration that I have rarely experienced on any project. It's true I could have handle it in a better way, but if I only had booked a fixed amount of time for them, I am sure they would have been more efficient with that feedback.
Time tracking is a must
I don't care too much about this, as I usually track my time on a Google Calendar even on non hourly rated projects, but it could be troublesome and time-consuming sometimes. Also, as Brennan Dunn pointed out on his great post The Definitive Guide to Project Billing, sometimes it feels bad to charge for meetings, long emails and related tasks (but you should!).
My second favorite way of billing. Pretty useful when its about a small thing that is clearly among your specialities, but with some caveats:
The scope should be really detailed
The good thing of fixed prices is that the improvements on your effectiveness are worth the time. But this will only happen if the scope and planning of the project is really well-defined. That takes time, and you will always forget about something!
The scope is never fixed so there are "Scope Wars"
I think that having a fixed scope and finishing the project without any addition is a really hard and rare thing. In my opinion this is something inherent to the Software Development field. Just think about the issue of maintainability and its importance on software to get an idea of how much things change.
Applied to the project itself, it comes down to discussions about if this was included or not, and if we will need to sign a different agreement. Personally, I am really afraid of this situation, as I always end up saying yes to everything.
You shoot yourself on your feet sometimes
I guess this is inevitable, developers are optimistic by nature. Even if you have been on the field for a while, added a security margin or decomposed the project in smaller parts to improve your estimation, there are times when your calculations will fail, and that will go on your account.
Any nice addition on your part will reduce your revenue
It is sad, but when you know that any extra thing that you can do for the client will work against your financial status, you will think it twice before adding those nice Microdata, humans.txt, Facebook Open Tags and related details that make you proud of your craft.
Then, is weekly billing the freelancer's Utopia? I don't think so, but I really think it works better, at least for me because:
A week can be considered as a small Agile sprint, so you can set up a planning meeting with your client where you will talk about the priorities and how you can add more value to the company. The idea is to communicate that you will be theirs for the week and can do whatever they decide to fit on it.
Focus on adding value to the client
No stress from bad estimations, scope wars or context switching. You will be focused on adding value to your client and nothing more.
You can really do a job you will be able to share and be proud of
Or at least you will be a lot closer to it. There is not a reason why you won't add that little details that bring a product from good to outstanding.
No context switching
You will be able to get into the zone and work with less stress and distractions. That means better quality work and more effective time adding value for your client.
Improved cash flow
Not necessary to anxiously check the mailbox waiting for that check that will allow you to pay the rent on time, or having bad times asking half of the project cost beforehand, creating a lock in well described on Curtis McHale blog post about weekly billing.
Maybe it is because of my personal biases, but in my case weekly billing the win-win relation that I search for with my clients. Basically my focus is in adding value to the client's business, avoiding the "scope wars" of fixed price projects and the fast and unprofessional work of hourly rates.
What about you? How do you charge as a freelance? How do you prefer to pay as client?
- Podcast: The Freelancer's Show: Weekly Billing
- Smashing Magazine: How To Guarantee Your Income with Agile Billing