Es una frustración constante en el campo del desarrollo de software que, a veces, es necesario cortar atajos y sacrificar la calidad.
Hay un modelo antiguo, llamado triángulo de gestión de proyectos, que tiene un equilibrio de tres vías entre las restricciones de cualquier proyecto.
- ¿Son felices los programadores competitivos cuando trabajan como ingenieros de software?
- ¿Cuál es la diferencia entre desarrollo web e ingeniería de software?
- ¿Qué debe hacer cuando la aplicación web principal de su inicio se vuelve inutilizable, pero el código es difícil de mantener?
- ¿Hay algo como Codecademy, pero para algoritmos y diseño de software?
- ¿Qué piensa sobre los hallazgos sobre el artículo y los resultados del "mayor elemento disuasorio para las mujeres en tecnología"?
Estas restricciones están en competencia, y no puede tenerlas todas al mismo tiempo.
En algunos proyectos, es muy importante lograr una alta calidad, por ejemplo, escribir código limpio que sea fácil de mantener y tenga buenas pruebas, etc.
En algunos otros proyectos, es más importante cumplir con una fecha límite. Por ejemplo, si tiene una fecha importante en la que va a demostrar el producto en un evento, o si necesita mostrar un prototipo viable para obtener financiación, o ha programado muchos otros recursos costosos en anticipación al lanzamiento del producto.
Entonces, en algunos casos, puede ser bueno escribir un código “rápido y sucio” para cumplir con la fecha límite. Básicamente estás sacrificando la parte “buena” del triángulo de arriba.
Un desarrollador que puede comprender las limitaciones de un proyecto determinado y adaptar su trabajo para satisfacer esas restricciones es un buen desarrollador.
Sin embargo, una vez que alcancemos la fecha límite, es importante revisar las prioridades y refactorizar el código, o incluso volver a implementarlo desde cero. Trate la implementación inicial rápida y sucia como un prototipo, no como el producto final. Depende del desarrollador dejar en claro que esto debe hacerse, y es responsabilidad de la gerencia apoyarlos en ese trabajo.