When you see a good move, look for a better one.
—Emanuel Lasker, 27-year world chess champion
Na minha experiência, o maior driver da complexidade acidental é o fato de os programadores adotarem o primeiro rascunho, simplesmente porque ele funciona. Isso é algo que podemos aprender com nossas aulas de redação em inglês. Eles constroem a tempo de passar por vários rascunhos em suas tarefas, incorporando o feedback dos professores. Aulas de programação, por algum motivo, não.
Existem livros cheios de formas concretas e objetivas de reconhecer, articular e corrigir códigos abaixo do ideal: Código Limpo , Trabalhando efetivamente com o código herdado e muitos outros. Muitos programadores estão familiarizados com essas técnicas, mas nem sempre têm tempo para aplicá-las. Eles são perfeitamente capazes de reduzir a complexidade acidental, eles simplesmente não têm o hábito de tentar .
Parte do problema é que muitas vezes não vemos a complexidade intermediária do código de outras pessoas, a menos que tenha passado por revisão por pares em um estágio inicial. O código limpo parece fácil de escrever, quando na verdade envolve vários rascunhos. Você escreve primeiro a melhor maneira que vem à sua cabeça, percebe complexidades desnecessárias que ela introduz, então "procure por um movimento melhor" e refatore para remover essas complexidades. Então você continua "procurando por um movimento melhor" até não conseguir encontrar um.
No entanto, você não coloca o código para revisão até depois de todo esse churn, então externamente parece que também pode ter sido um processo tipo Feynman. Você tem uma tendência a pensar que você não pode fazer tudo um pedaço desse jeito, então você não se incomoda tentando, mas a verdade é que o autor desse código maravilhosamente simples que você acabou de ler normalmente não pode escrever tudo em um pedaço assim também, ou se puderem, é só porque eles têm experiência em escrever código semelhante muitas vezes antes, e agora podem ver o padrão sem os estágios intermediários. De qualquer forma, você não pode evitar os rascunhos.