I run a restaurant in NYC, here is my view on tipping.
0% The server basically fucked everything up, had no idea what he was doing, maybe spilled something on you, brought one persons food, but never the other persons, just gave you a check and expected you to leave, rude.
10% food was late, server forgot items, and he was slow with giving you everything and not making any attempt to fix the problem, but you still got everything you asked for.
15% is if you had normal service, you received everything you wanted, and if there was a problem, it was addressed.
18% You had a great time, the food was good, and the server was knowledgeable, no problems.
20% Everything was perfect, food, drinks, and the server had a fun discourse with you.
Now, I think the above chart is true and fair, at least by NYC standards.
Consider this, you don't own the restaurant. You are a stranger who walks in, sits at a table, and excepts there to be a clean and nice table ready for you. You expect the plates to be clean, silverware polished, menus properly served, water brought, food served directly to you in an order you expect, and drinks served to you. That tip in essence pays for all those services that you don't notice. When you buy food, or buy a drink, you are paying just for the food, or just for the drink, you aren't paying to have it served to you with silverware, clean plates, water, and any condiments you would like. That is why you don't have to tip when you get take out. The tip in essence covers a labor cost, just like when you get your car fixed. But the reason why this system exists is because it is better for the consumer, going along by capitalist ideals, the server is supposed to do the best job they can if they want a good tip. The consumer, the person they are in essence working for, judge how good of a job they did and tip accordingly. If we just paid servers, you would still get charged for the service, but you would have no say in how much the charge would be, regardless of how shitty the service is. The is why when you go to France, the servers are pricks.
Also, fuck Shaun White.