34

So you take a contract where you have solid experience with 75% of the technology necessary. How do you handle your time to learn the other 25%?

Work it into the billing time? Expose the 25% in the contract as 'research'? Do the learning on my own time (not billed)? Not take the contract (too large of an unknown for me and the customer)?

On the extreme end of this, I keep hearing a story about Mark Cuban (Dallas billionaire who started broadcast.com and sold it to Yahoo!) when he was at Indiana University. Someone asked him if he could build a business app for them and he immediately said "Yes"... he had no idea how. So he bought a book, stayed up nights, studied and coded... He finished it (I'm sure it was ugly), it worked and he kept going.

I'm not suggesting doing contracts this way (the stress!), but there's a middle ground. What is it, and how would you (or would you?) bill for the unknown?

codeyoung
  • 2,056
  • 16
  • 19

3 Answers3

28

If I'm learning something that I'll take away with me (like say a mainstream new API, or a new feature of .NET or a language that's somewhat useful) then I don't bill, I consider that time time spent sharpening my saw, and it's not the client's fault I didn't know that stuff yet.

Now, if it's something obscure, I bill for it at my normal rate. Some examples: APIs and protocols which are not mainstream (industry specific, small 3rd party or just niche products); internal tools, configuration formats and services inside the client organization; a non-standard database schema, database query language or security model; etc.

I've never had any objections about the way I do this, and I'm very transparent about it in my proposals.

26

If I do something for a client that I wouldn't be doing soon for other reasons, the client pays for it.

I find it works best to value myself in a manner like other professionals do, such as doctors, lawyers, and accountants. Everybody who's not explicitly "pro bono" pays for time and effort - and the only charity programming I do is on open source projects.

Some potential clients balk at paying for things like travel time, learning time, etc. I then explain that I'm not going to take time a different client would pay me for, and give it to them for free. Their reaction is a good litmus test of whether they'll be reasonable in the long run.

Like other contracting headaches, this has become much easier since I gave up on fixed-price contracts and went to strictly hourly. My invoices include a day-by-day summary of work, and I'm not shy about remarking on research or learning. Also, I inform my clients beforehand of time-consuming research and get explicit approval before proceeding.

Bob Murphy
  • 16,098
6

Regarding the Mark Cuban story, I refer you to the Cult of Done Manifesto, point 4: Pretending you know what you're doing is almost the same as knowing what you are doing, so just accept that you know what you're doing even if you don't and do it.

On the main question, when I was freelancing, I took the position that anything I do for one client is taking up time I could otherwise be using to do work for other clients, so everything was billable. Time spent learning new technologies or experimenting with new techniques was billed as "research", because that's what I was doing, and it was normally billed at the same rate as everything else (although I did make rare exceptions for small clients who wouldn't otherwise be able to afford it or for tech that I wanted a specific excuse to play with).