Interesting thread to wade through. I worked a short time in food service, more counter service, some food running and wine bar/coffee shop stuff. Many of my friends and coworkers have waited tables (a few in very high-end fine dining, most in average family night out restaurants), and I've been formulating rules for tipping based on both common courtesy and those shared experiences. While the stigma among young people against undertippers is very high (a number of them seem to regard arsonists more favorably than cheapskates), there is a social contract implied in the act of eating out.
When you go out to eat, it's understood that you will behave with some decorum, and obey laws and common social mores. The waitstaff will do their best to be at least adequately attentive to your (reasonable) needs, keep your drinks filled, your food coming, and your experience pleasant and neither hurried nor too slow. In exchange, you are implicitly agreeing to pay for the food and the service provided. You have the discretion to name what the service is worth, but unless you didn't get any service to speak of, it should be considered as worth something. The menu price pays for the overhead, the raw ingredients, and the wages of those employees who do not interact with you directly for appreciable time. It also pays the small portion of the waitstaff's wages that goes to taxes, which means their take-home pay is your tip or less. This is an important consideration with those unused to American service practices.
These are the rules I endeavor to follow, and suggest to fellow diners if they ask for advice.
At a sit-down meal with table service, 15% is a good rule of thumb for average service. This should not require extraordinary effort on their part; if they brought your food promptly, refilled your drinks a few times, and were moderately attentive, they have earned that average rate.
If the service is very good, they were helpful, frequently available, and a pleasant aid to your meal, 20% is a nice way to say "thank you" and reward a job well done with a slightly higher incentive.
(20% may also be advisable for average service if you needed special attention - i.e., multiple substitutions, asking for items not on the menu, needing to split the check in a dozen different ways)
If the service is extraordinary and they go out of their way to help you (bringing a special dessert gratis, preparing something normally not on the menu, or nursing you through a three hour long dinner reunion with friends), more than 20% may be called for.
If the service is underwhelming (slow, mechanical, only check on you a time or two, significant mistakes in the order), 10% is an acceptable way to constructively criticize.
If the service is so truly awful (40 minutes before drinks come out, no drink refills, egregious uncorrected errors) you feel motivated to leave less than 10% (especially an "insult tip" of a penny, a few coins, a nasty note, or a tiny amount of any kind), do not leave any tip. Speak to the manager, in person or on the phone, and politely explain that the service was unsatisfactory, and why. Do not demand recompense or the public discipline of a server. Do not yell or make a scene. Doing any of the above only makes you as rude as your waiter was.
If you have to forgo a tip for the aforementioned reason, don't return to the scene of the crime. If for some reason you simply must eat there again, come in with fresh expectations and no grudges. If they do well, congratulations. If things go poorly again, DO NOT GO BACK and demand more poor service.
Waiting well takes skill, training, knowledge, and effort. Waiting adequately takes at least two or three of the above. Hospitality professionals should be treated with respect and courtesy, and the mantra of "the customer is always right" should be their mindset, not yours.