Based upon twenty years in the software business--
a blending of computer science, psychology and philosophy

  1. Conceptually, add or change only one thing at a time in a release, else confuse your customers.
  2. Make rapid, iterative releases (aka: "release early, release often").
  3. The best program is one you don't have to write: put a shell script around an existing app, fork an existing library, delegate...
  4. Writing software is creating a universe with its own intrinsic nature, so respect that, explore it, and maybe you'll discover something new.
  5. There are people appropriate to start something new, to bring it to maturity, to be caregiver for its continued existence, but rarely is it the same group of people fulfilling each of those roles over time. Experience all of them to understand where your talents lend themselves best.
  6. You are continually, simultaneously both student and teacher-- at the same moment.
  7. Anger or any other strong emotion is a signal that there's something in that situation you'd do well to stop and objectively learn.
  8. Openly share knowledge and ways of understanding, and discover that when you're the one in need, the right answer is easily available.
  9. If you weren't there, refrain from criticizing decisions or outcome, but do suggests paths for improvement in a nonjudgmental way.
  10. Nothing exists in isolation: technology, skills, business plans, people, etc., are so interconnected that you'd do well to consider this a law of nature, and enjoy discovering those connections!
  11. On ideas: Give it all you've got and more. Hold nothing back, then more will flow.
  12. Of body: be good to your body (the meat), and it'll be good to you. Take eye breaks. Remember to breath. Minimize stimulants. Go for short walks periodically in addition to after lunch and in mid-afternoon.
  13. Just because it's new, doesn't mean it's better-- just less accumulated entropy.
  14. True genius is being humble enough to admit not knowing and the clarity of asking meaningful questions.
  15. Reinventing the wheel isn't necessarily bad, just usually excessive.
  16. But when you reinvent that wheel, start with a fresh look at the physics too.
  17. Sure, you don't need to use Lisp (especially if you're the competition).
  18. Stick around long enough, and history becomes part of your past.
  19. Give yourself time to unplug: just be and allow your higher self to come through.
  20. "...Know when to leave."

The items above, when applied within the context of designing software systems, build upon Dave Mills' maxims.