For example, if your code involves a lot of linear algebra, then operator overloading the sensible operators is probably a good thing. But don't use operator overloading just to save some keystrokes.
Over-abstraction is another such case. Try to avoid adding abstraction layers until you need them.
I'd also add "make the code as self-documenting as possible". That means being verbose at the right times, such as writing meaningful identifier names.
And of course "avoid global variables". I've seen people use singletons with a read/write member, which is as much a global variable as any other.