Tipping is a great deal. I'd hate when the amount is included in the cost of services. If someone does a bad job, I don't want to pay it. If someone does a good job, I want control of their compensation.
I don't want control of anyone's compensation, unless I'm hiring them. Compensation should take into account their skills, experience level, local market shortages, etc, and be determined by agreement between the employee and the employer.
We get great service at the restaurant 500 feet from our front door. This is in France, so we don't tip a cent: we ask for the check, it comes, we hand over a card, it goes into the machine, we type our PIN code, we get the receipt and go. (If we're paying with cash, we might wave away the change on a bill of 29.20, but if we tried to leave the change from a 26.20 bill on the table, we might well be followed out by someone telling us that we forgot our change.) Tax is also included in the price on the menu, so by simply adding up what we order, we know how much we'll be paying. (Simple, huh?)
If we don't get good service, that's just one more item that gets factored into the consideration of whether we go back, along with whether or not we got good food, good value for money, etc. If the employer hires poor staff, he loses our business. It's not up to us to take out a bad customer service experience on a poorly-paid employee who could be having a bad day, or simply be in the wrong job; nor do I see why I should be involved in the compensation of the server but not, say, the cook, who is also providing a service, just not in my physical presence.
It's well known from experimental psychology that direct monetary rewards have either no or negative effect on performance, except for the most routine of tasks (so perhaps we should be tipping the crockery washer), partly because it conveys the message "This job sucks, you have to be paid extra to do it". Good waitstaff, over here at least, are pretty professional in their attitude and get satisfaction from a good job.