Skip to content
jesusprodriguez.com

azure-sprint-planning

Azure Boards: planificar a partir de los PBIs

Breaking PBIs into half-day to two-day tasks, with external dependencies flagged and the question of whether the sprint actually fits.

stack:
Azure DevOps
task:
Plan
version:
v1.0.0
updated:
size:
4.2 KB
read:
3 min
license:
CC-BY-4.0

When it fires

During sprint planning, or when splitting a large PBI into tasks.

description: Descompone PBIs de Azure Boards en tareas estimadas con dependencias y orden de ejecución, y comprueba si el sprint cabe. Úsala en la planificación de sprint, al partir un PBI grande o cuando preguntes qué hay que hacer para cerrar un item.

  • Splitting by criteria
  • Time-boxed spikes
  • Capacity vs velocity
  • Dependencies

How you ask for it

> Break PBI 3477 into tasks and tell me whether the sprint fits the capacity we have.

Say this to the agent as it is: the skill loads itself from its description, you do not have to name it.

Requires azure-devops-cli Install these too: this skill assumes the access they set up.

How to install one

/plugin marketplace add https://jesusprodriguez.com/skills/marketplace.json
/plugin install azure-devops@jprodriguez-toolkit

The native route, and the only one that updates itself: add the marketplace once and `/plugin marketplace update` brings in new versions. Skills get their own namespace (`azure-devops:azure-pr-review`).

The whole file

This is exactly what you download: no summaries, nothing trimmed.

Heads-up: the skill file itself is written in Spanish. Agents read it fine and answer in your language, but the prose below is not translated.

Azure Boards: planificar a partir de los PBIs

Planificar es responder a dos preguntas: qué hay que hacer para cerrar esto y cabe todo esto. Cualquier otra cosa es decorar el tablero.

1. Descomponer un PBI en tareas

Se parte de los criterios de aceptación. Si no los hay, no se planifica: se refina primero (ver azure-pbi-authoring).

Una tarea es una unidad de medio día a dos días para una persona. Menos es microgestión; más es una tarea que esconde una incógnita.

Esqueleto de descomposición, adaptado a lo que el PBI toque de verdad:

[ ] Modelo y migración            0.5 d
[ ] Lógica de aplicación           1 d
[ ] Endpoint y contrato            0.5 d
[ ] Interfaz                       1 d
[ ] Pruebas del caso vacío y límite 0.5 d
[ ] Telemetría o log del camino nuevo 0.25 d
[ ] Notas de despliegue y feature flag  0.25 d

Las tres últimas son las que siempre se olvidan y las que revientan la estimación. Si el equipo no las hace, quítalas del esqueleto en vez de fingir que se hacen gratis.

Spikes: cuando una tarea no se puede estimar porque falta información, no se estima al alza. Se crea un spike con caja de tiempo fija (“2 días para decidir si usamos Service Bus o tabla de outbox”) y una pregunta concreta que responder. Un spike sin pregunta escrita se convierte en una semana perdida.

2. Dependencias y orden

Marca cada tarea con lo que necesita antes de poder empezar:

  • Interna: otra tarea del mismo PBI. Solo condiciona el orden.
  • Entre PBIs: enlace Predecessor/Successor en Azure Boards, no un comentario en la descripción. Los comentarios no salen en ningún informe.
  • Externa: credenciales del cliente, una API de terceros, una ventana de mantenimiento, la decisión de alguien. Son las que hunden sprints, y la única mitigación es empezarlas el día 1 aunque el desarrollo vaya después.

El orden propuesto pone primero lo que elimina incertidumbre (spikes, dependencias externas, la parte del sistema que nadie conoce), no lo que es más cómodo de programar.

3. ¿Cabe el sprint?

Capacidad = personas × días hábiles × factor de dedicación

El factor de dedicación no es 1. Con soporte, reuniones y revisiones de PR, 0,6–0,7 es realista para un equipo de producto. Si el equipo también atiende incidencias de producción, reserva un porcentaje fijo antes de repartir, no después.

Y contrasta contra la velocidad de los últimos 3 sprints, no contra la capacidad teórica. La velocidad ya incluye todo lo que la capacidad ignora.

Cuando no cabe, la salida nunca es “apretamos”. Se presentan las opciones:

  1. Sacar el PBI de menor valor.
  2. Recortar alcance de uno concreto (y decir qué se queda fuera).
  3. Aceptar el riesgo por escrito, con el item marcado como candidato a caer.

4. Crear las tareas

az boards work-item create \
  --title "Migración: columna export_format en Orders" \
  --type Task --iteration "Proyecto\\Sprint 43" \
  --fields "Microsoft.VSTS.Scheduling.RemainingWork=4"

az boards work-item relation add \
  --id <tarea> --relation-type parent --target-id <PBI>

RemainingWork va en horas; los StoryPoints/Effort del PBI padre, en puntos. Mezclarlos rompe la capacidad del sprint y los gráficos de burndown.

Antes de crear nada, enseña la descomposición y espera el visto bueno: veinte tareas creadas de golpe que no encajan con lo que el equipo tenía en la cabeza cuestan más de borrar que de escribir.

Señales de que la planificación está mal

  • Todas las tareas duran exactamente lo mismo → nadie las ha pensado.
  • Ninguna tarea de pruebas → o no se prueban, o el tiempo está escondido.
  • El sprint suma justo la capacidad al 100% → no hay margen para lo imprevisto, y lo imprevisto ocurre todos los sprints.
  • Un PBI con una sola tarea llamada igual que el PBI → no se ha descompuesto.