Nota: este artículo es una traducción del artículo de Matt Wynne publicado originalmente en inglés en diciembre de 2015 y disponible aquí.
Antes de tomar una historia de usuario para desarrollo, es crucial tener una conversación para clarificar y confirmar los criterios de aceptación.
Alguna gente hace esto durante la reunión de refinamiento de backlog o en sesiones de Planning Poker. Otros equipos hacen reuniones específicas de los tres amigos, talleres de especificación o talleres de discovery.
De cualquier forma que llames a esta conversación, muchos equipos la encuentran difícil, al no ser una conversación estructurada suele llevar mucho tiempo y se torna aburrida. Como consecuencia de ello, algunos no la hacen de forma regular o consistente, o tal vez directamente dejan de hacerla.
He descubierto un método simple y poco tecnológico para hacer que esta conversación sea corta y poderosamente productiva. Lo llamo Example Mapping.
Cómo funciona
Los ejemplos concretos son una excelente manera de ayudarnos a explorar el dominio del problema y constituyen una excelente base para nuestras pruebas de aceptación.
Pero a medida que discutimos estos ejemplos, hay otras cosas que surgen en la conversación que también merecen ser capturadas:
- reglas que resumen un conjunto de ejemplos o expresan restricciones acordadas acerca del alcance de una historia.
- preguntas acerca de escenarios en los que nadie en las conversaciones sabe cuál es el resultado correcto. O suposiciones que estamos haciendo para poder avanzar.
- nuevas historias que descubrimos o slicieamos y diferimos fuera del alcance.
La técnica de mapeo de ejemplos utiliza un paquete de fichas bibliográficas o tarjetas de 4 colores y algunos bolígrafos para capturar estos diferentes tipos de información a medida que se desarrolla la conversación. Mientras hablamos, los capturamos en las tarjetas y los organizamos en un mapa.

Comenzamos escribiendo la historia en discusión en una tarjeta amarilla y colocándola en la parte superior de la mesa.
A continuación, escribimos cada uno de los criterios de aceptación, o reglas que ya conocemos, en una tarjeta azul y los colocamos en la mesa debajo de la tarjeta de historia amarilla.
Para cada regla, es posible que necesitemos uno o más ejemplos para ilustrarla. Los escribimos en una tarjeta verde y los colocamos bajo la regla correspondiente.
Mientras discutimos estos ejemplos, podemos descubrir preguntas que nadie en la sala puede responder. Entonces los capturamos en una tarjeta roja y seguimos con la conversación.
Seguimos adelante hasta que el grupo esté satisfecho de que el alcance de la historia está claro, o nos quedamos sin tiempo.
Y eso es todo. Te lo dije ¡es simple!.
Feedback Instantáneo
A medida que fluye la conversación, creamos rápidamente una representación visual en la mesa frente a nosotros que refleja nuestra comprensión actual de la historia:
- Una mesa cubierta con tarjetas rojas (preguntas) nos dice que todavía tenemos mucho que aprender sobre esta historia.
- Una mesa cubierta de tarjetas azules (reglas) nos dice que esta historia es grande y complicada. ¿Quizás podamos particionarla? Tomamos otra tarjeta amarilla (historia), escribimos la nueva historia y la colocamos en el backlog.
- Una regla con muchos ejemplos podría ser demasiado compleja. ¿Hay múltiples reglas en juego que deben ser objeto de otras historias?
Descubrirás que algunas reglas son tan obvias que no necesitan ejemplos en absoluto. Está claro a partir de la conversación que todos entienden la regla. ¡Excelente! Todos pueden seguir adelante con sus vidas sin obligarse a sí mismos a obtener ejemplos como autómatas con lavado de cerebro BDD.
Pensando dentro de la caja del tiempo (time-box)
Un pequeño grupo de amigos debería ser capaz de procesar una historia bien entendida y de buen tamaño en unos 25 minutos.
Si no puede, o todavía está dominando esto (lo cual está bien), la historia es demasiado grande (definitivamente no está bien) o todavía tiene demasiada incertidumbre. Escuche eso e intente dividir la historia, o deje que la persona de producto se vaya y haga un poco de tarea antes de volver a poner la historia en otra sesión de mapeo de ejemplos en una fecha posterior.
En Cucumber, usamos un voto rápido con la mano después de 25 minutos para determinar si creemos que la historia está lista para comenzar a desarrollarse. Incluso si quedan algunas preguntas pendientes, puede pensar que son lo suficientemente menores como para poder resolverlas sobre la marcha. Deja que el grupo decida.
Beneficios
El mapeo de ejemplos ayuda a acercar y enfocarse en las partes más pequeñas de comportamiento dentro de la historia. Al mapearlo, puede separar las reglas, encontrar el núcleo del comportamiento que se desea y posponer el resto hasta más tarde. Con este nivel de detalle, el mapeo de ejemplos actúa como un filtro, evitando que las grandes historias entren en el sprint y exploten con sorpresas de último minuto tres días antes del día de la demostración.
También ahorra tiempo y, por lo tanto, ayuda a mantener el interés de las personas ocupadas en el proceso.

Muchos equipos asumen que los tres amigos deben escribir pruebas de aceptación (por ejemplo escenarios de Cucumber) durante esta sesión, sentados alrededor de un proyector mientras alguien escribe escenarios formales de Cucumber en un IDE. Hay ocasiones en las que esto es valioso, pero en general creo que es una mala idea. De hecho, puede distraerte del verdadero propósito de la conversación.
Es fácil ver por qué la gente comete este error: el propósito aparente es tomar una historia de usuario, que ya tiene algunos criterios de aceptación predefinidos, y generar ejemplos que puedan convertirse en pruebas de aceptación.
Creo que el verdadero propósito, sin embargo, es llegar a un entendimiento compartido de lo que se necesitará para hacer la historia. Puede moverse mucho más rápido hacia este objetivo si se mantiene bajo en tecnología.
Episodios de Friends
Entonces, en lugar de optar por escenarios formales de Gherkin en toda regla, solo intente capturar una lista de ejemplos aproximados, utilizando la convención de nomenclatura de episodios de Friends.

Por ejemplo:
- Aquel en el que el cliente olvidó su recibo
- Aquel en el que el producto está dañado
- Aquel en el que se compró el producto hace 15 días
A veces, cuando acecha la incertidumbre, instintivamente querrás ser más concreto que esto. Todavía no necesitas recurrir a la estructura rígida de Dado-Cuando-Entonces:

Cuando el resultado (el entonces) no está claro, no tienes un ejemplo, tienes una pregunta.
Incógnitas conocidas
Cada vez que una conversación como esta da vueltas en círculos, es porque no tienes suficiente información. Probablemente falte alguien en la conversación, o tal vez necesites hacer una investigación de usuario, o un spike.

En lugar de dejar que todos compartan su opinión sobre cuál creen que debería ser el resultado, simplemente captura la pregunta y continua. ¡Felicidades! Acabas de convertir una incógnita desconocida en una incógnita conocida. Eso es un gran progreso.
¿Quién debería venir?
Lo mínimo son los tres amigos: un desarrollador, un tester y una persona de producto. Sin embargo, eso es solo un mínimo. Por todos los medios invita a gente de operaciones, personas de experiencia del usuario o cualquier otra persona que sea relevante para la historia que se está discutiendo. Cualquier persona que pueda ayudar a descubrir nuevas preguntas o convertir las preguntas en decisiones durante la conversación será útil.
Mientras aprende esta técnica, puede ser útil tener a alguien en el papel formal de facilitador, cuyo trabajo sea asegurarse de que todo lo que se dice se capture en una tarjeta. Los ejemplos y las preguntas vuelan rápidamente por la sala, y se necesita disciplina para capturarlos en la mesa para que pueda verse de lo que se está hablando.
Entonces ¿cuándo escribimos el Gherkin?
No dejes que esta publicación te confunda: también es de gran valor escribir Gherkin juntos, especialmente durante los primeros días de un proyecto. Ahí es donde desarrollas tu lenguaje ubicuo, y es vital tener esos escenarios expresados de una manera en la que todos en el equipo crean.
Pero expresar ejemplos de esa manera requiere un modo de pensar diferente al de decidir qué ejemplos están en el alcance y aclarar las reglas subyacentes.
Para un equipo que está funcionando, con un lenguaje de dominio bastante maduro, mi preferencia es que la persona del producto dedique su tiempo y energía a la sesión de mapeo de ejemplos y deje la escritura real de Gherkin a sus otros dos amigos. Una vez que han redactado una especificación de Cucumber, la persona del producto puede darles su opinión.
¿Es así como lo habría escrito?
Esto le brinda la oportunidad de probar qué tan efectiva fue la conversación de mapeo de ejemplos para transferir el conocimiento de la persona del producto a sus amigos.
¿Con qué frecuencia debemos hacer esto?
La gente de producto suele estar ocupada. Respeta su tiempo programando estas sesiones de manera que puedan prestarte toda su atención.
Mi recomendación, basada en lo que he visto funcionar para varios equipos en la práctica, es ejecutarlos con frecuencia: cada dos días suele ser un buen ritmo. Solo elige una historia y dale 25 minutos de atención, luego vuelve al trabajo. Tratar de hacer más en un lote grande solo agotará su energía.
¡Pero mi equipo está distribuído!
Ya he visto trucos innovadores en esto: algunas personas usan listas con viñetas en un documento de Google, he visto personas que usan una hoja de cálculo con celdas de colores para representar las tarjetas. También puedes usar un mapa mental. La clave es mantenerlo rápido y fácil de usar, para que puedan concentrarse en la conversación.
Algunas consejos finales
Es importante comprender claramente la distinción entre reglas y ejemplos antes de poder utilizar el mapeo de ejemplos. Tengo un ejercicio divertido para enseñar esto que compartiré en una publicación futura.
Recuerda que todo el propósito de esta conversación es descubrir las cosas que aún no sabes. Así que no hay preguntas tontas. Diviértete y explora realmente el problema.
Descubrirás que las reglas crean fallas naturales para dividir una historia. Trata de sentirte cómodo aplazando tanto como sea posible, para que puedas concentrarte en resolver el núcleo del problema. Puedes agregar más sofisticación (y complejidad) más adelante.
Gracias a Janet Gregory, Aslak Hellesøy y Seb Rose por sus comentarios sobre esta publicación, a Theo England por su paciencia mientras la perfeccionaba y a Tom Stuart por sacarme el dedo.