When your customer pages you, his timer starts: return his call immediately
this really depends on the customer. if the customer is of the kind that won't let me off the hook once i respond, then i won't respond immideately. (unless i actually have time to focus for at least an hour). on the other hand my best/favorite customer is wonderful at this front. while i don't always reply immediately, there is never a problem to listen to his message and tell him i'll get to that in a few hours or whenever my schedule allows.
Admit your mistakes
while i wouldn't have returned both the original and the accidentally duplicated fee since the error and the reason for the error was an obvious slipup, returning money for shoddy work or for any work that causes the customer to loose money is definitely something i like to do.
a customer being always late with payments is the least of my reasons to fire someone. i may do that when i have more work than i need. but i rather have a customer that's pleasant to work with and pays late than an uncomfortable one that pays on time.
Generally, you cannot reuse a whole project because it represents customer-specific functionality
hardly. at least in web development the only thing customer specific is the graphic design. most everything else is reusable. i am not even writing custom backends anymore, but i reuse the same backend for all projects. it's mostly just CRUD. and maybe one or two custom functions added to an object in the backend somewhere. to that end, the backend i use is GPL, and together with the frontend framework makes up the bulk of the code. but that's all done. what little code i end up writing is custom for the project, and that is what the customer pays for.
this really depends on the customer. if the customer is of the kind that won't let me off the hook once i respond, then i won't respond immideately. (unless i actually have time to focus for at least an hour). on the other hand my best/favorite customer is wonderful at this front. while i don't always reply immediately, there is never a problem to listen to his message and tell him i'll get to that in a few hours or whenever my schedule allows.
Admit your mistakes
while i wouldn't have returned both the original and the accidentally duplicated fee since the error and the reason for the error was an obvious slipup, returning money for shoddy work or for any work that causes the customer to loose money is definitely something i like to do.
a customer being always late with payments is the least of my reasons to fire someone. i may do that when i have more work than i need. but i rather have a customer that's pleasant to work with and pays late than an uncomfortable one that pays on time.
Generally, you cannot reuse a whole project because it represents customer-specific functionality
hardly. at least in web development the only thing customer specific is the graphic design. most everything else is reusable. i am not even writing custom backends anymore, but i reuse the same backend for all projects. it's mostly just CRUD. and maybe one or two custom functions added to an object in the backend somewhere. to that end, the backend i use is GPL, and together with the frontend framework makes up the bulk of the code. but that's all done. what little code i end up writing is custom for the project, and that is what the customer pays for.