Este entrada trata de un tema clave en nuestra adopción de la mentalidad digital, relacionada a la visión de la construcción de un producto y de las entregas de valor constante al Cliente. En la implementación de nuestras soluciones digitales esta es una de nuestras premisas: preferimos más una implementación evolutiva.
Iterativo e incremental vs evolutivo
Pareciera el tema simple o trivial o confuso, y es un verdadero desafío en la construcción de productos con un enfoque ágil. ¿Cómo inicio la construcción? ¿qué entrego primero? ¿cómo se proporciona valor al Cliente? ¿iterativo e incremental o evolutivo, es lo mismo? ¿un arquitectura evolutiva?
En la actualidad, se habla de escalamiento de Organizaciones ágiles, de estandarización de prácticas, entre otros temas. Sin embargo, las inquietudes propuestas en esta entrada, no son comprendidas ampliamente en el desarrollo de productos de software.
Cuando un equipo de un producto inicia una aventura ágil por lo general se centra en entregas rápidas no productivas que muestran el avance de la construcción. Sin embargo, esto no quiere decir que esto sea propiamente ágil aunque sea iterativo e incremental.
Desde el nacimiento de RUP en el año 1996, se propuso un proceso que se fundamenta en ciclos iterativos con incrementos de producto, gestión de requisitos basados en casos de uso y una arquitectura basada en componentes. RUP es quizás el proceso en cascada más conocido en procesos de desarrollo.
Los ciclos iterativos con incrementos de producto consisten en entregas de funcionalidad que permitan al equipo de trabajo acercarse a la meta del proyecto. No en todos los casos implica un producto terminado, y en la mayoría de ocasiones se implementan piezas separadas en componentes que luego se ensamblan para terminar un componente completo que hace parte de la realización de una funcionalidad (caso de uso).
Un enfoque iterativo e incremental planteado en un ejemplo sencillo, es la construcción de un vehículo de combustión para un Cliente. Una iteración puede ser definida en la construcción del chasis y el motor en paralelo, y al finalizar el ciclo se terminarán los componentes; sin embargo, el Cliente no podrá disfrutar del vehículo.
Entonces, ¿cuál es en verdad un enfoque ágil?, para explicarlo desde un punto de vista simple, vamos a desarrollar un ejercicio que lo llamo “la casa de mis sueños“.
La casa de mis sueños
Juan, tiene la intensión de comprar la casa de sus sueños (Supongamos que la casa de los sueños de Juan es la de Homer Simpson). El quiere que se cristalice su sueño y habitar su casa cuanto antes.
Juan, tiene un sueño, y para cumplirlo quiere que una constructora le construya su casa. Así, Juan entra en contacto con una constructora que implementa proyectos de construcción tradicional.
Dicha constructora captura su necesidad, planificando el proyecto en un cronograma, elaborando los costos y los planos necesarios, entre otros elementos. Luego de la aprobación de Juan iniciará la ejecución del proyecto.
En el proceso de ingeniería tradicional el Cliente tiene claro que debe aportar el dinero para financiar el proyecto, pero no verá su proyecto útil hasta su finalización. Es decir, obtendrá valor real, solo hasta que finalice la construcción de su casa, entendiendo este como la medida de avance principal que le producirá la verdadera necesidad que desea suplir: habitar la casa de sus sueños.
En proyectos con economía de escala, para el Cliente será aún más complejo el proceso, porque obtendrá un resultado final el cual es posible que no comparta. Si quisiera alguna personalización implicará un re trabajo y la generación de desperdicios indeseados.
En el modelo clásico se llevarán a cabo una serie de etapas, o iteraciones en las cuales se construirán las partes claves de la casa. En la siguiente figura se aprecian las fases a seguir en el modelo tradicional de construcción de vivienda.
Nota. No soy un experto en construcción de vivienda, pero este ejemplo me sirve para mostrar el enfoque evolutivo de la mentalidad ágil.
Note, que el valor que recibirá Juan solo se obtendrá una vez se finalice el proyecto y se concluyan los acabados finales.
Si Juan visita la obra de su casa encontrará algo como lo que se muestra en la anterior imagen, en donde, podrá observar las vigas de su casa, pero no logrará vivir allí todavía.
Si Juan visita la obra otro día, podrá ver algo como lo que aparece en la siguiente imágen. Sin embargo, es posible que entre en una etapa de incertidumbre o de impaciencia, pues no podrá todavía disfrutar de la casa de sus sueños.
Al finalizar varios meses o quizás algunos años, Juan tendrá su casa y la habitará. Con ello obtendrá el valor prometido y cumplirá su sueño de vivienda.
La pregunta es, será que hay otras maneras de hacer las cosas. Probablemente existan muchas, pero me enfocaré en el enfoque ágil, que es el objetivo de esta entrada.
En un modelo con Mentalidad ágil se colocará al Cliente en El Centro de todo, buscando satisfacer sus necesidades, y por ello se marcará como meta brindar el mayor valor en etapas tempranas, facilitándole que pueda habitar su casa cuanto antes.
En la figura anterior se muestra un plan de entregas (releases) que pretende que Juan empiece a disfrutar de la casa de sus sueños en etapas tempranas. Para esto, el equipo constructor se ha enfocado en el mvp (roducto mínimo viable) que le genera valor a Juan, buscando que él pueda habitar cuanto antes su terruño.
Para ello, el equipo construye el garaje de la casa, permitiéndole a Juan habitarlo si así lo quiere. Aunque, tendrá que ir donde algún familiar cuando requiera utilizar el baño o requiera cocinar algún plato especial.
Aquí, yace la diferencia, pues Juan y el equipo constructor empiezan a tener una retroalimentación más corta, brindando valor en etapas tempranas. La opinión de Juan puede ser importante porque al utilizar su garaje podrá darse cuenta de detalles que le servirán al equipo constructor en el proceso de mejora continua, así como lo oyen.
Es posible que a Juan le cause alergia el piso de su garaje, y al tener rápidamente datos concretos de esta reacción en su piel en etapas tempranas, se evitará que se expanda el daño; suena útil ¿no?
En la siguiente entrega los constructores podrían entregarle a Juan el baño de sus sueños. Esto, haría que él pueda permanecer más tiempo en su casa y se acercaría un poco más a la visión.
Por otra parte, tanto el constructor como Juan aprenderán mutuamente mucho más respecto al proceso de construcción.
Luego, el equipo constructor podrá entregar la sala y el comedor de la casa a Juan. Esto, le permitirá habitar con más comodidad su casa, aunque todavía no tendrá las habitaciones ni la cocina, si podrá amoblar parte de esta.
Si lo más importante fuera el valor entregado al Cliente, seguro nuestro enfoque estaría en brindar la mayor satisfacción posible constante en un un ritmo sostenible, aprendiendo de cada entrega. Esto, se acerca mucho a un enfoque ágil.
Seguro Juan, ayudará en la construcción de su casa, brindando datos relevantes al equipo constructor beneficiándose de las mejoras. Juan es parte de su sueño, suena increíble, ¿no?
Si esperamos tener todo terminado para entregar un producto, no tendremos retroalimentación de lo construido. No se podrá mejorar algo sin tener en cuenta todos los aportes de un equipo interdisciplinario, en donde cada rol aporta en su especialidad y cada cambio será muy costoso.
Ahora, bien, podríamos llamar el enfoque ágil como un ciclo evolutivo, porque parte de un producto terminado que entrega valor al Cliente, evolucionando en cada una de sus entregas hasta llegar a la visión del producto planteado: La casa de los sueños de Juan.
Todo esto implica, que se construya bajo un marco evolutivo en el cual hay una visión y una arquitectura probable, sin embargo es posible que luego de un ciclo se determine que se requieren cambios y por tal motivo la arquitectura se altere, evolucionando en beneficio finalmente del Cliente.