Formar parte de un proceso de cambio cultural duradero en una empresa tiene sus ventajas y sus inconvenientes. Como empresa y como equipo empezamos a introducir Ágil en nuestra cultura hace unos cinco años. Los efectos de un cambio tan grande son diversos, pero he aquí dos de los más importantes:
Por un lado, se produjeron cambios en la forma de organizar nuestro trabajo y de colaborar entre nosotros, como se describe en nuestro Informe Experiencia Ágil publicado en la Sitio web de la Alianza Ágil.
Por otro lado, los efectos pueden observarse directamente en el código fuente y la arquitectura de nuestra aplicación. Nuestro software se basa en los conceptos de Arquitectura Limpia definidos por Robert C. Martin. La Arquitectura Limpia es una variante de la antigua y bien establecida Arquitectura Hexagonal. Se centra principalmente en la separación de preocupaciones, capas y responsabilidades. El diseño de una arquitectura de este tipo requiere un profundo conocimiento de los patrones de diseño de software, las prácticas ágiles, los principios SOLID y algunos trucos de diseño orientados al dominio.
Las ventajas inmediatas de una base de código de este tipo son evidentes. Los módulos desacoplados permiten realizar cambios de forma aislada y con un bajo riesgo de que otros módulos se vean afectados. Esto, a su vez, se traduce en un menor número de errores y regresiones. Se limitan los comportamientos inesperados cuando hay que hacer cambios en el software existente. Cuando hay que implementar nuevas funciones, los módulos son prácticamente independientes y los cambios en el código existente son muy escasos. De este modo, la propia arquitectura puede acomodar fácilmente nuevo código.
"En un sistema ideal, incorporamos nuevas funciones ampliando el sistema, no haciendo modificaciones en el código existente".
- Robert C. Martin, Código limpio: A Handbook of Agile Software Craftsmanship.
Hablemos ahora de las desventajas. Después de trabajar para conseguir un sistema tan bonito en una empresa que fomenta cualquier cosa Ágil, tiendes a olvidar cómo es el mundo exterior en realidad. Empiezas a creer que todo el universo del software es como el tuyo, o si no lo es, está en camino de serlo. Agile significa tanto y tiene tantas ventajas que no puedes imaginar ningún software que no se ajuste estrictamente a él. Empiezas a vivir en tu propio universo burbuja.
Luego tienes que colaborar en otros proyectos y la realidad te golpea con fuerza. Agile sigue siendo un método de desarrollo de software relativamente nuevo. Tiene unos 14 años; apenas se definió en 2001. La mayor parte de la industria sigue utilizando técnicas de gestión de proyectos y desarrollo de software que se definieron en los años setenta u ochenta. Esas son las tecnologías establecidas. Son las que están grabadas en nuestra cultura. Son métodos probados, aplicados y demostrados. Son las que utiliza la inmensa mayoría del sector.
Y me llena de una extraña sensación cada vez que me doy cuenta de la triste verdad que me rodea.