¿Debería invertir más tiempo pensando en la arquitectura antes de la codificación, o debería escribir menos código estructurado más rápido e iterar sobre el prototipo de trabajo para implementar una arquitectura más fuerte en un momento posterior?

Recuerdo haber tenido una discusión con alguien hace mucho tiempo (disculpas a la persona, si recuerdo quién es, me aseguraré de darle crédito). Pero básicamente la teoría era que los ingenieros pasan por tres fases. Sé que ciertamente lo hice.

Fase 1: Sub-abstracto todo.

No usan funciones, copian + pegan código, abusan de estructuras de datos, etc. Las causas principales aquí son probablemente ser flojas y no reconocer las terribles consecuencias de escribir código como este.

Fase 2: Sobreextraer todo.

Si ha utilizado recientemente la frase “este problema se haría mucho más fácil con un AbstractFactory”, probablemente esté aquí. Piensa en un problema y ve instantáneamente cómo puede resolverse de manera elegante para todos los casos de uso posibles a través de una jerarquía de clase increíblemente complicada que, literalmente, nadie más entenderá ni utilizará.

Fase 3: Después de años de errores, llegan a una idea básica del nivel correcto de abstracción para un punto dado en una tarea.

Cuantas más incógnitas haya, probablemente tenga más sentido comenzar a escribir código y resúmenes sobre la marcha. Tan pronto como vea que algo se complica o se necesita en otra parte, resuma esa pieza. Evite tratar de hacer “una abstracción para gobernarlos a todos”. Muchos cuchillos pequeños pueden ser mejores que un machete grande.

Por el contrario, si está relativamente familiarizado con lo que debe hacerse (por ejemplo, crear un sitio web básico utilizando un marco con el que esté familiarizado), probablemente pueda saltar directamente al nivel correcto de abstracción.

Nunca escriba arquitectura hasta que sepa que puede ayudarlo a repetir / estabilizar / optimizar una solución bien definida. Hasta entonces, tome el camino más rápido hacia un prototipo que (des) demuestre sus suposiciones iniciales e repita hasta que tenga algo que desee mantener durante un tiempo. Luego, conviértalo en arquitecto correctamente para que se sostenga.

He visto arquitecturas construidas durante varios meses para una solución que resultó no ser deseable (y de hecho nunca se usó una vez para nada práctico). También he visto hacks que solo tomaron un día o dos para resolver algunos problemas realmente grandes. Este último definitivamente fue un mejor uso del tiempo.

Obviamente, siempre hay una necesidad de equilibrio. Intente escribir un código sensato teniendo en cuenta la seguridad, la privacidad y la estabilidad, incluso si solo está pirateando algo juntos. Simplemente no pierdas de vista lo que realmente estás tratando de lograr al final.

iterar sobre el prototipo de trabajo, lo recomiendo, simplemente porque tendrá una visión más clara hacia el punto final, para guiar la arquitectura a largo plazo.
Realmente no sabes qué llaves se pueden lanzar a las obras sin un prototipo primero, he encontrado.
Espero que esto ayude ~
¡Mejor!
Blake

A menos que tenga un plan establecido en piedra (que nunca tiene), siempre comience con un prototipo e itere. Nunca comience con la arquitectura simplemente porque no sabe cuáles son los problemas o incluso cuál será el producto final. Estas son cosas que solo puedes aprender a través de “solo hacerlo”.

Además, el prototipo es más fácil de tirar a la basura que algo que hundió meses de trabajo solo para que funcione. Preocúpese por los problemas de arquitectura solo cuando los enfrente.