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