¿Las aplicaciones necesitan que su código fuente sea reescrito por completo para llegar a la siguiente etapa seria o pueden desarrollarse extraordinariamente a partir de su código original?

Sigo pensando que Fred Brooks, en The Mythical Man-Month , tuvo la mejor idea. La respuesta tl; dr es “sí, dos veces”.

Los componentes son los siguientes:

La pregunta no es si construirás un prototipo. Construirás un prototipo. La pregunta es si intentará reparar el prototipo y venderlo, o si lo hará bien.

También dijo que el segundo sistema grande de un desarrollador de software es el más peligroso, porque entonces pensarán que han aprendido las lecciones y se regularizarán en exceso. Creo que las aplicaciones son lo suficientemente diferentes como para que esto se aplique a la segunda versión de cualquier programa.

Entonces, digo, la tercera es la vencida. La primera vez, no entiendes el problema lo suficientemente bien. La segunda vez, crees que entiendes el problema lo suficientemente bien, pero no entiendes cómo te equivocas. La tercera vez, tienes una mejor oportunidad.

(dijo, listo para embarcarse en la tercera versión de un programa de pintura / textura …)

Si el código es modular y está detrás de interfaces con pruebas unitarias, es mucho más fácil cambiar las partes que cambian.

Si no se construye de esa manera (1 nivel, gran bola de barro), a menudo es más fácil reescribirlo. Lo cual es una maldita vergüenza.

Si los requisitos cambian enormemente, puede ser más fácil reescribir, independientemente de una buena estructura, y eso está bien.