Off the top of my head:
Very few programming problems require math beyond addition, subtraction, multiplication, and division. If you're thinking of using calculus to solve a problem, research the alternatives exhaustively before doing so.
Any time you find yourself guessing about how something should work, you're doing it wrong. It's not your job to be telepathic.
The person giving you the spec rarely knows everything he wants until you've hashed it out.
More than half of being a great programmer comes from dealing with human beings. Interacting with your team, managing your manager, and finessing the end user are half of the job.
Good code is written to be read by people as much as it is to be read by your compiler.
Best practice and practical reality will be in conflict more than the programmer thinks, but less than the manager does. When they appear to be in conflict, it's up to you to delineate and understand the conflict and then give in to the practical. The subtle and clever solution is only better than the ugly, brutish one if it's more cost effective in the long run.
Great tools can't make great programmers, but bad tools make us equally awful.
Never look down on a technology, but always look for the best alternative.
The more languages you know, the better you'll be in the one you're using.
Don't be disturbed by the slow creep of programming-oriented thoughts into your daily life. Even when we're not at a computer, we all suffer from bandwidth limitations, have performance penalties from task switching, and need to load things from backup storage. Computers are supposed to mimic human thought and the analogues are everywhere.