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?


3 Answers 3


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.

  • When you do bill for the obscure, do you break out an estimate of how long this learning will take up front?
    – codeyoung
    Commented Sep 19, 2010 at 19:58
  • 3
    I generally bill it under Learning and Development Environment Setup, with a bullet list underneath which includes a list of the things I'll be getting up to speed on during billable time. At first it's a bit tough to estimate, but like all estimation, with practice I've gotten quite good at figuring out how long it'll take me to learn something. Also included here is anything unusual I have to install or configure in my development environment.
    – Pax Noctis
    Commented Sep 19, 2010 at 20:04
  • You should let your client know when you will be charging for learning (and why). There are valid cases for doing so, but surprising your client is never effective. Commented Nov 21, 2010 at 21:37

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.


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).

  • 1
    Agreed. Your client hires you with an understanding of what skills you bring to the table. If they want you to have skills over and above what you have to offer, then they need to invest in that. Conversely, I also spend a good deal of my own time building my own skills so that I'm more attractive to prospective (and current) clients.
    – Joel Brown
    Commented Sep 20, 2011 at 12:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.