Estas são as regras

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