Algunas estrategias para dividir historias de usuario

4
(1)

“Divide y vencerás. El secreto para ganar cualquier batalla, para simplificar y resolver cualquier problema.”

General romano Julio César

Se que quizá llego un poco tarde a este tema, y es que ya hay mucho escrito sobre esto, pero quería aportar mi granito dejando mi experiencia y lo que yo conozco y recomi endo a la gente con la que trabajo.

Y bueno, precisamente hoy porque estoy volviendo a tocar este tema después de un tiempo, estoy volviendo a asesorar sobre las historias de usuario, y bueno quería dejar escrito mi granito debido a esta experiencia.

Además, quería volver a escribir algo sobre agilidad, me estaba centrando en otros temas y no quería dejar de lado este otro, ya que, a parte de ser mi profesión también son temas que me gustan y quiero poder ayudar.

Sobre historias de usuario, os dejo este post, que son apuntes visuales sobre un libro que habla de este tema, como más información a parte de la que yo os voy a dejar aquí.

Sobre historias de usuario…

Para empezar, decir que las historias de usuario son una herramienta, un esquema para describir las características que va a tener un producto basado en unas necesidades.

Entender qué son las historias de usuario es un paso previo a este tema de las estrategias o patrones de división de HUs. Si este post tiene muchas visitas y reacciones, escribiré más sobre este tema, de momento haré hincapié en este post en las estrategias simplemente.

Si necesitáis más información sobre historias de usuario y sobre todo enfocado a mi experiencia, dejármelo en comentarios y programaré más post sobre esto.

En una historia se explica, desde la perspectiva de cliente, qué se espera que haga el producto, además se debe intentar evitar el detalle técnico para mantener foco en las necesidades y los beneficios que aporta. Se especifica únicamente el qué y no el cómo.

Además, estas historias de usuario deberán de contener la información necesaria y suficiente para empezar una conversación entre todas las partes implicadas. La pregunta del millón de esto es, ¿cuándo sabemos que esa información es suficiente?

Para respuesta a esta pregunta, Mike Cohn nos propone un esquema muy simple pero muy efectivo

  • Cómo: hace referencia al tipo de cliente que tiene una necesidad
  • Quiero: a la característica que tendrá nuestro producto
  • Para: hace referencia a la necesidad que estamos cubriendo

El objetivo de utilizar este esquema es asegurar que trabajamos desde las necesidades de nuestro público objetivo y no nuestras.

Y por último ¿cómo verificamos si la solución a la HU de verdad hace lo que tiene que hacer? Para eso tenemos los criterios de aceptación que son una condición que debemos considerar para indicar que nuestra historia está resuelta correctamente.

La HU generalmente contiene varios criterios de aceptación y hasta que todos los criterios no han sido validados, no se debe considerar la historia como ”terminada”. De esta forma, todo el mundo tiene en cuenta las condiciones que deben validarse a finalizar la construcción.

Pero dejemos ya la teoría, de las historias de usuario y vayamos más al objetivo de este post, que son los patrones de división.

Algunos patrones para dividir HUs

En 2009, Richard Lawrence propuso 9 patrones o formas de dividir una historia de usuario, vamos a ver algunas de esas 9 que suelen ser las más utilizadas en mi experiencia. Estos patrones pueden responder a la pregunta “¿Por donde partimos las historias?”

Pero antes de comenzar a dividir recordar que se debe comprobar que la historia cumple los criterios INVEST y es lo suficientemente grande como para necesitar ser dividida. En caso contrario, no seguramente no tenga tanto sentido dividir la HU.

A este proceso de dividir historias de usuario, también se le conoce como “slicing”.

Pasos en un flujo de trabajo

Este patrón básicamente dice lo siguiente: dada una historia de usuario para resolver un flujo de trabajo puede dividirse fácilmente en cada uno de los pasos de los que consta el flujo. Por ejemplo:

  • Como cliente puedo iniciar sesión con mi cuenta.
  • Como cliente puedo revisar y confirmar mi pedido.
  • Como cliente, puedo pagar mi pedido con una transferencia bancaria.

En caso de que la historia de usuario contenga algún tipo de workflow, podemos plantearnos las siguientes preguntas:

  • ¿Se podría dividir la historia para que se haga el principio y el final del workflow primero, y posteriormente enriquecer el grueso del workflow a través de otras historias?
  • ¿Se podría dividir la historia para que se realice la forma más básica posible del workflow, y posteriormente ir enriqueciendo el mismo con otras historias?

Operaciones

Este patrón dice lo siguiente: en una historia de usuario con varias operaciones a realizar sobre el mismo elemento podemos dividirlas en tantas historias como operaciones distintas haya. Por ejemplo:

  • Como propietario de la tienda puedo agregar nuevos productos, para que los clientes puedan comprarlos.
  • Como propietario de la tienda, puedo actualizar los productos existentes, por lo que puedo ajustar los cambios en los precios o la información del producto.
  • Como propietario de la tienda puedo eliminar productos, así que puedo eliminar productos que ya no tengo en stock.

En caso de que la historia de usuario incluya múltiples operaciones, es decir, esté relacionada con «administrar» o «configurar» algo, podemos plantearnos las siguientes preguntas:

  • ¿Se podrían separar las operaciones en distintas historias de usuario?

Variaciones en datos

Este patrón dice que si encontramos una historia de usuario en la que tratemos diferentes tipos de datos, una forma de división es crear una historia por cada tipo de dato distinto. Por ejemplo:

  • Como cliente, puedo buscar un producto por su número de producto, por lo que puedo encontrar rápidamente un producto que ya conozco.
  • Como cliente, puedo buscar productos en un rango de precios, para que los resultados de búsqueda sean más relevantes.
  • Como cliente puedo buscar productos por su color, para que los resultados de búsqueda sean más relevantes.

En caso de que la historia de usuario establezca que se debe realizar la misma acción en diferentes juegos de datos, deberíamos plantearnos la siguiente pregunta:

  • ¿Se podría dividir la historia para procesar un único tipo de dato primero, y aumentar los tipos de datos soportados con historias posteriores?

Variaciones en la interfaz

Lo que dice este patrón es que si una historia de usuario incluye modificaciones visuales con elementos muy complejos podemos crear historias con la misma funcionalidad y elementos más sencillos y posteriormente reemplazar con el elemento más complicado. Por ejemplo:

  • Como usuario, quiero poder buscar vuelos entre dos destinos introduciendo manualmente la fecha.
  • Como usuario quiero poder buscar vuelos entre dos destinos a través de un sofisticado datepicker.

Algunas preguntas que nos podemos hacer para este patrón:

  • ¿Se podría identificar una versión reducida del interfaz que se pudiera hacer primero?

Por otra parte, para el caso en el que nuestra historia de usuario sugiera que debe recibir el mismo tipo de datos a través de múltiples interfaces, podemos plantearnos que:

  • ¿Se podría dividir la historia para manejar los datos a través de un único interfaz al principio, e ir enriqueciéndolo con historias posteriores?

Spike

Cuando ninguno de los patrones anteriores nos sirve para dividir nuestra historia solo nos queda lanzarnos a construir una aproximación a la historia que nos permita descubrir cómo podremos dividir la historia.

Si queréis que profundice sobre alguna de ellas no dudéis en decirme en comentarios.

También decir que, aplicar una técnica no excluye poder aplicar otras, es decir, si aplicamos por ejemplo el patrón por operaciones, no quiere decir que ya se haya acabado la división. Es posible seguir dividiendo más las HUs, por ello puedes seguir aplicando otros patrones para seguir dividiendo hasta una HUs suficientemente pequeña para poder ser desarrollada en un sprint.

Terminando…

No quiero alargar mucho este post porque es un tema muy hablado, pero si estáis interesados, podría formar como un esquema, un proceso para dividir las historias de usuario y aportarlo a la comunidad.

Si estáis interesados, no dudéis en compartir el post y además escribirme en comentarios que lo queréis.

¡Feliz miércoles!

¿Cómo de útil ha sido esta publicación?

¡Haz clic en una estrella para calificarla!

Puntuación media 4 / 5. Recuento de votos: 1

No hay votos hasta ahora! Sé el primero en calificar esta publicación.

Cómo encontraste de útil esta publicación...

¡Sígueme en las redes sociales!

¡Lamento que esta publicación no te haya sido útil!

¡Permíteme mejorar esta publicación!

¿Cuéntame cómo puedo mejorar esta publicación?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.