Polimorfismo: um recurso poderoso

Objetos têm um mecanismo fabuloso, mensagens polimórficas, que permitem expressar lógica condicional de maneira flexível  mas clara. Ao trocar condicionais explícitos por mensagens polimórficas, muitas vezes você consegue reduzir duplicação,  tornar seu código mais claro e aumentar a flexibilidade tudo ao mesmo tempo.
Kent Beck, em Refactoring

Duplicação e dependência

Dependência é o principal problema em desenvolvimento de software. Duplicação é o sintoma.

Mas, ao contrário da maioria dos problemas na vida, nos quais eliminar os sintomas faz com que um problema mais grave apareça em outro lugar, eliminar duplicação nos programas elimina dependência.

Kent Beck, em TDD by Example

Complexidade e emergência

No excelent post Complicado, Complexo ou Caótico?, Giovanni Bassi fala sobre a base teórica dos métodos ágeis: os estudos sobre sistemas complexos. A explicação do que é não-linearidade e no que isso afeta o desenvolvimento de software é muito boa.

Vale a pena dar uma lida!

Na versão original de A New Methodology, Martin Fowler indica o livro  Adaptative Software Development de Jim Highsmith. Nesse livro, o autor aplica idéias da Teoria do Caos (ou sistemas complexos adaptativos) para explicar porque os métodos ágeis/adaptativos são melhores que os métodos tradicionais no desenvolvimento de software.

Também vale a pena dar uma lida! Quem arranjar esse livro, me empresta! 🙂

Código Limpo

Bons programadores com certeza já investiram algum tempo limpando seu próprio código. Eles fazem isso porque aprenderam que código limpo é mais fácil de mudar do que código complexo e bagunçado, e bons programadores sabem que raramente eles escrevem código limpo logo de cara.

Martin Fowler, em Refatoração