Las metodologías ágiles se venden solas. Ya desde el nombre, que comparado con otros, resulta simpático y agradable. Personalmente, «waterfall» siempre me sonó a que vamos a terminar en caída libre, «Modelo en V» suena a corte y confección, y siglas como UP o RUP dicen poco y nada.
Más allá de los nombres, hay que admitir que los principios ágiles son atractivos y tienen sentido. Es comprensible que todo el mundo quiera «ser ágil», que los clientes demanden utilizar estas metodologías, y que cualquier proyecto parezca más manejable utilizando esos principios.
Sin embargo, sucede que la mayoría de las veces, se proclama que se está trabajando con metodologías ágiles, cuando en realidad lo que se está haciendo es un «mini waterfall», dividido en iteraciones y bastante desorganizado. Esto lleva a que las funcionalidades parece que nunca están terminadas, que se entrega al usuario final basura inutilizable y que las integraciones resultan más dolorosas y complejas que mil proyectos waterfall juntos.
Cómo se resuelven la mayoría de estos problemas? Se resuelven cortando bien la torta…
No, no enloquecí. Tampoco voy a pasarte una receta para hacer bizcochuelo. Resulta que la metáfora de la torta es útil para graficar la forma de trabajar correctamente con user stories. Y sucede que las user stories son la clave de cualquier proyecto agile. Podemos estar cumpliendo con todos los principios y prácticas ágiles, y aun así no estar siendo verdaderamente ágiles, porque las user stories nos están llevando a trabajar en cascada.
Las stories son una forma de especificar requerimientos que parece bastante simple. Y la tentación de escribir una story por componente es bastante grande. Sin embargo, es lo mismo que cortar una torta horizontalmente.
Pensemos en una torta. Básicamente, está formada por capas. Y cada capa aporta su sabor para combinarse con las demás. Si cortáramos la torta en forma horizontal, tendríamos que a algunos les tocaría un pedazo de bizcocuelo, a otros el dulce de leche o la crema, y a otros los merengues. Ningún comensal podría probar todos los sabores combinados, y por consiguiente, ninguno podría decir que realmente probó la torta.
Lo mismo sucede con el enfoque de escribir una user story por componente. Puede funcionar todo bien separadamente, pero cuando intentamos integrar todo, encontramos miles de problemas.
Es por eso que se compara a las stories con una porción de torta (bien cortada). Esta porción debe abarcar desde la cobertura, hasta el piso inferior de bizcochuelo, para que se pueda probar («testear») todo junto.
Cada user story debería tomar una porción de la funcionalidad, de punta a punta. Las distintas stories, sumadas, terminan abarcando toda la torta, pero cada una de ellas debe entregar una funcionalidad que puede ser probada independientemente de las demás.
De esta manera, se facilita el trabajo de todo el equipo, y especialmente el de Testing, ya que al poder contar con la funcionalidad de punta a punta, estamos integrando desde la primera iteración, y por ende, minimizando riesgos.
La contra es que requiere de un análisis minucioso. No se trata de sentarse con el cliente y empezar a escribir stories a la vez que el cliente va diciendo lo que quiere. Es una tarea mucho más compleja y que requiere de un armado cuidadoso, ya que se necesita imaginar de punta a punta una funcionalidad que por lo general no existe.
Sin embargo, la tarea vale la pena. Nos va a garantizar que en cada iteración estaremos entregando funcionalidad útil al ciente, y por sobre todas las cosas, que con cada story estaremos probando el sistema de punta a punta, lo que significa detectar los problemas tempranamente y minimizar el riesgo. Por lo tanto, si bien estaremos invirtiendo más tiempo en el armado de las user stories, estaremos ganando tiempo en planificación y ejecución de las pruebas.
Por eso es tan importante cómo se corte la torta. Como testers, deberíamos pedir que nos corten verdaderas porciones, y no un pedacito de bizcochuelo por acá, una cucharada de crema por allá, unas nueces por el otro lado… Si no probamos todos los sabores combinados, no podemos decir si la torta estaba rica o no.