Well, It's twisted in my opinion. I get a service, but I can't know exactly how much it costs pre-service, and the outcome would be based on "how both parties feels after".
If I don't feel the service is good, I pay less. But this means, I will not be able to get better service ever again.
Tipping should be a reward, an incentive. I'm not the employer. Waiter/waitress is not on my payroll, I should not be the one thinking about their take home pay.