I think we're starting to drift from the original scenario:
- Client gives you a project.
- You do project and bill $2000
- Client decides to research tools used to accomplish the project
- Client finds tools at WA - not a problem
- Client also finds that a ready made solution is available for $1800 less
Sure you can make money reselling a $200 solution. That's not the issue. We're talking about a professional developer with years of experience put in the position of justifying their price after the fact, when the client has the perception that all they did was put a new face on a $200 solution.
You have to know the requirements of the project before you can judge this. Would you find $2,000 too much to pay for Amazon.com?
Years ago I wrote a pricing program that took 6 months to complete and was valued by the business's insurance company at $1.5 million. Would it be hard to justify charging $2,000 for that? This is exactly the problem we're up against. You have it in your mind that $2,000 is an unreasonable price to pay for a custom cart, because you know about the one for $200. There is no thought given to what it might take to implement a different type of solution. What if it had to connect to an EDI system, or a main frame, or an existing accounting system? What about unique security requirements? How about processing over a million transactions an hour? Would any of those requirements affect your fee?
I have no problem justifying my fees during the exploratory proposal phase, and have often sent people to canned solutions they could implement themselves, when the numbers weren't right. I'm also a big fan of Open Source. But if someone comes to me in the beginning with the wrong solution in mind, I usually point out the downside and send them down the road. We also have a responsibility not to get involved with solutions we know are destined to fail.
But I do not like to be put in a position of clients questioning my fees when the project is finished, because they become convinced I used an unreasonable markup. No one wins in that scenario.