O documento discute como a entropia afeta a evolução de sistemas computacionais e como o refactoring pode ser usado para reduzir a entropia. Apresenta também os principais tipos de atrito ao refactoring, especialmente o atrito arquitetural relacionado a impactos desconhecidos e indesejáveis das mudanças. Defende três princípios do Design to Refactor: não se intrometer, não se comprometer e não se expor, para permitir refactors com menor impacto.