Regra da modularidade: escreva partes simples conectadas por interfaces limpas.
Regra de clareza: clareza é melhor do que inteligência.
Regra de composição: Projete programas para serem conectados a outros programas.
Regra de separação: Separe a política do mecanismo; interfaces separadas dos motores.
Regra de Simplicidade: Design para simplicidade; adicione complexidade apenas onde você deve.
Regra de parcimônia: escreva um grande programa somente quando estiver claro, pela demonstração, que nada mais servirá.
Regra de transparência: projete para obter visibilidade para facilitar a inspeção e a depuração.
Regra de robustez: Robustez é filha da transparência e da simplicidade.
Regra de representação: Dobre o conhecimento em dados para que a lógica do programa seja estúpida e robusta.
Regra da menor surpresa: Em design de interface, sempre faça a coisa menos surpreendente.
Regra do silêncio: quando um programa não tem nada de surpreendente a dizer, ele não deve dizer nada.
Regra de reparo: quando você tiver que falhar, falhe ruidosamente e o mais rápido possível.
Regra de economia: o tempo do programador é caro; conserve-o de preferência ao tempo da máquina.
Regra de geração: evite hackear manualmente; escreva programas para escrever programas quando puder.
Regra de otimização: protótipo antes do polimento. Faça-o funcionar antes de otimizá-lo.
Regra de Diversidade: Desconfie de todas as reivindicações de “um caminho verdadeiro”.
Regra de extensibilidade: projete para o futuro, porque ele estará aqui mais cedo do que você pensa.
De: http://www.catb.org/esr/writings/taoup/html/ch01s06.html