El principio YAGNI o You Aren’t Gonna Need It, es un principio de optimización de trabajo en el desarrollo de software que establece que los componentes deben añadirse cuando sean estrictamente necesarios. Este principio forma parte de la filosofía de la llamada programación extrema (XP), que contribuye a evitar el exceso y la ineficacia y concretar un producto informático en menor tiempo.
Esta filosofía logra que los desarrolladores desperdicien esfuerzos en características que solo forman parte de una suposición de su uso en “algún momento”. El principio YAGNI influye para que el trabajo se realice bajo términos pragmáticos y utilitarios, de manera que los desarrolladores se enfoquen en las características y componentes realmente necesarios.
El principio YAGNI está diseñado para los desarrolladores que tienden a considerar el futuro para programar características adicionales, asumiendo que se necesitarán más adelante. Cuando el desarrollador se enfoca en los componentes principales de un programa se logra un mejor trabajo y se invierte menos tiempo para concretar cada versión.
La importancia de la implementación del principio YAGNI
En el desarrollo de un software existen factores que son de vital importancia, principalmente para la empresa que hace la inversión. Estos factores son: tiempo y economía. Es por eso, que en la medida en que se logra optimizar el tiempo, también se logran concretos y mejor consolidados y si por cada software se invierte menos tiempo, significa que hay oportunidad de aumentar la producción.
Ventajas del principio YAGNI
El principio YAGNI contribuye a mantener los costes de inversión, los costes de oportunidad y optimiza el tiempo de implantación. Además, si solo se llevan a cabo los requisitos que deben implementarse de manera concreta, estas son algunas ventajas:
- Se evita la dispersión de funciones.
- No se crea «bloatware», es decir, software con funciones que apenas se utilizan o que no se utilizan en absoluto.
- Las funciones que no se implementan no tienen que ser probadas, documentadas y soportadas. Por tanto, no hay esfuerzo (innecesario).
- El beneficio aumenta, porque se elimina el esfuerzo para la implementación de funciones supuestamente necesarias.
- La base de código sigue siendo más «magra» y, por lo tanto, es más fácil de mantener.
El principio YAGNI es el complemento del principio KISS
El Principio KISS busca la solución más sencilla posible a una complejidad. El principio YAGNI complementa al KISS planteando la pregunta «¿realmente necesitamos esto?», propiciando una respuesta más acorde a la orientación de evitar trabajos innecesarios.
La complementariedad de ambos principios, propicia que no se implementen patrones, no se utilicen bibliotecas y no se automaticen los procesos de despliegue. Ocurre con regularidad que los desarrolladores suelen cargarse de tareas, por lo que, estás técnicas plantean mayor eficiencia en el proceso de trabajo para que todos los procesos funcionen de forma rápida y más fácil.
Adicionalmente, el principio YAGNI también está destinado a ser utilizado en combinación con otras prácticas, como la refactorización continua, las pruebas unitarias, automatizadas continuas y la integración continua. Sin estas prácticas podría conducir a un código desorganizado y a una carga mayor de trabajo, conocido como deuda técnica.
Conclusiones
El Principio YAGNI se desarrolló en el contexto de la Programación Extrema (XP) y demanda que se ponga fin a la práctica común y que se implementen solo aquellas características que realmente se necesiten, se discutan o se encarguen. El principio YAGNI es esencial porque contribuye a optimizar el trabajo, al desechar la posibilidad de ejecutar tareas innecesarias.
La filosofía YAGNI mejora la productividad de los desarrolladores y la simplicidad del producto. Las funciones son caras, tanto para desarrollarlas y mantenerlas, por lo que las características que no son realmente necesarias son una enorme fuente de desperdicio.
¿Qué te pareció el principio YAGNI? Dejame tu comentario y no te olvides de compartirla 😄
Comentarios recientes