Estaba pensando hoy en el libro de Paul Graham "Hackers and Painters". Más específicamente, estos dos párrafos :
"Me enseñaron en la universidad que uno debería averiguar un programa Completamente en papel antes incluso de acercarse a una computadora. Encontré que yo No se programó de esta manera. Encontré que me gustaba programar sentado en Frente de una computadora, no un trozo de papel. Peor aún, en lugar de Escribiendo pacientemente un programa completo y asegurándome que era Correcto, tendía a expulsar código que estaba irremediablemente roto. y poco a poco se bate en forma. La depuración fue una especie de pase final. donde atrapaste errores tipográficos y descuidos ... [It] parecía programación consistió en la depuración.
... Por lo que puedo decir, la forma en que me enseñaron a programar en la universidad estaba todo mal Deberías descubrir programas mientras los escribes, tal como lo hacen los escritores, pintores y arquitectos ".
Así es como se enseña en mi universidad y estoy bastante seguro de que la mayoría de las otras universidades también. Descubres lo que hará tu programa, y luego averiguas cómo hacerlo, luego escribes y depuras. A veces creas una versión básica y agregas funcionalidad, pero la idea es que pienses bien y luego escribes.
Este tipo de recordatorios de ese capítulo en el libro de Feynman llamado "¡Él resuelve radios pensando!" donde caminaba pensando en cómo podría romperse la radio, y luego lo arregla. Para mí, de eso se trata la programación: pensar y luego encontrar una solución.
¿Es este el enfoque predominante para la codificación? Si es así, ¿por qué no hay más personas que pirateen y armen un programa sin tener una idea preconcebida de cómo se verá?
¿Cuáles son las ventajas y desventajas de think & tipo vs spew & latido?