¿Existe una correlación entre el código feo y el código que se escribió rápidamente?

El sentido común dice que si te tomas tu tiempo en algo, te dará un mejor resultado, incluida la codificación. Sin embargo, estoy seguro de que hay un montón de código feo que tardó mucho tiempo en escribirse. ¿Por qué, con tanto tiempo, terminarías con un código difícil de leer o una mala arquitectura? Es probable porque hubo una falta de comprensión del problema o un modelo insuficiente del que se derivó la implementación. O se tomaron malas decisiones. O simplemente estaban involucrados malos programadores / programadores.

Dicho de otra manera, estoy seguro de que un programador competente puede escribir código hermoso en poco tiempo si conoce bien el problema y tiene una buena comprensión del lenguaje y modela el problema correctamente. Especialmente si conoce patrones que son aplicables al problema que se está resolviendo (lo que quiero decir con esto es que siento que soy un buen programador, pero generalmente reconozco que mi primer intento (quizás el segundo o el tercero) en un dominio en el que soy nuevo es va a ser descartable, simplemente porque la experiencia conduce a patrones, y los patrones conducen a la organización, buena arquitectura, limpieza).

Actualmente estoy pagando mi hipoteca refactorizando el código que está en su cuarta reescritura (y uno de los objetivos principales es que sea legible) con un historial de 5 años (ingresé hace 8 meses). Creo que lo que hace que el código sea más legible esta vez es 1) ahora entendemos el modelo / dominios / patrones * realmente * bien, 2) tenemos las personas adecuadas con las habilidades adecuadas para implementar el código, y 3 ) tenemos un gerente que nos brinda el tiempo y el apoyo que necesitamos para hacerlo con más cuidado.

Entonces, mi sensación es esta: el tiempo es una pieza del rompecabezas, pero no es tanto un factor como comprender bien el problema, modelar la solución adecuadamente y hacer que personas de calidad hagan el trabajo. Al menos, eso es lo que he llegado a creer a lo largo de los años.

Si tuviera que representar gráficamente “belleza” (en lugar de fealdad) y tiempo de comercialización (o como usted dice, código escrito rápidamente), tendría 3 ejes: belleza, tiempo de comercialización y complejidad. Para la complejidad más baja, digamos que el código que es trivial, el tiempo de comercialización y la belleza están positivamente correlacionados. A medida que aumenta la complejidad, el gráfico de las curvas de belleza frente a tiempo de comercialización vuelve a bajar … es decir, el código hermoso reduce el costo variable del código para problemas más complejos (¿Te imaginas cuánto más llevaría piratear algo como Google Maps?)

Todo buen programador que ha pasado mucho tiempo al comienzo de un proyecto creando código muy hermoso y sofisticado finalmente llega a un punto en el proceso en el que las piezas, incluso las imprevistas, comienzan a encajar fácilmente como si fueran armoniosas y significaran ser. 🙂

Ser bueno en la programación se habla bien en un lenguaje apropiado, así que piénselo de esta manera: ¿puede hablar de manera elegante, clara y gramaticalmente correcta hablando rápida o lentamente?