No livro Programador Pragmático , os escritores mencionam a programação por conceito de coincidência . Explica o que é, por que é causado, quais são os perigos que você pode encontrar e se compara a um campo de minas terrestres em uma guerra.
Você já assistiu velhos filmes de guerra em preto e branco? O soldado cansado avança cautelosamente para fora do mato. Há uma clareira pela frente: existem minas terrestres ou é seguro atravessar? Não há indicações de que seja um campo minado - sem sinais, arame farpado ou crateras. O soldado cutuca o chão à sua frente com sua baioneta e estremecimentos, esperando uma explosão. Não existe um. Então, ele prossegue meticulosamente pelo campo por um tempo, cutucando e cutucando enquanto caminha. Por fim, convencido de que o campo é seguro, ele se endireita e marcha orgulhosamente para a frente, apenas para ser despedaçado.
As sondas iniciais do soldado para minas não revelaram nada, mas isso foi apenas uma sorte. Ele foi levado a uma conclusão falsa - com resultados desastrosos.
Como desenvolvedores, também trabalhamos em campos minados. Há centenas de armadilhas esperando para nos pegar todos os dias. Lembrando a história do soldado, devemos ter cuidado em tirar conclusões falsas. Devemos evitar a programação por coincidência - confiando na sorte e em sucessos acidentais - em favor da programação deliberada ...
Mas não estou realmente satisfeito com a maneira como descrevem o problema "como superá-lo". Sim, você precisa pensar antes de escrever o código, mas como praticar isso? A única coisa que consigo pensar é adicionar recursos aos projetos de código aberto existentes, nos quais você deve ter conhecimento sobre o "o que estou fazendo agora" e o "Como os outros trechos de código estão funcionando", e isso não é aplicável. quando você está escrevendo seus próprios projetos.
EDITAR:
um resumo de suas postagens:
- Não adivinhe o seu próximo passo, prove que está correto
- Teste de unidade e refatorar o máximo possível, quando necessário
- Adicione recursos - compile - teste frequentemente
- Se você não pode explicar o código para um noob, provavelmente está programando por coincidência.
BTW, é difícil aceitar uma resposta, é realmente difícil. Todas as respostas são realmente ótimas :)