domingo, 26 de septiembre de 2010

Reestimando historias

Suele pasar en ocasiones que finalizar alguna historia de usuario nos lleva mucho mas tiempo del que a priori podíamos esperar. Esta situación suele llevar a la pregunta de si se debe reestimar o no la estimación hecha para esa historia de usuario. En este post vamos a tratar de explicar en qué situaciones se debe reestimar y en cuales no, basándonos en lo explicado por Mike Cohn en su libro Agile Estimating And Planning

Para ello vamos a ayudarnos de un ejemplo. Imaginemos que tenemos las siguientes historias de usuario en el backlog:


IDHistoriaEstimación
1Historia A3
2Historia B5
3Historia C3
4Historia D3
5Historia E3
6Historia F5


Supongamos que que las historias A, B y C tienen todas que ver en en cuanto a tamaño y complejidad ya que lidian con el mismo tipo de tecnología (por ejemplo una integración con un sistema externo mediante servicios web). Revisando las historias el equipo decide incluir en cada sprint las siguientes historias:

Sprint 1
Historia A 3
Historia B 5
Historia F 5
Sprint 2
Historia C 3
Historia D 3
Historia E 3

Al finalizar el primer sprint únicamente se ha completado la historia A y la F, es decir un total de 8 PH. El equipo sabe que la historia A es el doble de compleja que lo que habían estimado, así que tienen que decidir que hacer con las estimaciones de la propia historia y de las historias similares (B y C)

1. No reestimar

Si deciden no reestimar ninguna de las 3 historias, para el siguiente sprint deberían, en principio seguir con las historias B y C, que son un total de 8ph. Debería ser suficiente ya que en el último sprint es exactamente la cantidad de puntos conseguidos, pero el equipo sabe que las historias B y C pueden llegar a ser el doble de complejas que lo inicialmente estimado, así que aunque el total de ph sea 8, el equipo no conseguirá terminarlas en un sprint.

Velocidad estimada: 8PH

Sprint 1
Historia A 3
Historia F 5
Sprint 2
Historia B 5
Historia C 3
Sprint 3
Historia D 3
Historia E 3

Probablemente no se llegue a finalizar el Sprint 2, debido a que las historias B y C pueden ser el doble de grandes.

2. Reestimar únicamente la historia finalizada

Si se decide reestimar la historia finalizada, con por ejemplo el doble de puntos (6 en lugar de 3), el total de puntos del sprint queda en 11 ph. Esto seria suficiente para terminar en el sprint 2 las historias B, C y D. Sin embargo sabemos que las historias B y C pueden llegar a ser aproximadamente el doble de grandes de lo estimado inicialmente, con lo cual es muy probable que el equipo no pueda finalizar los 11ph de historia estimados para el siguiente sprint.

Velocidad estimada: 11PH
Sprint 1
Historia A 6
Historia F 5
Sprint 2
Historia B 5
Historia C 3
Historia D 3
Sprint 3
Historia E 3

Probablemente no se llegue a finalizar todo el sprint 2, debido a que las historias 2 y 3 pueden ser el doble de grandes

3. Reestimar las historias relacionadas entre si.

Si la reestimación se hace para las 3 historias relacionadas (la finalizada A, la B y la C), se consigue aumentar la velocidad del equipo hasta 11ph, pero ademas aumenta el tamaño del trabajo pendiente. En el siguiente sprint el equipo estaría preparado para abordar las historia B, que ahora vale 10ph, la C y la D en el tercer sprint (6ph + 3ph) y la E en el cuarto sprint.


Velocidad estimada: 11PH

Sprint 1
Historia A 3
Historia F 5
Sprint 2
Historia B 10
Sprint 3
Historia C 6
Historia D 3
Sprint 4
Historia E 5

La reestimación de todas las historias relacionadas nos permite obtener la planificación más exacta, aún a costa de ver cómo esta sobrepasa la inicialmente prevista. No reestimar o reestimar únicamente las historias finalizadas para obtener una mayor velocidad por sprint solamente consigue ocultar el retraso hasta los siguientes sprints, evitando así una de las ventajas de las metodologías ágiles : conseguir información por adelantado que nos permita tomar decisiones de manera temprana en el tiempo.

A modo de resumen:

  • No se deben estimar las historias finalizadas con el objetivo de aumentar la velocidad por sprint.
  • Se deben reestimar las historias cuyo tamaño y complejidad relativa hayan cambiado respecto al inicio de las estimaciones.