Cuándo está "lista" y cuándo "hecha" una Historia de Usuario

Las historias de usuario, el uso de sistemas de gestión ágil y hasta sesiones de planning poker son cada vez más comunes en equipos de desarrollo, tanto por convicción como por moda. Estas herramientas ayudan a los equipos a hacer su trabajo lo mejor posible –nosotros mismos hemos visto el impacto en Turpial Development.

El punto de entrada a estos temas suele ser las historias de usuario, que en sí son increíblemente útiles, pero hay dos pequeñas prácticas que llevan su impacto a otro nivel, conocidas en inglés como Definition of ready y Definition of done.

Hablar de estas prácticas en español genera algo más de confusión que hablar de ellas en inglés, pero realmente vale la pena aplicar estas practicas en próximos proyectos.

Definition of ready: Definición de listo

La definición de listo (ready), describe cuando una asignación o historia de usuario está lista para empezar a ejecutarse — no es que esté lista la asignación, sino que ya podemos empezar a trabajar en ella, porque tenemos todo lo necesario para comenzar.

En cada proyecto se debe acordar (y mantener en un sitio visible) esta definición según los perfiles de cada uno de los miembros del equipo y cómo trabajan; si no se cumple, entonces no se agrega la historia a la siguiente iteración (sprint) de trabajo.

La definición de listo puede incluir cosas como:

  • Está completa la historia de usuario en la estructura correcta
    (Como ___, quiero ____ para___)
  • Se tiene una explicación de la historia/asignación
  • Están escritos los criterios de aceptación y son entendidos por todos
  • Hay un objetivo de diseño de interfaces acordado definido hasta un nivel específico

Definition of done: Definición de hecho

Análogamente, la definición de hecho describe cuando podemos considerar que una historia de usuario ha sido terminada. Esto ayuda a mantener la calidad del trabajo a lo largo del proyecto y brinda un criterio compartido entre todas las partes sobre cuándo una historia de usuario ha sido terminada.

La definición de hecho puede incluir:

  • Documentar las nuevas funcionalidades, vistas y APIs
  • Superar los criterios de aceptación o pasar todas las pruebas de aceptación
  • Pasar revisión de implementación del diseño
  • Pasar pruebas automatizadas
  • Hacer pull-request a la rama dev y que éste sea aprobado

Estas definiciones reciben menos atención en comparación a otras prácticas ágiles cuando se trabajan en equipos donde se habla español; quizás porque hecho y listo son sinónimos en dicho idioma.

No es una experiencia demasiado inusual que por la falta de Definición de Listo y Hecho, algunos procesos se degraden a una situación en la que el equipo parece seguir practicas ágiles, pero solo en la superficie, sin un impacto real en cómo se organizan y entregan resultados, lo cual perjudica los proyectos al dedicarle tiempo a procesos y reuniones sin un retorno en productividad o calidad.

Tanto la Definición de Listo (ready) como la Definición de Hecho (done) ayudan a sacar el máximo provecho a las historias de usuario en equipos que quieren trabajar con prácticas ágiles en el desarrollo de soluciones digitales.