Having worked in hospitality for the better part of a decade (thank **** it's behind me), I know tips are a tough one to work out. When I worked behind a bar, the occasional customer would buy you a drink and that was good enough for me.
In a restaurant, it's a different matter entirely. When you tip, you tip the service, not the food. If you had a **** meal and the staff were a set of ****s, that's fair enough. If the food was crap but the service was good, the staff were polite and apologetic and did everything they could, they should still get a tip. It isn't the front of house's fault if the chef's **** up, it isn't their responsibility and shouldn't be punished because they did their job right at the end of the day.
I've had a fair few customers over the years say "oh I'm not leaving a tip, you get paid for what you do right?". I mean, what kind of daft attitude is that? In an industry where the pay is famously **** and the hours are unsociable, the majority of waiting/bar staff money comes from tips. If they're there on a Saturday night serving you a meal, it means they aren't at home with their family or out with their friends, they're giving up their free time to make sure you have an enjoyable evening. And while it's not mandatory, it's encouraged because it gives the staff a sign that they're doing a good job. "Well, I don't get tipped in my job and I work hard". Fair enough, but you probably don't work 10 hours a day, Saturday and Sunday at £6.50 an hour. You probably don't have to work Christmas Eve, Christmas Day, New Years Eve and all bank holidays. The majority of people have common sense and know the score, but some people really are inconsiderate arseholes.