130

I am really confused with this. I believe that the more I am getting experience, the more I am becoming an expert at finding mistakes and fixing them quickly.

Now my boss got website from a programmer who does very very bad coding. Now he sends the list of problems to fix.

Suppose it's the stylesheet problem, and the old guy does not know how to fix it, but due to my experience I know straightaway what the problem is, and I can fix it in two minutes and many similar problems like that.

But after fixing all that I realise that I fixed all problems in 15 minutes which other guy was not able to solve.

I get 25$ per hour, so I feel very bad charging 6$ for that list of things which took many years of experience to learn.

Is it OK to charge 6$ or should there be some way to charge things?

11
  • 9
    Sometimes you can contact by project, not hourly. :) Jul 27, 2011 at 11:45
  • 21
    I only charge full hours, so if you are not assigned any other work you can do in the rest of the hour, you should charge the full 25$
    – Petruza
    Jul 27, 2011 at 15:58
  • 51
    I don't think there is a programming thing that takes only two minutes to fix. In my experience you must always test for an hour what you write in a minute. If you are a freelancer, spend the two minutes to write and test for the rest of the hour than charge for one hour. Same for a 15-minute change. Once you hit 30 minutes, test for over an hour and charge for two. Jul 27, 2011 at 16:17
  • 59
    Reminds me of an old, probably not true, but nevertheless good story: This engineer is called in because a machine broke down. He looks at it, makes a cross with chalk on some machine part and says 'replace this part'. He charges $50,000. The manager is out-raged and requests an itemized bill to justify the cost. The engineer replies: Chalk - $1, knowing where to make the cross $49,999.
    – user12889
    Jul 28, 2011 at 0:31
  • 24
    There's thousands of users on SO giving 2+ min fix advice for free.
    – JeffO
    Jul 29, 2011 at 2:25

17 Answers 17

124

Such a good question because it is a problem we all face as freelancers. When I made the transition to being a freelancer, the hardest thing for me to develop was a time tracking discipline. For the first year or so, I just focused on project-oriented work, and really only bothered with timers when I was "in the zone" of coding. In time I learned what a huge disservice to myself it was for me not to track as much of my day as possible.

Even as I write this comment, I have a timer running entitled, "Blogging on Stack Exchange." But more on that in a second. First let's address your question.

As it relates to time tracking, one of the things I found as a freelancer is that there were certain clients who tended to have lots of little issues. As an amateur, and because I felt I was being a "good guy," most of the time I wouldn't even bother billing the client. Taking two minutes to fix a problem, which sometimes is all it takes, seems hardly worth the effort to start a timer. What I found however, is that over the course of a month, it was not just one 2 minute problem, it was 10 or 20 two minute problems. Taken by themselves, it was no big deal. Taken in aggregate I was leaving money on the table. But more than that, the client had no visibility into the quantity of work I was doing for them. As a result they tended to either a) undervalue my work, b) take advantage of me, or c) just take me for granted.

This is not a good relationship to have with anyone, especially a client.

Next, and as someone else pointed out. Nothing really takes two minutes. There is email, the phone call, the logging into the bug tracking system, and all of the other artifacts of a good process. The process, the customer service in speaking with the client on the phone, is all part of the value you provide, and thus should be something you are compensated for. And clients should know how much time is spent by you on the phone and answering email. There was one time I presented an invoice to a client that showed how much time was spent on the phone with them. They later told me that they had no idea, and that they worked to curb their tendency to default to calling me on the phone when they had a question. A fact I appreciated given how disruptive a phone call can sometimes be.

I also agree that you should bill in reasonable increments. I bill in 15 minutes increments, which is just a fancy way of saying, "I have a 15 minute minimum on any issue you want me to tackle." There are many reasons for this, but for me, the biggest reason is the hidden cost of context switching. For me to go from one task to another is not instantaneous. If only it were. Moving from one task to another often can involve me stopped to check email, go to the bathroom, look at G+/Facebook/Twitter, etc. One could say that I lack discipline, but for me this is integral to the process of me switching gears. Therefore, if I have 4 tasks on my plate that each take 15 minutes each, it doesn't take me an hour to complete them, it takes me about 1.5 hours. And that additional 30 minutes, is the hidden cost of context switching. And my clients pay for that through my minimum billable increments.

Many people have also mentioned and talked about the additional value you provide as a more experienced programmer. That fact that it takes you half as much time to perform the same task as a colleague is reflective not only of your superior experience, but also of a better process you have built for yourself in managing your clients. This all speaks directly to the value you provide and you should compensate yourself fairly for it. This requires you to understand what your competitors are charging relative to the quality of their work. Personally, I maintain close relationships and friendships with the other freelancers in my field, which gives me insight into this problem and allows me to adjust my rates accordingly. If you find that by and large you produce the same quality work in less time, then by all means charge more. If your clients can't afford it, then look for new clients and move up in the world. Leave the penny pinching clients, and the clients who don't value work provided to them by their freelancers to smaller fish. Refer those clients to other freelancers you trust and make them someone else's problem while you work on building up a clientele that pays you more fairly.

The last thing I wanted to share was something no one else really touched upon that I could see. Sometimes comping the client for the 2 minutes of work is the right thing to do from a client management perspective. Sometimes, giving them that time is what helps you build trust with the client, and firmly establishes you as the go-to person for them. It might also help you secure larger and more profitable projects in the future. Knowing when to charge and more importantly when not to charge is the hard part. But when I make the decision not to charge a client, I do go out of my way to tactfully tell them that this is "on the house." I tell them that I appreciate all the business they send my way, and that I don't mind taking care of this one issue for them. Its the least I can do, I tell them. They are usually very appreciative, and I feel it helps strengthen our relationship.

Now permit me to return to the timer currently running on my desktop entitled "Blogging at StackExchange." This is not directly related to your question, but helps underscore the importance of maintaining a discipline with keeping accurate track of your time.

From a business perspective, the most important metric you can track is profitability. Knowing how much time is spent doing billable vs. non-billable work is very important. It helps you establish and understand how much overhead exists in running and maintaining your business. It also helps you to identify ways in your business and process you can improve. If you realize at the end of the quarter that you spent a lot more time than you thought "blogging at Stack Exchange" and it came at the expense of actual billable work, then you might want to consider spending less time doing it. With regards to profitability though, what I find is that there is A LOT more time that goes into a project than the time that is spent coding. Not only is there all the email, and other tasks mentioned before, but their is the time spent securing the deal, billing the client, negotiating contracts, and the like. Much of this time is not billable, but knowing how much time you spend doing this might help you identify ways to streamline your business, and increase profitability at the same time. Let's say for example you charge $100 per hour, but that you spend roughly 50% of your time doing administrative non-billable work. Perhaps there is a person out there you could hire at a rate of $50/hour to take that administrative work off your hands. Then you could spend more time coding, AND increase your bottom line at the same time. Its a win-win. You are giving someone else valuable work, you provide a better service to your clients almost certainly, AND you make more money.

And there you go, 0.79 hours spent "Blogging at Stack Exchange." I will chalk that up to my marketing budget. :)

4
  • 6
    chalk that up. It does pay in upvotes at least, and a badge if I'm right. :-)
    – Joris Meys
    Jul 28, 2011 at 13:00
  • 1
    "Chalk" or "chock?" I am not sure. Jul 28, 2011 at 18:35
  • stackoverflow.com/legal/trademark-guidance, section "Proper Use of the Stack Overflow and Stack Exchange Name". Jul 29, 2011 at 1:56
  • 13
    @ByrneReese what time logging software do you use?
    – TehShrike
    Feb 24, 2012 at 23:10
66

You shouldn't charge 6 bucks, that's indeed a bit awkward. But, you are forgetting some stuff. I can't make out if you are a freelancer or not, but you should charge at least 1 hour. That's because you need to read the list of bugs, interpret them, find them in the solution, fix them, test if your solution works, publish them, probably let someone else test the solution and publish the changes to the customer. If you can do all that stuff in 15 minutes, well, you must be really good/fast.

I always charge per full hour. If something takes up 20 minutes, it's 1 hour on the bill. If another job takes up 1 hour and 15 minutes, it's still 1 hour. This way the 'extra' minutes compensate a bit.

8
  • 10
    Agreed. I can't think of anything that I would want to ship that took me 15 minutes to do start to finish. In 15 minutes I can barely load an IDE and find the relevant part of the code let alone, understand the bug, recompile, deploy, test, log test results, package, release, update SVN etc etc etc.
    – user1712
    Jul 27, 2011 at 12:43
  • 34
    Exactly right. A lot of newbies to the consulting/freelancing game believe that billable hours are hours spent physically writing code, because that's what they've been trained to believe in the employ of non-technical managers. Forget all that. Programmers and engineers are paid to think. Any significant amount of time that I spend thinking about a contracted job is billable time. Doesn't matter if I'm in my office, in the kitchen, on a plane, or in the toilet.
    – Aaronaught
    Jul 27, 2011 at 15:59
  • 3
    Everything has a minimum: even if your minimum would be the equivalent of a 1/2 hour charge - for those easy to fix things that only took you 5 minutes. Most of the time, I'd agree that a minimum of an hour charge is quite standard. It then gives you the opportunity to say, hey, you know I'll give you 20% off - it was an easy fix.
    – IAbstract
    Jul 27, 2011 at 17:53
  • 1
    @Kratz: Great. How long did it take you to reproduce the bug? Figure out which file to open? Which line to fix? And why are you fixing bugs directly in production? Do you not use any kind of revision control, build, or QA process?
    – Aaronaught
    Jul 28, 2011 at 15:14
  • 1
    @Aaronaught, it all depends on environment. We don't all work in places with levels and levels of control. When you have a simple online catalog, you may not use revision control, and the QA process may just consist of the refresh button. It doesn't take much to determine that the page is now loading when it didn't before. It just depends on the project. Why make it so it does take an hour instead of 5 minutes, if there is no value to doing so?
    – Kratz
    Jul 28, 2011 at 18:29
54

You're paid by hour, and for your experience, right? Then what's the problem?

Somebody pays you to do something you actually can do according to your skills and accepting your per-hour rate. So just do it. Why would you compare yourself to some beginner who will spend doing the same thing ten times longer? If you believe that your per-hour rate is unfair compared to the per-hour rate of your colleague, talk to your boss/customer and ask him to increase your rate.

The only issue I can see is if with your huge experience, you're asked to do the work which is far below your skills. For example you're a highly experienced developer, and you're actually asked to do the work any intern with no experience would be able to do as fast and as good as you¹. But then, it's rather a problem of your boss/customer, who pays a lot of money to you, when instead he could pay much less to a beginner for the same result.


¹ Another, more frequent case is when a freelance developer who costs $800/day is asked to spend hours doing manual tests, while it would be much better to just hire a tester who costs much less and actually does a much better job.

5
  • There is other programmer who has very less experience than me and he also gets the same rate. i once tried telling him that i need more then gave the whole work to other guy. he don't understand the diff between good and bad coding
    – user824981
    Jul 27, 2011 at 11:35
  • 21
    "and he also gets the same rate": then ask to increase your rate. Or find another employer/customer who pays better. Jul 27, 2011 at 11:37
  • @MainMia, Your footnote isn't connected to anything. I suspect it got lost in the editing.
    – TRiG
    Jul 27, 2011 at 13:10
  • Whatever the market is willing to pay. Free Enterprise baby!
    – surfasb
    Jul 27, 2011 at 20:04
  • @user824981: So you increase your rate, he gives work to the other guy who has less experience. The other guy doesn't do a good job, it comes back to you to fix at your much higher rate. Either way you'll get to do the work =).
    – Roman
    Jul 28, 2011 at 15:51
54

Nothing takes two minutes to fix.

You have to read the email, review the list of bugs, reproduce the error, open up your development tools, navigate to the files, make the changes, test, change, re-test, save, check in, update the web server, test the web site, email back to your boss with the list of fixes you made, etc.

The editing of a file may take two minutes, but the rest of the time is also chargeable.

4
  • 4
    Read email: 10 seconds. Review: 10 seconds. Reproduce: 20 seconds. Open files: 10 seconds. Edit: 15 seconds. Test: 10 seconds. Check in: 10 seconds. Update: 10 seconds. Test production: 10 seconds. Email back: 15 seconds. It can be done :)
    – tskuzzy
    Jul 27, 2011 at 18:39
  • 5
    "Test production: 10 seconds." I am so stealing that! Jul 27, 2011 at 19:20
  • 11
    Exactly this! Have you ever called a plumber? They charge you from the time it takes them to drive to your home until they leave. That's all his time and if you aren't paying for it, who is? Same rationale with development. You should be tracking time from the moment you are interrupted and asked to do something until the moment you click Send on the email informing your boss the job is done. Jul 28, 2011 at 0:47
  • Tests in 10 seconds? Usually, a complete test involves testing with 2 or more different browsers for me.
    – user281377
    Aug 1, 2011 at 6:58
26

I had this discussion once with a professor while in college. He had set me up with a gig to fix some simple security issues with another professor's side business's website that was sloppily put together by another student. (Site was defaced.)

It ended up being just a few minutes of clean-up work and permissions settings. When he asked what the charge was I said something along the lines of "it was just a few minutes, don't worry about it." He replied, "But how long did you study and how much did you spend in order to be able to do that in a few minutes? Here's $50 bucks."

I always looked at these one-off things a little differently after that, and now-a-days I set a minimum charge of 1 hour, incrementing by half hours after the first.

1
  • 22
    "Changing permissions: $1. Knowing which permissions to change: $49." Jul 27, 2011 at 21:28
18

Let me use the analogy of a taxi-driver who has a minimum fare and then a fee for each minute/distance unit over the minimum.

Perhaps the experience taxi driver knows a shortcut and gets you there in under the minimum time/distance, but you still have to pay the minimum fare.

The same should go for yourself, your minimum fare should be an hour and that is how I would operate. Just make sure that this is explicitly laid out in your contract though.

1
  • 5
    I find it hard to believe a taxi driver to software developer analogy can be convincing :) Jul 27, 2011 at 15:03
8

My policy is to have a minimum billing interval. If I charge anything at all, I charge for a full hour. While the official policy is that all jobs get rounded up to the next full hour, jobs that take only a few minutes I round down to $0, but then I round the next job for that client up to 1 hour. Clients find this not only fair, but very positive. It shows that you're flexible and sensible, and you care about the client.

Remember that "Free" carries more weight than its monetary value. That is, if presented correctly, customers would prefer to pay $1 for one cookie if it gets them a second cookie for free rather than to pay $0.50 each for two cookies. It's completely illogical, but there you go.

Also remember that a discount that you give to someone doesn't count in your favor unless you tell them about it. If you do work for them that doesn't cost them anything, then send them an invoice for $0 (for "accounting purposes"). In fact, send them an invoice for $25 with a $25 credit, yielding a calculated $0 total.

1
  • This is what I do as well. 15 minute increments (so 16 minutes is billed as 30), with a one hour minimum.
    – Andy
    Jul 27, 2011 at 20:56
4

This is a usual fallacy, IMHO. You should think of yourself as charging for the amount of knowledge, not the amount of work put into fixing the bug.

2

As an extension to @MainMa's answer: first of all, a beginner spending 10 times more on the same task would certainly cost a lot more, even with a lower hourly rate. In other words, you can solve the same problem way, way cheaper, which - in a sensible company / market - almost guarantees that you are going to get more work for a long time :-) And long time job security is a Good Thing.

But if you think you aren't paid enough for your expertise, consider collecting statistics over your jobs and after some time, you can go to your manager with the data which proves how cheap you are for the excellent work you are doing, which may help you get a raise.

2

I agree with @Scott

In my opinion you should just bill in minimum increments, such as 15 minutes. So if you do one thing that takes a minute, or 10 things that take 12 minutes it doesn't matter; just bill in 15 minute increments. When you quote a level of effort, the minimum you will ever quote is 15 minutes. This makes billing simple for you and the customer will always know what changes will cost them at a minumum.

Also remember that all things related to the task at hand are billable. You can take this down to the 60 seconds or so it takes you to boot-up your machine when you start your day. Use your discretion with that information.

Regarding experience... Your rate should be dictated by experience and the market. You need to charge what you feel is fair based your skill level. If you are aware of beginners making $20 an hour, which is not much less that what you are making now, then bump your rate to $50. You might loose a client or two but if you've been great for them, they will want to keep you around because you can knock-out work better and faster than the lower-level programmers that have a lower hourly rate.

The best thing that has worked for me is to use time-tracking tools such as Harvest. I use it to track anything and everything related to a project. If the customer emails you, start a timer before you begin reading the email. If you need to scope or estimate the work, start a timer before you begin to think about the work. When you do the work, start the timer then get busy. Most time-tracking tools will allow you to round your time up to your minimum increment too!

These tools allow you to break-down your billing as well. Perhaps you want to charge $25 an hour for CSS changes, but $50 an hour for writing database queries, who knows..? I like having the flexibility. I also like having this data because you can share stats with the client. If you typically beat your estimates and can show that with a report (comes with time tracking tools), you are in a good position for repeat business or rate increase negoations.

1

An hourly rate of $X with a minimum charge of 1/4 hour (i.e. $X/4) is just fine. The actual fixing took a couple of minutes, but there was also email back and forth, etc. You have nothing to feel bad about; you can't work for free.

Note further that it's only appropriate to charge 1/4 hour for clients with whom you have a steady workflow and an ongoing relationship. If it's a one off, then by all means, charge the entire hour as @Tyanna suggested.

0

How does your boss know it took you only 15 min? Did you tell him?

Your rate is $25/hour for a reason, because you have the skill and experience to back it up.

I think you should charge for the full hour.

5
  • Suppose if i have list of different 20 bugs to fix. and all that bugs took exactly 1 hour. Do i still charge for hour , no matter how complex were they
    – user824981
    Jul 27, 2011 at 11:41
  • @user824981 Yes.
    – Stephen
    Jul 27, 2011 at 12:11
  • 2
    user824981 - Round to the nearest hour. Some times you'll come out ahead, sometimes you'll come out behind. In the end it should even out.
    – Tyanna
    Jul 27, 2011 at 12:11
  • ... and make sure that you charge hours for correspondence via phone-email, deployment, testing, and all other overhead associated with fixing the bugs. I guarantee that it took you more than an hour. Dont let ANYONE convince you that billable time is JUST time investigating and typing code!
    – maple_shaft
    Jul 27, 2011 at 13:13
  • @Maple That reminds me of this comic.
    – Mark C
    Jul 29, 2011 at 4:12
-1

Establish a minimum charge per initiating an isolated task, something like one or two hours. Then offer to perform other items for the remainder of the minimum booked hours.

If they offer other tasks, you're not losing money: you are working for those hours. If they offer too many tasks and it takes longer than the minimum, you just up-selled yourself into a longer gig. If they don't have enough items to keep you busy for the minimum hours, thank them and leave (you can't possibly do anything by hanging around that will cast you in a better light than saving their bacon in superhero style).

Nobody is going to have an issue with you earning a minimum amount for a call, provided they understand what the rate is. Everybody understands that you expect to get paid a small guaranteed amount to interrupt your schedule to handle their needs ASAP. By offering to actually work the hours you billed, you are offering them a very fair deal (and putting the decision to dismiss you in their hands).

-1

The bottom line is that you have an hourly rate divided up into the natural quarters. Thus you bill per 15 minute increments. This has always been the fairest way to tackle it that I've seen and experienced with my clients. That way they go into the game knowing what the minimum is. Then at each point you're over that 15 minute increment, you round up to the next 15 minute chunk. I've played it both ways where I'll round down if < 7 minutes into the chunck or the full 15 if over 7 minutes... but I'd say you're safe either way in that regard.

And yes, some folks have gone into some additional details above regarding tracking, etc. You certainly can charge different rates for different kinds of tasks, but I personally like to keep it a straight even keeled fee vs having different variables to deal with on the billing side since I it takes enough bandwidth just to worry about everything on a normal basis.

-2

You bill a full hour for any time up to the first hour, then 15 minute increments. If this is part of an ongoing development project that you have already started receiving compensation for, you bill for 15 minutes OR you can give them a once off freebie but make sure the decision makers and check signers know that you are providing them an extra-mile-customer-service-rainbows-and-butterflies free fix. You have to learn to gauge when it might be advantageous to provide some free service in exchange for good favor with the bosses. Do not do this too often, as it won't cause your career to suffer but it will cause your bank account to suffer.

-2

Others have already pointed out that the time to read and understand the bug list should be included as billable hours, so that it is very unlikely you really only spent 15m on it. But what I expected to see mentioned and was not: if you really are that good, why are you settling for only 25$ an hour? That is the rate I was getting many years of inflation ago, when I was not very experienced. Do some searches here or in Ask.com http://www.oncontracting.com/, dice.com or even Google to see what rates people of your experience usually get. You may find it is a lot more than just 25$, even when going through an agency.

1
  • this does not answer the question asked
    – gnat
    Jan 25, 2014 at 6:50
-4

You Charge nothing

A 2 minutes fix that you charge for looks bad, you even if you feel you should be compensated.

But it even looks better if you jumped in there like Superman and saved the day. Believe it or not, doing this will help you in the long run.

However, you just can't let this be habit forming. If he keeps doing this to him, then you stand firm and say, I need a list or report on all of the things we need to have done.

Also if you get in there and its taking more than 2 minutes I would stop, takes some notes, and report it all to your boss before doing anything and tell him what you need to do and how much its going to cost.

7
  • 7
    This is terrible advice. Why would you do work for free and then turn around and get upset when the customer/boss gets used to having it for free? Why would you spend money and years honing your skills so that you can do things faster than the junior dev, just to get paid less (charge less) that the slow junior dev? Jul 27, 2011 at 15:23
  • 4
    Never work for free. You open up a MAJOR can of worms when you do this because the customer will expect you to take on this responsibility for free, perhaps indefinitely.
    – maple_shaft
    Jul 27, 2011 at 15:34
  • Your building a relationship with a client/boss. You don't advertise that your going to do a 2 minute fix for free. You go in there take care of it and tell him 2 minutes later your done. These things get remembered and future work (which you will be compensated for) will come your way. Our Company runs a very successful business model this way. It's sounding more and more to me that this is more than just a 2 minute fix. My career isn't suffering with this advice.
    – Nayrb
    Jul 27, 2011 at 19:29
  • There are different kinds of "client/boss". Most of them just want to exploit you as much as they can and sometimes you need to be such damn mercantile person to avoid such exploitation.
    – cnd
    Jul 28, 2011 at 6:24
  • @nCdy Then your working for the wrong people. To many comments on this post with no actual experience I've seen.
    – Nayrb
    Jul 29, 2011 at 3:32

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