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?

  • 4
    you need a line in your initial contract that says just this, "anything after this initial contract is signed is extra". – user7519 Aug 13 '11 at 18:24
  • 1
    Remind him he gave you access to all his source code. – Andrew T Finnell Aug 13 '11 at 20:15
  • @Andrew Finnell - is that suppose to be a threat? – JeffO Aug 13 '11 at 22:18
  • Pay the fee when contract is fulfilled is a duty of the client. – JeffO Aug 13 '11 at 22:20
  • 1
    @Jeff O Not a threat at all. Software contracting hasn't caught up to "typical" contracting with things like Contractor Lien's. Obviously nothing in a forum such as this can ever constitute legal advice. I am not a lawyer, and even if you happened to be one, you'd caveat anything you said with a disclaimer. I do not advocate doing anything illegal. He'll have to be firm and consistent. If that doesn't work and he doesn't want to litigate it will have to be a 'lessons learned' – Andrew T Finnell Aug 13 '11 at 22:45

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.



  • 1
    Good letter @Caleb. I think I'll send such a letter before lawsuit. It's warm, friendly and polite. Thanks for your help. :) – Saeed Neamati Aug 13 '11 at 19:00
  • 2
    @Saeed, glad to help. Try to see the situation through your client's eyes. Did he only become aware of the server performance problem when you wrote your code? How can you demonstrate that the problem existed before you came along? – Caleb Aug 13 '11 at 19:15

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!

  • Yeah @Jarrod, I really really hate working for free. That indeed hurts the industry. – Saeed Neamati Aug 13 '11 at 18:43

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.

  • Dear @DeadMG, he doesn't want to tune my own code. He asks me to tune the server side code which is written by someone else. – Saeed Neamati Aug 13 '11 at 18:15
  • 2
    @Saeed: If you weren't responsible for the code in the first place, then there's no way he can expect you to do it if it wasn't in the contract. – DeadMG Aug 13 '11 at 18:28
  • But the problem is that he doesn't give me the money. Though the money is not that much, but I feel kind'of stupid to work for free. – Saeed Neamati Aug 13 '11 at 18:35
  • @Saeed: If you refuse to to the work, and he still refuses to pay you, you could try litigation, although how viable that may be depends on your situation. – DeadMG Aug 13 '11 at 18:38

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.


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.

  • good suggestion, do you have any idea for preventing such issues in future? I mean, sometimes clients are simply very close to you, and making a firm contract with them is not that possible. However, this client was a total stranger. – Saeed Neamati Aug 13 '11 at 18:42

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.

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