Clients aren't stupid. OK, well some of them are. But, much as designers and developers love to think they are cleverer than everyone else, the people who hire them are not a bunch of useless morons.
Your clients aren't stupid. They just have a different skillset to you.
It’s very easy to get annoyed by "how spoiled and stupid and selfish and disgusting we all are” unless we stop and think about what might be going on with other people’s lives.
This is true of life in general, but it’s especially true of people with whom you need to maintain a working relationship. As Mike Monteiro put it so well, you have to be able to speak to your client as an equal. In short, you have to respect them.
This isn’t just true of clients. It’s true for other developers as well.
Don’t criticise other people’s code unless you know exactly what pressures that developer was under.
Again and again, I’m reminded of the importance of empathy and how easy it is to jump to snarky conclusions about why those people over there are idiots. Empathy is a big part of what makes us human, and we should always try to get past our initial tendency to want to feel superior, especially because we're probably guilty of half the crimes with which we charge other people.
In short, people in glass houses shouldn’t throw stones. And even if you live in a brick house, don’t throw stones. It’s not a nice thing to do.