44

I am developing a project for a client where I have a little bit of experience in a particular clientside framework - however not that much. There are times I have to go off and spend anywhere from 10 minutes to several hours researching something to understand it.

I told the client upfront that I wasn't a hot shot at all the technologies the site is using. However, being a 'normal' programmer I probably underestimated the time I thought things would take to get right, in other words where I thought something would take 5-10 minutes, I have found in many cases that it has taken up to an hour (or even two).

On a hourly rate situation as a freelancer to fix a number of issues for this particular project, should I keep the billing meter running while I'm off learning about a particular piece of functionality in a programming language or should I pause things?

3
  • 3
    I've edited the title to more accurately reflect your question. As I read it you're asking if you should bill for your 'learning curve' not for 'research'. Very different things.
    – Steve
    Commented Jan 21, 2013 at 15:05
  • 1
    This question is about a specific work function (Billing) as opposed to being about general workplace activities. While I realize this is a common problem it is outside of the scope of this SE. Commented Jan 21, 2013 at 20:41
  • @Stephen Yes, thanks for that - I can see how that makes it more clear. Commented Jan 23, 2013 at 4:40

8 Answers 8

63

It depends.

On the most part you do not bill for your education. Your 'payment' for it is the fact that you now have more experience and a more diversified skill set - that is in itself valuable.

However, this is conditional on the popularity of the framework. Some people end up working with arcane or very niche technologies, and the typical going expectation is that when you start looking at that sort of code, your ramp-up time should be compensated for. The problem is that the line between niche and mainstream technologies is often blurry. This is why IMHO the best way to go is to be very explicit about what you know and what you are familiar with and then bill for every hour of 'work', where work is defined as any time spent getting the project from where it is now to where the client wants it to be. This is fair because when it comes to experienced developers and multiple frameworks, the probability of finding someone with the exact skill set is very low. Most hiring managers settle for 'close enough and smart guy/girl'. At the end of the day, every project requires a new developer to take some time to figure things out. This is normal, and sometimes it involves brushing up on frameworks while other times it just means learning the models and workflows.

In closing, I'd like to say that this is fundamentally a question of bargaining power. When a client is looking for a .NET developer, the expectation is that you know .NET pretty well and aren't coming in to learn it because of the large sea of .NET developers out there. If the client is looking for someone with a list of cobbled-together interchangeable open source components, then due to the supply and demand of the market, the probability of finding someone exactly like that is so low that it's expected that developers will be compensated for learning it.

6
  • 5
    this is the answer
    – itaitay
    Commented Jan 21, 2013 at 16:00
  • 9
    +1, I would add that if the client and developer have a history of success on other projects, it is not unusual for the client to continue using the developer even where their skills are a stretch for the new project. Many times familiarity with the customer and problem-domain trumps deficiencies in knowledge about the particular technology platform being used. Under such circumstances it is "OK" to bill for ramp up time.
    – Angelo
    Commented Jan 21, 2013 at 17:41
  • 3
    Yeah, I didn't want to add my own answer since this one is very good, but it really comes down to your relationship with the client. I typically bill for ramp up time if it is known going in that I will need to learn stuff, but do so at a very reduced rate or alternatively, I'll take the project at a fixed price for the project if it is small enough to justify a fixed price. My reason for billing at a reduced rate if they still want hourly is to make sure they have an idea of how much time is really going in to it as well as to help discourage rushing before learning enough to do it right. Commented Jan 21, 2013 at 20:14
  • 2
    I upvoted this answer as "the best" but I would like to point out that one avenue that hasn't been considered is simply discussing project related concerns to the client. Is it going to harm/improve/not-impact your relationship with your client if you clearly explain your situation? It is an excelent place to open a dialogue about how they would prefer you to handle this sort of billing. Perhaps the Client understands that their technology requirements are obscure, and that learning them is an obstacle to completing the project, and are willing to (help?) foot the bill. Commented Jan 21, 2013 at 22:28
  • 2
    If for a project I have to educate myself on a technology that is old-ish, unmaintained, sluggish, poorly documented, that I don't enjoy and that I am for sure not going to use in the future, then I totally want to be paid for that. On the other side, I might discount that learning time, if what I have to learn is something that gives me value for future projects. – In any case I (personally) strongly disagree with Definitely don't bill for your education; I believe that is neither healthy, nor gratifying, nor sustainable. Commented Apr 4, 2021 at 6:18
14

I don't believe you should directly bill for this type of thing., However, your hourly rate should be high enough to allow you to spend time on educating yourself for all clients and for other down time (when you have no work or are doing administrative tasks like creating bills or looking for new jobs). So suppose you want to make (numbers completely made up and not a reflection of what you should actually charge.) $20 an hour. Normally in a week you might have work for 30 hours. YOU might spend 7 hours in educating yourself and anther 3 hours doing necessary tasks like creating bills, looking for more work etc. Now you also would like to be able to take some days off without it hurting your pocketbook and you need to cover your own benefits like retirement.

So for each hour you actually work you need to charge 20 for the task, 7 to makeup for the non-billable work time (rounded to the nearest dollar) and 3 to give you some money ahead to take some vacation days and 7 to pay for benefits. So your hourly rate is $37. Now you are billing only for actual work but the rate is high enough to cover everything else.

1
  • 1
    +1 for making sure you're billing adequately. In some industries, for freelancers, 50% of your work week may end up being non-billable.
    – DA.
    Commented Mar 1, 2013 at 3:01
10

It sounds like you want to bill the client for your initial lack of preparedness in taking on the project. From the perspective of a client, I would expect the person that I hire to possess the skills necessary to complete the project before they begin the project. Even if they didn't, I would, at the very least, expect that the time for which I am being charged is the time required to complete the tasks directly related to the project, not the time you would need to acquire the knowledge in order to complete the tasks.

That being said, if my needs were unique and you fully disclosed that you would require the acquisition of an additional set of skills to complete the project which would require additional compensation on my part before you began working on the project or subproject, it would then be my decision whether I compensated you for your learning time or chose not to do so. The key is the disclosure.

From an ethical standpoint, you painted yourself in a corner with your initial underestimation. You can just suck it up and chalk it toward experience (as in "I'll never do that again") or you can pad subsequent bills for this client to cover your education. Regardless of what you choose to do for this project, I would suggest giving yourself a little more cushion when estimating future projects to cover this type of situation (and others you may not have experienced yet).

5
  • Well, that totally depends if there was open communication in the first place with the customer. If there's no discussion about budget, roadmap, business introduction, or any on-boarding whatsoever, then your learning time should be billed. Also, wouldn't you bill the time that you need (as a software engineer) to explore the legacy/previous codebase, take confidence with it, learn the perks of the specific project, implicitly business & tech information from the code already present? – Your reasoning make quite some sense, but just exclusively for fresh/new/greenfield projects. Commented Apr 4, 2021 at 6:28
  • You call an electrician because you need to add some outlets in your home. The electrician doesn't tell you he has never installed an outlet before. Part of his "education" requires him to remove some drywall to get examples of how the other outlets in your home are wired. Finally, the work is done. The job took him considerably longer than an experienced electrician would have taken, plus he doesn't do drywall, so you're going to get stuck with that repair bill on top of the additional outlets, because, as you said, his learning time should be billed. How would you feel about that?
    – Neil T.
    Commented Apr 5, 2021 at 20:39
  • 1
    @NeilT, surely the difference is what people regard as learning the trade in general, and learning a client's particular setup. Performing electrical work on a commercial basis is also subject to regulations and training requirements in many jurisdictions. Software isn't subject to such requirements.
    – Steve
    Commented Nov 5, 2021 at 11:27
  • You absolutely need to factor in the time required to learn the client's requirements and environment, but that's not what the OP posted. The OP wants to bill for learning about the framework he has experience in, but not enough to complete the project. If this was a proprietary framework unique to the client, it's understood you will bill for the time to learn because there are no other available options. If I'm going to subsidize your education while putting my deadlines at risk, at the very least, I would want to be informed in advance.
    – Neil T.
    Commented Nov 7, 2021 at 1:24
  • I expect an electrician to know how to change an outlet as a base skill: like writing a class; it's not like learning a specific framework or vendor. Each job is variant, depending on project/infrastructure/legacy; a profi can't magically know all you need; especially in a field like software. In the case from my 1st comment, no proper introduction was provided by the client; like in the example from your last sentence, here it's the client fault to not have "informed in advance" the professional. You don't hire a lawyer at a price & tell only after that you needed a specialist in murder. Commented Nov 15, 2021 at 13:24
8

There are good answers here, but I want to add something I've not seen mentioned. One consultant/contract programmer I was once acquainted with told me that he sometimes charged half his usual rate when he took on jobs where he would need to learn a new technology. In these circumstances, he was up front with the client about his (lack of) experience, so their expectations were set lower than they might normally be. Also, he only did this for technologies he was interested in learning.

1
  • Yes, being interested in the technology that you have to learn for the project, is a big factor in eventually discounting your working time. If there is no real value for future works or any pleasure in what's learned, then that education time needs to be paid. Commented Apr 4, 2021 at 6:31
7

I look at it the same way I look at hiring a contractor to do work in my house.

He doesn't bill me for use of the truck, nor for the use of the tools. But he does charge me enough for his labour to amortize those costs over a reasonable amount of time.

You've got to look at the total cost of your employment, and set your hourly rate over all jobs such that you can recover these costs.

Assume 2000 working hours a year, and a desired income of $50,000. That's $25 an hour.

Now put in 50 hours of learning, 200 admin, and we've reduced the billable hours to 1750, meaning our hourly rate now needs to be $28.50 to make the same income.

4

I look at the billing rate. As a contractor I take a range of projects. The projects range in how interesting they are and the billing rate.

If we say that 1.0 is the typical amount I bill, I will find myself on projects project that pay anywhere from 0.7 - 1.8.

So how I feel about billing for ramp up has a lot to do with the bill rate. On typical projects (1.0) I assume a 2week-1month ramp up. But I expect to have most of the technical skills needed.

On a project where I'm billing 1.3-1.8 I feel under the gun to be perfect, over perform and even under bill if I'm not proud of my work.

On a project paying 0.7 I am completely relaxed about learning on the job. In fact, I probably took the gig to learn.

1

Does anyone pay me to go to school?

If I'm a research Assistant or PhD, and doing groundbreaking work, then yes. Otherwise, no, cost of education is upon the individual.

Whether your schooling is at a typical university, or via vocational programs, this remains the same.

If the client's tech needs are no longer taught, and they can't find anyone else to do the work, then they pay for your time to research the solution.

3
  • 1
    I've seen several large companies that will pay for employees training courses and education because it means they get better-educated employees. MBA programs are often paid for by companies hoping to improve their managers' skills, for example. Commented Nov 4, 2013 at 20:32
  • The context of the question was as a freelance developer. A corp with W2 staff is developing the skills of 'their family' — a freelance employee is a sever-able service the business understands to be time-boxed. The only grey area is around labor laws that attempt to protect people from corporations that use this as a tactic to lower benefits Commented Nov 30, 2018 at 0:31
  • That's not the point. What's billable or not is exclusively depending on what are the initial agreements and expectations. If you have to learn something that you aren't going to reuse for future projects, then you should be paid for learning that; otherwise your are giving away your working time for free to your client (that potentially is the one requiring you to learn something that you does not give you back professional value). Commented Apr 4, 2021 at 6:35
0

To add my 2 cents worth - the more generic the issue, the less likely I am to bill time. If someone said they wanted me to write a system, and told me to do it in Ruby on Rails, I would be 'off the clock' while I was learning the fundamentals of ROR. First, this will be amortized over all future projects, since I'll have to know it to do any more ROR work. Second, I would pretty much have agreed to the project because I intended to learn ROR. The customer had a reasonable price in mind, and my charges would significantly outrun that price if I billed my educational hours.

A client asked me for something in C#, and I realized the right way to do it involved coding a 'custom comparer' for sorting elements in a collection. This would not necessarily amortize into other projects, and I could have done it another way that might have gotten the job done but would have been clumsier. I billed the client for this time, which in this case was about an hour. If I had done it via means I already understood, they might have saved half an hour - at least at the beginning. I can't speculate on whether this would have cost them at least as much later on in some maintenance issue.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .