El principio YAGNI, no gastes tiempo en hacerlo si por ahora no lo necesitas

¿Nunca te ha tocado trabajar en un proyecto de meses porque alguien pensó que lo mejor era crear un motor meta-modelo gigante para que en el futuro si a alguien se le ocurre o pasa por la cabeza hacer un cambio en la aplicación se pueda casi automáticamente y sin aparente coste generar por medio de los meta modelos…?

Espero no ser un tipo con especial mala suerte profesional, pero me tocó trabajar en un par de proyectos de ese tipo y ver otros tantos. Bueno, y ya sabes, después de meses haciendo el meta-modelo pues o nunca nadie pide un cambio o si lo pide no lo contempla el meta-modelo o si lo contempla no hay quien lo entienda (o se nos olvidó cómo hacerlo) y no hay quien sepa generar esos “automáticos cambios en la aplicación casi sin coste”.

Y no hay que irse a los meta-modelos que prometen que si alguien en un futuro pide algo será facilísimo hacerlo. El mundo del desarrollo software está lleno de “cosas” que se hacen en el presente para, supuestamente, solucionarnos un posible futuro, que en ocasiones llega… o no. Véase los diseños complejos o las aplicaciones saturadas de patrones de diseño (algo de esto hablamos en la jornada de Kill OO)

De eso trata una práctica ágil, concretamente de eXtreme Programming, llamada el principio YAGNI (que viene de You Aren’t Gonna Need It, que viene a ser “No lo vas a necesitar”) y que dice «hazlas cosas sólo cuando realmente las necesites, no ahora, porque preveas que en un posible futuro las vas a necesitar.»

Según el YAGNI, incluso si estás totalmente seguro, 200%, de que lo vas a necesitar en el futuro… no lo hagas aún, espérate a que llegue ese momento, no vaya a ser que al final no lo necesites o que con el tiempo cambien las necesidades.
“-Hacerlo ahorrará tiempo en el futuro-”, pues será en el futuro, si ocurre, porque lo que es ahora… ahorro, lo que es ahorro no está generando.

Además, empleas ese tiempo en cosas mas productivas en este momento y no engordas las aplicaciones, recuerda aquello que hablamos en el post de si eres responsable de un software ten muy claros los peligros de medir líneas de código, el esfuerzo no crece de manera lineal según crece el tamaño de una aplicación y cuanto mayor es el software (en número de líneas de código) más cuesta mantener cada línea de código.

Todo esto habla de no recargar, de no gastar tiempo, de seguir cosas que han dicho muchos, desde foros ágiles hasta desde el Lean, sin que ello implique no poner los mínimos de flexibilidad y cambiabilidad para el futuro… pero con sentido común, ya sabes.

jgarzas

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.

0 comentarios en “El principio YAGNI, no gastes tiempo en hacerlo si por ahora no lo necesitas”

  1. Feliz año nuevo, Javier.
    Yo añadiría al concepto de YAGNI aquellas funcionalidades legacy que ya dejaron de usarse y se mantienen «por si» ( por si el cliente las necesita, por si algún día se pueden reutilizar, por si…). Lo mejor sería eliminarlas para simplificar( KISS ) nuestro código. Siempre podremos recuperarlaa del control de versiones si llegara el caso

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *