I hate tipping as a principle. As PP have noted, lots of people do poorly-paid work with no tips. I bought a pair of shoes the other day and the assistant was so lovely. She spent 10 or 15 minutes helping me choose. Should she expect a tip?
That said, when I'm in a country that expects tips, I give them. I pay the optional service charge in the UK. If there isn't one, I add 10%. In the US I add 20%. Not because I want to but because I understand that it's part of the deal. Especially in the US, if you don't tip, the server doesn't eat. And in the UK I don't trust that all the staff in the place are getting the living wage. Restaurants are not very unionised places. But in Germany or Spain I don't feel the need to leave a tip at all, and most people don't, especially with card payments. In most of the EU it's very rare to see a payment terminal with an "Add a tip" button, and quite often the server has rung up the amount before you would even have had time to tell them to add X Euros.
What I don't do is vary the amount of the tip based on the "quality of the service". First, slow service often isn't the server's fault. Second, by withholding money because the server's idea of your nice experience doesn't match yours, you are in effect forcing them to perform "emotional labour" (look it up). As someone whose income does not depend on that in the slightest, I would not wish it on anyone's job description.
So tip or don't, but if you do, do it mentally in advance. If you see a main for £23.50, pretend it's £26.00, which it would be if the restaurant was honest about pricing. If you're in New York and you see a dish at $30, you already have to do this with the tax, so add the tip as well and pretend the price is $40. Don't arbitrarily decide to award yourself a discount based on whether the staff danced enough for you.