En el libro El programador pragmático , los escritores mencionan la programación por concepto de coincidencia . Explica qué es, por qué se causa, cuáles son los peligros que puede encontrar y se compara con un campo de minas terrestres en una guerra.
¿Alguna vez has visto viejas películas de guerra en blanco y negro? El soldado cansado avanza con cautela fuera de la maleza. Hay un claro por delante: ¿hay minas terrestres o es seguro cruzar? No hay indicios de que sea un campo minado, sin signos, alambre de púas o cráteres. El soldado empuja el suelo delante de él con su bayoneta y sus muecas, esperando una explosión. No hay uno Así que avanza minuciosamente por el campo por un tiempo, empujando y hurgando mientras avanza. Finalmente, convencido de que el campo está a salvo, se endereza y marcha con orgullo hacia adelante, solo para volar en pedazos.
Las sondas iniciales del soldado para las minas no revelaron nada, pero esto fue simplemente afortunado. Fue llevado a una falsa conclusión, con resultados desastrosos.
Como desarrolladores, también trabajamos en campos minados. Hay cientos de trampas esperando para atraparnos cada día. Recordando la historia del soldado, debemos tener cuidado de sacar conclusiones falsas. Deberíamos evitar la programación por coincidencia, confiando en la suerte y los éxitos accidentales, a favor de la programación deliberada ...
Pero no estoy realmente satisfecho con la forma en que describen el problema de "cómo superarlo". Sí, tienes que pensar antes de escribir el código, pero ¿cómo practicar eso? Lo único que puedo pensar es al agregar características a los proyectos de código abierto existentes, donde debe tener conocimiento tanto de "lo que estoy haciendo ahora" como de "cómo funcionan los otros códigos", y no es tan aplicable cuando escribes tus propios proyectos.
EDITAR:
un resumen de tus publicaciones:
- No adivines tu próximo movimiento, prueba que es correcto
- Prueba unitaria y refactorización tanto como sea posible, cuando sea necesario
- Agregue funciones, compile y pruebe a menudo
- Si no puede explicar el código a un novato, probablemente esté programando por coincidencia.
Por cierto, es difícil aceptar una respuesta, es realmente difícil. Todas las respuestas son realmente geniales :)