But this is part of why I like being a product company. I do my R&D on my own time, without an angry customer if it fails or if I take longer than I thought. "Here" I say, "are the products I've sold to hundreds of other people. I can sell these to you, too." Then I add "If you want something else, suggest it, I might add that as a product as well, then I will sell it to you and others who want it at a low cost, but I'm not going to make it just for you."
(of course, being a product company, if I screw up production, I have many, many angry customers.)
For me, this has largely solved the problem of not estimating correctly and/or managing customer expectations. Here is what I have. you don't like it? Oh, I'm sorry. would you like a refund?
If you wanted to hire me by the hour, that'd be different, but we're talking about people giving me $8/month.
However, I think even when working by the hour, when I charge what I seem to be able to charge lately, I try to say "No, that's outside of my area of competence" because really, they are paying me way too much for me to 'figure it out.'
When it is in my area of competence, I think it's just as important to say "No, I think that's a bad idea, and here's why" - They are paying me silly rates, presumably because I know more than they do about what we are trying to get done; Sure, sometimes you need to translate the technical choice into a business decision and push it up the chain, but sometimes it's a purely technical decision, and within your realm of knowledge, and in that case, I am not doing my job unless I say "Don't do that" when the customer asks me to do something that is clearly incorrect.
"Yes, there's a way to do that. No one has ever done that before, so now is the time for someone to be first..."
This sounds dangerous. What one really wants is to add stuff that will be useful to the user and will help him get things done easier. If the client proposes a feature and you say yes because "it's the time for someone to be first", then you are wasting time and effort on something that maybe isn't really necessary.
Buyers of software products, like small children, hear one word more than any other: "no". "No, it can't be done." "No we don't do that." "No, if you did that it would screw up everything else." "No, that's stupid" It doesn't matter if you're right, all that matters is that you're just another person saying "no".
You differentiate yourself from others by giving the exact same answer, but with the word "yes" instead of "no".
"Yes, in order to do that, we'd also want to look at..."
"Yes, let's make it 'pop' using some of the things we bring to the table..."
"Yes, no one even thought about that, and we should now before we get any further into this thing..."
or even the extreme:
"Yes, there's a way to do that. No one has ever done that before, so now is the time for someone to be first..."
As I've told my customers many times, "The answer is always 'Yes'. You may not want to do it once you understand what it will take, but the answer is still 'yes'."
No other word has helped me more to find myself and do my best work for others.