Estimating bug fixes and communicating with clients

In the last year, I’ve expanded my use and knowledge of Open Source CMS systems like Joomla and WordPress.
As a result, I’ve been getting more requests to make updates and fixes to existing sites.
I’ve been finding, unfortunately, that most sites are built poorly. The past ‘developer’ either had no programming background or simply didn’t care enough to do a good job. Themes and extensions are added willy-nilly without regard for the quality of the markup or code. The plugins are often heavy and inflexible.

It is often hard to tell how long an update will take. Recently, I was asked to make some css changes that seemed simple enough, but when I got to work, I found that page styles were all over the places: css files in remote corners of modules, inline styles hard coded into dense php, and admin panel parameters. I ended up eating a ton of time.

Any thoughts on what to tell clients? These can be difficult conversations. It is often hard to estimate how much time fixes will tak, and clients don’t want to hear that what looks like a minor fix is going to take 20 hours or simply that you don’t know how much time it will take.

It sounds like you need to spend more time looking into the problem before trying to estimate anything. If it were me, I may take a quick look to gauge a rough scale of the problem, but unless it’s obviously an easy fix, I would suggest the client pay me to investigate it properly so I can provide a complete quote for the costs. This will benefit them in the long run, and this way they’ll get no surprise fees.

Do an audit first to identify any issues - then quote on the job.

Charge for your audit.

The problem is that with issues such as those highlited in the original post, it is a simple thing to do once you’ve got your head around how the system is set up and located the code you need to fix. What may be an hour looking through the code might be a 5 minute job to fix. Most clients won’t understand why the audit costs 10x more than the fix itself.

You need to explain this to the client so they understand. They are hiring you for the entire process, not just the fix. You are not fixing one of your own projects, you are fixing someone else’s. So first you have to get your head around that other person’s way of doing things. If they want a quick fix, they should get the original developer to fix it, then the audit process will probably be shorter. Of course there’s probably a good reason they are not using the original developer any more…

It’s pretty unreasonable to expect a third party to spend 3 hours investigating a problem for free and then only be prepared to pay for the time they spend from that point onwards actually fixing it. I think any reasonable client would appreciate this from the developer’s perspective.

Shadow box is right. The cost of the fix is auditing plus fix time, present it like this to the client.

One small problem you will have to deal with is their expectations. So you may spend 3h identifying the fix, 30 minutes to fix it, and they don’t accept the proposal. Then you’ve lost 3h work. One way to deal with this is charge them for example for 2h to develop a written audit plan “that they can take to another developer”. Then you could allow them to get a refund of the audit when they go ahead.

HTH, Jochen

I don’t understand why you would refund them the audit costs though? You charge them upfront for the audit - let’s say a fixed fee of £100 to include a report and quote for fixing the problem. If they accept your quote for the fix, you do the work and charge them for the fix itself, or they take it elsewhere and get someone else to do it. Would you still refund the £100 if the fix itself only costs the client £50? That seems at odds with the stance that time is money.

Personally unless this was a regular client who brings in a lot of money and/or referrals, I would tell them that audit costs are not refundable - but I would definitely give them a free cursory audit first (15 minutes etc) just so I can make sure it really requires a more detailed audit.

Its just in the packaging:

Say its $300 audit, $800 fix.

So you quote 300 for the audit before you do anything, then tell them the total job costs 1100. If they go ahead, the can cash in their 300 audit costs.

That way
->you don’t make a loss,
-> you are transparent about costs
-> you preserve the right attitutude of what the total job cost end to end


But no matter how you dress it up, but you are still only getting $800. I’m saying you should be getting paid the full $1100. Why is the audit time not actually charged for? Surely the client should accept that it’s reasonable for you to charge for $300 of your time in order to identify the actual problem and then pay the $800 to apply the fix - no refunds on the audit time. If they aren’t they are either a poor quality client or the developer is not communicating the value of the audit process.

Sure, $10,000 project, you are going to be happy to write off $300 if it gets you the job. But an $800 project? And what happens if it turns out to be a $100 fix. That’s 4 hours of your time to secure a $100 payment.

Sorry, you are right, I got myself confused here.

Time is time regardless of what you’re doing.

Charge the client in advance, get paid upfront, THEN do the work.

Then once you’re done, you can itemize it any way you like on the invoice.

  1. Audit
  2. Error identification and testing
  3. Corrective work
  4. etc etc …

You should NEVER be sitting there working for free.

Oh, and if you’re having to fix someone else’s crap (especially if they’ve messed up something you’ve already done), then add a surchage.

This should be covered in your contract.

Why not just charge straight hourly rates for this kind of work? Then, you do your best to estimate how long things will take but you are aren’t held to it. This kind of work can be unpredictable, and clients can understand that.