The 3 tenets of software design and architecture:
focus on simplicity and conceptual integrity
clarity is better than cleverness
prototype before polishing
distrust all claims for "one true way"
provide low coupling and high cohesion with small, simple and strong concepts
fold knowledge into data so program logic can be simple
redundancy is bad
predictability is good
explicit is better than implicit
when you must fail, fail noisily and as soon as possible
make it work before optimize
productivity before performance
programmer time is more expensive than machine time