- Don't repeat yourself: think about similar interactions and how you can streamline the experience to provide fewer choices to the user. Don't make the user learn multiple ways of doing more or less the same task.
- Don't surprise me: following the train of thought above, the user should be able to do similar or related things in consistent and predictable contexts. I shouldn't have to guess where to look for a setting or task, and interface elements should act as I expect them to.
- KISS: Simplicity always wins, period. I've seen this in user testing and research over and over again. Understand your users, prioritize tasks, make smart decisions, and remove complexity and choices that aren't directly relevant to what the user is trying to do.
- Don't add features until you need them: Design for "now", measure everything, fail (or succeed!) quickly, and iterate. A coworker of mine at a previous startup had a favorite saying, "Don't build a cathedral when an alter will do."
There are lots of other great interaction design best practice parallels in the article below:
The Principles of Good Programming