Contract Programmers – How Do You Bill?

For the last few years I’ve done contract programming work. Sometimes on the side, and sometimes as my full time job. Lately I’ve had some projects that I feel I’ve gotten… lets just say the short end of the stick. This seems to happen when I’m the subcontractor and put in an hourly quote, and the people I’m working for are doing work on a project basis.

Part of the issue is that I have a tendancy to completely under-estimate the hours to do a project. Either that or the hours are correct and the clients add features and things in that they figure should be in there, but I never thought about when I went through the requirements in my head.

It also happens because I don’t have the balls to say “no, you can’t have that included”.

I’m looking for the best way to make sure that both myself and my clients win, so I’m wondering how other people who do contact work (programming in particular) go about it.

  • How do you estimate?
  • Do you put in a quote and then bill that quote exactly?
  • What about ballooning of features (ie: not things that are outside the scope, but things that are just outside what you envisioned)?
  • What do you send to clients? Is it a full func spec and task list, or a brief description of the final result? If it’s a full func spec, how do you ensure that the clients follow it and realize that when they say “but I thought a preview feature would be in there?” that it wasn’t in the spec?
  • How complex a proposal do you put in? I’ve been caught more than once quoting a project very loosly because I get very strong>un-detailed specs to quote off of. Part of the market advantage I have (I think) is that I can move fast. Spending a week hashing out a detailed spec loses clients when you can put in a quote in a day and get started the next. Of course, thinking about it, putting in four times the time that you get paid for on a project isn’t a lot better…
  • How hard-assed are you as far as specs? If it’s not in the spec and they want it added what happens? What if it’s a small but time consuming thing? What about big features? How much time is taken doing this?
  • Any pointers to spec sheets, contracts, etc that are out there to see and use as examples?

Any other tips to share on how not to get the short end?

4 Comments on “Contract Programmers – How Do You Bill?”

  1. Alan,
    You are in the business of building software. While being respectful that you provide them with a good product at a fair price, don’t fret that you have to go back to them when there are cost/time overruns outside of your control. Your time is worth money.
    Remember Rule 1440… there are only 1440 minutes in a day. It is a FINITE resource, and every minute should be maximized… its NOT FREE!!
    Whenever possible, DON’T do fixed price quotes. You end up being subserviant and can rarely recoup time overruns. Trust me on that. I have been bitten too many times (including a recent project) when external forces drive the time way up.
    When possible, I bill by the hour, and provide bi-weekly hourly timesheets showing current progress on the project. In this way, if the client feels that things are getting too costly, they can let me know BEFORE the project goes to far long. At all times, if the client asks for something out of scope I inform them of the addition in time right then and there, and get confirmation via email. Sometimes, I will waive the cost of some time, but STILL show it on the invoice so that they know at all times the discount they are getting… and what the real cost of the project is.
    Your time is valuable. If your customer doesn’t respect it, you in a boatload of trouble. Michael Gerber (from EMyth fame) was quoted to say that once a year, you should fire your worst performing customer. You know the one… the one where you are LOSING money, time, or both. If they are not respectful of you and your time, there are always other customers that do. Focus on those ones… they will net you better returns.
    Good luck.

  2. don’t have anything constructive to add to what Dana said, but I offer you a metaphorical steel rod for your spine to help prevent “because I don’t have the balls to say ‘no, you can’t have that included’.”
    hugs to you and Andrea

  3. I provide an estimate that’s about 15-20% higher hour-wise than I think I need. Usually, it matches the time it actually takes in the end.
    However, as part of that estimate, I include a rider that says it is only an estimate, and that the actual amount may change due to circumstances encountered during the project.
    When I start coming within about 10 hours of the estimated time, I evaluate the progress of the project and give the client a heads up. As part of that, I tell them that the project will take x hours more.
    I use the original estimate and emails leading up to that estimate as my functional spec – anything that is not mentioned prior to the estimate’s drafting is counted as additional functionality and is billed accordingly. I do sometimes make exceptions to this rule, depending on the client. Any bug fixing is not billed (my fault, my time).
    I make the estimate as detailed as the request. In a perfect world, I would get to sit down with the client and completely hash out the finest of details about the project. In the real world, I get as much information out of the client as I can and use that to drive the project requirements.
    If a client is in a “need a quote today, work tomorrow” situation, that might be a sign that things are already entering into dangerous territory. If they are entering into the project that quickly, it signals to me that they may not have fully fleshed out all the project’s requirements.
    As far as how hardassed we are? I was joking with a contractor that I can’t bill 5 minutes of work (my time management software uses 10 minute increments), and K replied, “Yes we can.”
    Of course, all of this is generalization. Each project has to be approached differently, and you have to get a gut feel for the client, the project, and the work you think is required to complete it.

  4. Dana,
    If you were looking to get some contract coding done, how willing would you be to sign a NON-fixed price quote? As a programmer, you might (or maybe wouldn’t because you are a programmer), but a lot of businesses probably won’t.
    Unfortunately, businesses often don’t like open ended quotes.
    When estimating, the problem usually is that you estimate on what you know, but assume that there is always something you don’t know about, even to accomplish the spec as is. So, if given everything you know, you think it’s going to take 100 hours, quote 120 or some such. My tendency is to estimate based on the “best case scenario”, DON’T DO THIS!!! If you have never lost business because your estimate is too high, you aren’t estimating high enough. If you have never lost business because you are too expensive, you aren’t charging enough. Because there is always someone who thinks it can be done much faster/cheaper than it really can be done, and won’t pay for what it really costs.
    When you spec, especially with a fixed priced quote, you should also state what is NOT included. Where are the fences.
    When we get a custom modification request at work, we actually quote for the quote. Often we will say: “ballpark that is 5 days work, if you want a spec and quote, we’ll charge you 3 hours for that and then you can decide from there”.
    Bottom line: You are not a charity, you have a mortgage, you need to get paid. Also, how much free stuff do you get from your mechanic or electrician or plumber?? If one of those is working on something for you that goes out of scope of the original job, what do they do??