6. Planificación y estimación en XP

La planificación y estimación en Extreme Programming (XP) son procesos colaborativos y continuos, diseñados para ser flexibles y adaptarse a los cambios. A diferencia de los enfoques tradicionales que buscan una planificación exhaustiva al inicio, XP reconoce que los requisitos evolucionan y que la mejor planificación es aquella que permite ajustar el rumbo constantemente.

6.1. Planning Game: colaboración entre cliente y desarrolladores

El "Planning Game" (Juego de Planificación) es la práctica central de XP para la planificación. Es un proceso interactivo y transparente donde el cliente y el equipo de desarrollo colaboran estrechamente para decidir qué funcionalidades se construirán y cuándo. Este juego se divide en dos niveles principales:

  • Planificación de la Entrega (Release Planning): Se realiza al inicio del proyecto y se revisa periódicamente. Aquí, el cliente presenta las funcionalidades deseadas en forma de historias de usuario. Los desarrolladores estiman el esfuerzo de cada historia. Juntos, cliente y equipo, deciden qué historias se incluirán en las próximas entregas (releases) y establecen un cronograma general. El cliente prioriza por valor de negocio, y el equipo por riesgo y esfuerzo.
  • Planificación de la Iteración (Iteration Planning): Se realiza al inicio de cada iteración (generalmente de 1 a 3 semanas). El equipo selecciona un subconjunto de historias de usuario de la entrega planificada. Estas historias se desglosan en tareas más pequeñas (que pueden completarse en horas o pocos días), se estiman y se autoasignan a los desarrolladores. El objetivo es tener un plan detallado para la iteración que el equipo se compromete a cumplir.

El Planning Game fomenta la comunicación constante, la transparencia y la responsabilidad compartida, asegurando que el desarrollo esté siempre alineado con las necesidades de negocio más importantes.

6.2. Estimación de esfuerzo con puntos de historia

En XP, la estimación del esfuerzo se realiza utilizando "puntos de historia" (Story Points), una medida abstracta y relativa que representa la complejidad, el riesgo y el tamaño de una historia de usuario. A diferencia de las estimaciones en horas o días, los puntos de historia evitan la falsa precisión y fomentan una mejor comprensión del trabajo.

  • Estimación Relativa: El equipo compara una historia de usuario con otras ya estimadas, asignándole un valor numérico (comúnmente de la serie de Fibonacci: 1, 2, 3, 5, 8, 13, etc.) que indica su tamaño relativo. Por ejemplo, una historia de 5 puntos es aproximadamente el doble de grande que una de 3 puntos.
  • Estimación por el Equipo: La estimación la realiza el equipo de desarrollo en conjunto, a menudo utilizando técnicas como el Planning Poker. Esto fomenta la discusión, la identificación de supuestos y riesgos, y una comprensión compartida del trabajo.
  • Velocidad del Equipo: Con el tiempo, el equipo aprende su "velocidad" (velocity), que es la cantidad de puntos de historia que puede completar de forma consistente en una iteración. Esta métrica se utiliza para predecir cuántas historias se pueden abordar en futuras iteraciones.

Los puntos de historia permiten al equipo estimar de forma más efectiva, gestionar las expectativas del cliente y mejorar continuamente su capacidad de planificación.

6.3. Priorización y selección de historias para cada iteración

La priorización y selección de historias de usuario son procesos dinámicos que se realizan en colaboración entre el cliente y el equipo, con el objetivo de maximizar el valor de negocio entregado en cada iteración.

  • Priorización por Valor de Negocio: El cliente es el principal responsable de priorizar las historias de usuario basándose en el valor que aportan al negocio. Las historias con mayor valor y menor riesgo suelen tener prioridad.
  • Selección para la Iteración: Al inicio de cada iteración, el equipo, con la guía del cliente, selecciona las historias de mayor prioridad que cree que puede completar de forma realista, basándose en su velocidad conocida.
  • Flexibilidad: La lista de historias (backlog) no es estática. El cliente puede cambiar las prioridades en cualquier momento, y el equipo se adapta a estos cambios, renegociando el alcance de la iteración si es necesario.
  • Historias "Spike": A veces, se incluyen "spikes" (historias de investigación) para reducir la incertidumbre o el riesgo de historias más grandes, permitiendo al equipo aprender lo necesario antes de comprometerse con la implementación completa.

Esta priorización y selección continuas aseguran que el equipo siempre esté enfocado en entregar las funcionalidades más valiosas y que el producto evolucione en la dirección correcta para el negocio.