1. If it ain't broke, don't fix it.
  2. Design for failure. Can also be expressed as "shit happens so plan for it and deal with it".
  3. Verify your assumptions.
  4. Implementation matters.
  5. Interfaces matter more.
  6. That which works is better than that which doesn't.
  7. Elegance matters.
  8. Cuteness doesn't.
  9. If it hasn't been tested then it doesn't work.
  10. Solve the right problem.
  11. Understand when performance matters.
  12. Correctness always matters (i.e. nobody is interested in fast wrong answers).
  13. Explain why.
  14. Flexibility matters.
  15. True perfection is more often achieved by removing features than by adding features. Can also be expressed as "avoid feeping creaturism".
  16. Code for the ages (i.e. pretend that YOU are going to have to maintain the code in five years).
  17. Avoid magic numbers.
  18. Think ahead. No! Further than that!!
  19. If it ain't broke, don't fix it.
'nuf said.*


  • twenty plus years of making mistakes with a computer keyboard.

* Many of these could use clarification and/or elaboration. I and/or others will/should/have/might write nodes (or even entire books) as appropriate. I don't believe that adding dozens of paragraphs of clarification in this writeup would be appropriate (and it would take dozens of paragraphs to clarify/elaborate all of these "laws" properly).