1. Create Clean Code -- code for which you can:
    • describe exactly what it does
    • describe exactly how it interacts with other entities
  2. Minimize Threads
  3. Minimize Global Variables -- these create implicit inputs to any software in the same module.
  4. Reduce references and pointers.
  5. Maximize Assertions
From Udacity's Testing Software course.