La perspectiva que tiene puede verse sesgada por la experiencia personal. Esta es una pendiente resbaladiza de hechos que son correctos individualmente, pero la inferencia resultante no lo es, a pesar de que parece correcto a primera vista.
- Los marcos tienen un alcance mayor que los proyectos pequeños.
- La mala práctica es significativamente más difícil de tratar en bases de código más grandes.
- La construcción de un marco (en promedio) requiere un desarrollador más calificado que la construcción de un proyecto pequeño.
- Los mejores desarrolladores siguen más las buenas prácticas (SOLIDAS).
- Como resultado, los marcos tienen una mayor necesidad de buenas prácticas y tienden a ser desarrollados por desarrolladores que tienen más experiencia con las buenas prácticas.
Esto significa que cuando interactúa con marcos y bibliotecas más pequeñas, el código de buenas prácticas con el que interactuará se encontrará más comúnmente en los marcos más grandes.
Esta falacia es muy común, por ejemplo, todos los médicos que me han tratado fueron arrogantes. Por lo tanto, concluyo que todos los médicos son arrogantes. Estas falacias siempre sufren de hacer una inferencia general basada en experiencias personales.
En su caso, es posible que haya experimentado predominantemente buenas prácticas en marcos más grandes y no en bibliotecas más pequeñas. Su observación personal no es incorrecta, pero es evidencia anecdótica y no aplicable universalmente.
2 modos de programación: crear más o menos exactamente lo que se solicita a través de los requisitos y KISS (programación típica), o crear lógica, servicios, etc. genéricos y reutilizables que brindan la flexibilidad que otros desarrolladores pueden necesitar (programación marco)
Estás confirmando esto aquí. Piensa en qué es un marco. No es una aplicación. Es una "plantilla" generalizada que otros pueden usar para hacer todo tipo de aplicaciones. Lógicamente, eso significa que un marco está construido en una lógica mucho más abstracta para que todos puedan usarlo.
Los creadores de framework no pueden tomar atajos porque ni siquiera saben cuáles son los requisitos de las aplicaciones posteriores. Construir un marco de trabajo los incentiva inherentemente a hacer que su código sea utilizable para otros.
Sin embargo, los creadores de aplicaciones tienen la capacidad de comprometer la eficiencia lógica porque están enfocados en entregar un producto. Su objetivo principal no es el funcionamiento del código sino la experiencia del usuario.
Para un marco, el usuario final es otro desarrollador, que interactuará con su código. La calidad de su código es importante para su usuario final.
Para una aplicación, el usuario final no es desarrollador y no interactuará con su código. La calidad de su código no es importante para ellos.
Esto es exactamente por qué los arquitectos de un equipo de desarrollo a menudo actúan como ejecutores de buenas prácticas. Están a un paso de entregar el producto, lo que significa que tienden a mirar el código de manera objetiva, en lugar de enfocarse en la entrega de la aplicación misma.
Si agrega estos puntos de entrada de abstracción, ¿realmente está cumpliendo con los requisitos de los usuarios, o está creando un marco sobre su marco existente y la pila de tecnología para facilitar futuras adiciones? ¿En qué caso atiende los intereses del cliente o del desarrollador?
Este es un punto interesante, y es (en mi experiencia) la razón principal por la cual las personas todavía tratan de justificar evitar las buenas prácticas.
Para resumir los siguientes puntos: omitir las buenas prácticas solo puede justificarse si sus requisitos (como se conocen actualmente) son inmutables, y nunca habrá ningún cambio / adición a la base de código. Alerta de spoiler: rara vez es así.
Por ejemplo, cuando escribo una aplicación de consola de 5 minutos para procesar un archivo en particular, no utilizo las buenas prácticas. Debido a que solo voy a usar la aplicación hoy, y no necesita actualizarse en el futuro (sería más fácil escribir una aplicación diferente en caso de que necesite otra).
Supongamos que puede compilar una aplicación de manera inadecuada en 4 semanas, y puede compilarla adecuadamente en 6 semanas. A primera vista, de mala calidad construirlo parece mejor. El cliente obtiene su solicitud más rápido y la empresa tiene que dedicar menos tiempo a los salarios de los desarrolladores. Ganar / ganar, ¿verdad?
Sin embargo, esta es una decisión tomada sin pensar en el futuro. Debido a la calidad de la base de código, realizar un cambio importante en el construido de manera inadecuada tomará 2 semanas, mientras que realizar los mismos cambios en el construido correctamente lleva 1 semana. Puede haber muchos de estos cambios en el futuro.
Además, hay una tendencia a que los cambios requieran inesperadamente más trabajo del que inicialmente pensabas en bases de código construidas de forma inadecuada, lo que probablemente aumenta el tiempo de desarrollo a tres semanas en lugar de dos.
Y luego también está la tendencia a perder el tiempo buscando insectos. Este suele ser el caso en los proyectos en los que se ha ignorado el registro debido a limitaciones de tiempo o la falta de voluntad para implementarlo porque distraídamente trabajas asumiendo que el producto final funcionará como se esperaba.
Ni siquiera necesita ser una actualización importante. En mi empleador actual, he visto varios proyectos que se construyeron de manera rápida y sucia, y cuando el más pequeño error / cambio tuvo que realizarse debido a una falta de comunicación en los requisitos, eso condujo a una reacción en cadena de la necesidad de refactorizar módulo tras módulo . Algunos de estos proyectos terminaron colapsando (y dejando un desastre imposible de mantener) incluso antes de que lanzaran su primera versión.
Las decisiones de acceso directo (programación rápida y sucia) solo son beneficiosas si puede garantizar de manera concluyente que los requisitos son exactamente correctos y que nunca será necesario cambiarlos. En mi experiencia, nunca me he encontrado con un proyecto donde eso sea cierto.
Invertir el tiempo extra en buenas prácticas es invertir en el futuro. Los errores y cambios futuros serán mucho más fáciles cuando la base de código existente se base en buenas prácticas. Ya estará pagando dividendos después de que solo se realicen dos o tres cambios.