7

I've done a very small project for a specified amount of payment. The project was some client-side validation code. However, now client asks for code improvement (general code improvement including server-side, not mine which was purely jQuery and client-side) and says that these requirements are obvious duties of developers. What should I do? He doesn't pay till I do something for performance tuning, while we agreed on client-side validation only.

Should I forget about my money? Or maybe I should do the second requirement without expecting any return?

Saeed Neamati
  • 18,318

5 Answers5

11

The StackExchange software appears not to like messages that begin with a salutation. I'm sure it's trying to be helpful, but it confused the heck out of me just now. Following is the approach that I'd take: Stay positive, but stand your ground.

Dear customer:

I'm thrilled that you like my work enough to ask me to do more for you, and I look forward to continuing a mutually beneficial relationship. I hope you'll understand, however, that I arrived at our agreed upon price by estimating the time it would take me to implement the things that you specifically asked for.

I understand that you feel that it's "obvious" that I should provide performance tuning for your server-side code, but I hope you'll try to see the situation from my perspective. Had I included in my estimate work not explicitly required by our agreement, you could rightly accuse me of padding my estimate with tasks that you never asked me to perform. Worse, had I made unrequested changes to a part of your system that was written by someone else, I'd open myself up to blame for problems created by the original authors.

I'm confident that I can provide the performance tuning that you desire, and I'll be happy to meet with you to discuss the work that needs to be done following payment in full of the current invoice.

Sincerely,

...

IAbstract
  • 1,556
Caleb
  • 39,298
7

Don't do it, it will set a precedent that you will never shake with this client.

Would you expect the people changing your tires to also then change your oil for free when you go and pick up your car, it was obviously a mechanical thing that needed to be done and they are mechanics right?

How about your dentist, you got your teeth cleans, why didn't they go ahead and do a whitening for free, it is obvious that it needed to be done.

Putting it in another context with them, maybe in the context of their business, would they don work for free to fix some one else's work?

NEVER WORK FOR FREE it hurts you, it hurts your peers and it hurts the industry!

3

As per usual, I am not a lawyer. However, if it was not specified in the original contract, then that's not what he agreed to pay for. He should pay you and then consider paying extra for the additional work. Performance tuning is an obvious duty of a developer- and paying them is an obvious duty of their employer. Of course, I do think that if you delivered code that it should work reasonably, but there's a line between fast enough and not fast enough which can only be derived from context and field-specific knowledge.

If your code isn't unusuable because of performance issues, then he has no right to hold payment over you.

DeadMG
  • 36,914
2

This would depend on your local laws and details about the contract. And of course other details about your relation to this customer.

If I understand this right, your contract was about client side code (was this mentioned in the contract?)

I have seen such customers before and since you don't want to do any business with them ever again, because this types will act like this again, you can simply tell them that they either pay or hear from your lawyer. Sometimes this works (I know of cases where it did). If it's actually worth the effort to have a lawyer handle this may depend on too many details. Here in Germany this mostly has a very positive effect on the customers decisions regarding payment.

Edit

Ok, this above was mainly in case you have no close relations to the customer and have given up on him more or less anyway.

Of course having a clear contract that describes the kind of work and payment to be received as exact as possible is something you should have. This is, as you say, not always possible for many reasons. So, if you can't have a firm contract, you must act firm. As David says, otherwise they won't respect you.

You can stay friendly and at the same time make your point, that you can't be expected to work for free.

Real world example (names changed of course)

Some unimportant meeting with customers project manager about the actual state of the project (refactoring a large website from another company they had messed up full scale, lots of debug work).

She (project manager): Oh, and do you think it is possible to add a CMS for those sites.
Me: Sure, we could add an editor in the admin interface and move the text into the database, maybe add some option to upload images and so on.

Three weeks later, meeting at customers office, discussion about state of project (online by now, no bugs, customers of customer very happy) and next steps:

She: Oh, and didn't you want to add a CMS?
Me (hard time not to laugh): Look Claire, we talked about if it is possible to add this feature. If whenever we talk about something being possible and I say that it is, that means I agree to do it without payment, then in future talking will become very, very complicated, because we will need to add a lot of extra clauses to every single sentence.

This made that point quite clear without becoming unfriendly. You have to go through such situations once in a while and learn how to handle them. You must understand, that often enough this is like a chess game for some people, they make their move to get a bit more. Especially if it's the manager type. If you counter that move they mostly don't try again. Those guys are not necessarily serious about this stuff, they often know well enough that they are in a weak position. They only try, because sometimes it works.

1

This is one of the problems with this kind of contract. The client can always insist that certain things were "obvious from the requirements". And the developer can always create horribly broken code that "meets the requirements'. I'd suggest you try to reach a reasonable agreement -- maybe do the additional work at a much lower fee than usual. That way you both "win" and maintain a good working relationship.

Don't let a client walk all over you though. You'll resent them. They won't respect you.