Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ver en detalle cuales son los beneficios de Scrum, sus fundamentos y sus requisitos.
El proceso
En Scrum un proyecto se ejecuta en ciclos temporales cortos y de duración
fija (iteraciones que normalmente son de 2 semanas, aunque en algunos
equipos son de 3 y hasta 4 semanas, límite máximo de feedback de
producto real y reflexión). Cada iteración tiene que proporcionar un
resultado completo, un incremento de producto final que sea susceptible de
ser entregado con el mínimo esfuerzo al cliente cuando lo solicite.
El proceso parte de la lista de objetivos/requisitos priorizada del producto,
que actúa como plan del proyecto. En esta lista el cliente (Product
Owner) prioriza los objetivos balanceando el valor que le aportan
respecto a su coste (que el equipo estima considerando la Definición de
Hecho) y quedan repartidos en iteraciones y entregas.
Las actividades que se llevan a cabo en Scrum son las siguientes (los
tiempos indicados son para iteraciones de 2 semanas):
Planificación de la iteración
El primer día de la iteración se realiza la reunión de planificación de la
iteración. Tiene dos partes:
Ejecución de la iteración
Cada día el equipo realiza una reunión de sincronización (15 minutos),
normalmente delante de un tablero físico o pizarra (Scrum Taskboard). El
equipo inspecciona el trabajo que el resto está realizando (dependencias
entre tareas, progreso hacia el objetivo de la iteración, obstáculos que
pueden impedir este objetivo) para poder hacer las adaptaciones necesarias
que permitan cumplir con la previsión de objetivos a mostrar al final de la
iteración. En la reunión cada miembro del equipo responde a tres preguntas:
Inspección y adaptación
El último día de la iteración se realiza la reunión de revisión de la iteración.
Tiene dos partes:
Actividades
Responsabilidades
Herramientas
Secciones relacionadas
Fundamentos de Scrum
Requisitos para poder utilizar Scrum
El orden de sus ítems viene determinado por el valor que aporta al cliente final respecto
a riesgos y coste estimado de completarlo (ROI). Es una planificación estratégica que
evoluciona a lo largo de toda la vida del producto/proyecto, debido a cambios de
necesidades del cliente, feedback del mercado, aparición de nuevas ideas, dificultades
tecnológicas, etc.
Se evita caer en parálisis de análisis al inicio del proyecto, de manera que se puede iniciar
antes el desarrollo y el cliente puede empezar a obtener resultados útiles.
Se evita analizar en detalle requisitos no prioritarios que podrían cambiar durante el transcurso
del proyecto, dado que el cliente conocerá mejor cuál ha de ser el resultado a conseguir, o bien
por que podrían ser reemplazados por otros.
Puede llegar a un punto del proyecto en que no valga la pena analizar ni desarrollar los
requisitos restantes, dado el poco retorno de inversión (ROI) que tienen.
Iteración de entrega (release sprint)
Se ha trabajado con una buena Definición de Hecho durante cada iteración del proyecto.
Se hacen entregas muy cortas cada poco tiempo, con lo que la cantidad de cosas a entregar,
integrar y probar es pequeña.
Se está realizando un esfuerzo de automatización de estas tareas de pruebas, iteración y
entrega durante todo el proyecto (con lo cual se gana en eficiencia y seguridad).
El Sprint Backlog una planificación táctica del trabajo a realizar en la iteración actual.
Esta lista permite ver las tareas donde el equipo está teniendo problemas y
no avanza, con lo que le permite tomar decisiones al respecto.
Uso de la lista
Este tablón o cuadro de mandos actúa como radiador de información tanto para el
equipo como para cualquier otra persona relacionada con el proyecto.
Pizarra blanca o cartón pluma, como mínimo de 100 cm x 70 cm, marcando las áreas del
tablero con cinta adhesiva de colores.
Idealmente, el equipo debería de disponer de una superficie el doble de grande, para
poderse ver y leer bien a cierta distancia, así como tener suficiente espacio físico para
hacer delante suyo la reunión diaria de sincronización (Scrum daily meeting).
En su defecto, se puede utilizar papelógrafo o corcho.
Rotuladores permanentes de color negro, rojo y verde.
Regla de 50 cm.
Dimensiones
En la parte superior se dispone una fila específica para tareas no planificadas, aquellas que
no son parte de los requisitos/objetivos de la iteración pero que es necesario hacer de manera
urgente (errores en producción, urgencias del cliente, etc.). De esta manera podremos
visualizar cuanto somos de reactivos en lugar de planificados dentro de la iteración.
A continuación hay una fila reservada para la mejora continua, donde se podrán las tareas
fruto de retrospectivas anteriores y que queremos que realizar en esta iteración. Sólo
pondremos aquí aquellas tareas que no sean asociables a un objetivo propio de la iteración.
Se ha dejado más espacio para la columna de tareas no iniciadas, de manera que quepan
todas las que se identifican en la reunión de planificación de la iteración (sprint planning). Notar
que el espacio para tareas en curso es menor, dado que deberían ser las mínimas posibles
para favorecer el flujo eliminando el multitasking. Similarmente, el número de objetivos abiertos
en curso (WIP, Work In Progress) debería ser el mínimo posible y ser resueltos de arriba a
abajo, según la prioridad indicada en el Product Backlog.
La zona de impedimentos está destinada a la lista de obstáculos que pueden impedir que el
equipo avance, que consiga los objetivos de la iteración o del proyecto, u otros riesgos que
requieren una atención especial. Es conveniente indicar quien es el responsable de su solución
(un miembro del propio equipo o el Facilitador (Scrum Master), dado que es una de sus
principales atribuciones). Se gestionan de manera similar a las tareas (pendientes, en curso,
hechos).
La zona de retrospectiva servirá para ir anotando durante la iteración los aspectos que están
funcionado bien (+, Pluses) así como los problemas que vamos identificando (Δ, Deltas).
En la zona libre de la derecha situaremos, encima, información propia del proyecto y, debajo,
información propia de la iteración (explicado más adelante).
Resultado de la construcción
Su poco peso, lo cual permite llevar el tablero fácilmente desde la zona de trabajo del equipo a
una sala para, por ejemplo, hacer la reunión de planificación de iteración (sprint planning).
Su modularidad, que permite adaptarlo a diferentes tamaños de equipo (las dimensiones del
tablero de este ejemplo son las adecuadas para un equipo de 5 personas). Además de existir
formatos de tamaño mayor e inferior, si es necesario en nuestro proyecto, podemos utilizar
varios tableros y disponerlos uno al lado de otro, cambiar su orientación (horizontal-vertical),
etc.
El tablero como radiador de la información de
referencia para el equipo
El tablero es un radiador de información, difunde el estado actual de la iteración (actualizado en
la reunión diaria de sincronización (Scrum daily meeting), por lo que debe estar visible desde los puestos
de trabajo del equipo con sólo hacer un movimiento de cabeza. También es especialmente útil en las
reuniones que realizamos durante la iteración, por lo que en él ponemos aquella información que
queramos consultar fácilmente cuando tengamos conversaciones delante del tablero:
La leyenda con el nombre de los miembros del equipo, su código de colores, fotos.
Información general del proyecto
La definición de hecho, que nos servirá como base inicial para hacer el despiece de
objetivos de la iteración en tareas durante la reunión de Planificación de la iteración (Sprint
planning).
La lista de objetivos priorizada del proyecto (Product Backlog).
Modelos del producto que se está desarrollando, a los que referirnos cuando expliquemos
algo a los demás. De esta manera todos los miembros del equipo tendrán una misma
visión, les sirvirá de apoyo cuando comuniquen cosas y ayudará a que utilicen una misma
nomenclatura. Típicamente: diagrama de entidades del dominio, procesos o bloques
funcionales e integraciones, etc.
Indicadores del proyecto: Product Backlog Burndown Chart, tendencias de defectos, etc.
Información propia de la iteración
El objetivo de la iteración.
El gráfico de horas pendientes de la iteración (Sprint burndown chart).
Un calendario con los principales eventos del mes que tenemos que tener en cuenta.
Cualquier otra información que nos interese tener muy a mano.
Planificación de la iteración (Sprint Planning)
Durante la reunión de planificación de la iteración, se va incorporando al tablero siguiente información:
De esta manera visualizaremos todos los tipos de tareas en que trabajan los miembros
del equipo.
Ejecución de la iteración
Ponemos en color rosa las nuevas tareas que vayan apareciendo, sean:
Tareas asociadas a objetivos / requisitos / historias de usuario que no fueron
identificadas en la reunión de planificación de la iteración.
Tareas inesperadas y no asociadas a objetivos pero que exigen nuestra resolución
dentro de la propia iteración (en la zona “no planificado”).
De esta manera podremos obtener métricas de trabajo no planificado [2] y en la
retrospectiva revisaremos cuáles son las tareas que han aparecido de color rosa, lo
cual nos permitirá saber, por ejemplo, si es que tenemos que mejorar nuestra
definición de hecho o bien si tenemos que reflexionar y realizar alguna acción para
intentar minimizar tareas no previstas.
Marcamos con un gomet rojo los objetivos y/o las tareas con más riesgos, aquellos que
queremos tener controlados con más atención.
Cuando suceda alguna cosa que queramos comentar en la retrospectiva, la ponemos en
su zona específica, en función de que sea una cosa que se está haciendo bien y se quiere
recordar para memorizar y/o incluir como buena práctica (+, Plus) o bien una cosa una cosa
a mejorar (Δ, Delta).
Ponemos los impedimentos, riesgos o cualquier otra cosa crítica que se tenga que ir
resolviendo en la zona a tal efecto, especialmente las acciones a realizar que están fuera
del alcance del equipo y que sean para el Facilitador (Scrum Master). Los gestionamos de
la misma manera que cualquier otra tarea, poniéndolos como pendientes, en curso o
hechos.
Podemos poner en otro color, por ejemplo en azul, los objetivos de la iteración siguiente que
iniciamos en la iteración actual, para saber que estamos avanzando, pero también para no
perder el foco en que lo primero que tenemos que completar son los comprometidos para la
iteración. De esta manera podremos obtener métricas de trabajo avanzado [2] y reflexionar en
la retrospectiva.
[Los colores aquí indicados para objetivos de la iteración (ítems del Product Backlog) y para las tareas
son orientativos y se pueden ampliar en función de otros aspectos que queramos señalizar de manera
especial (ítems de temas diferentes, tareas de corrección de errores, etc.)].
Trucos (sólo si es necesario)
Utilizar una marca específica para las tareas más prioritarias (reservar el color rojo para
indicar problemas o riesgos).
Poner colores diferentes en función del tipo de tarea (análisis/diseño, construcción, errores).
Poner 1 punto negro por cada día que una tarea se retrasa, para que el equipo vea si hay
algún peligro y para poder reflexionar en la retrospectiva.
Poner 1 punto naranja cada vez que un objetivo/tarea se reabre por que no pasa las
pruebas / control de calidad / aceptación y vuelve “hacia atrás”.
Sólo mover tareas a “Hechas” en la reunión diaria de sincronización, para que todo el mundo
sea conciente del avance. Para ello, cuando alguien acaba una tarea, la marca como
“hecha” pero no la mueve.
Una vez acabada una tarea, si es necesario que otra persona haga control de calidad (peer
review y/o pruebas), se puede marcar la tarea indicando “Revisar”, por ejemplo con un post-
it más pequeño. Se puede utilizar el siguiente convenio: un gomet a la izquierda para identificar
a quien “hará” y otro a la derecha para identificar a quien “revisará”.
Notar que la marca “Revisar” es equivalente a tener un estado de tareas (columna)
llamado Revisar, por lo que evita crear una “tarea Y” específica para hacer el control de
calidad de la “tarea X” o tener una columna específica de “Revisar”, especialmente si este
estado no es aplicable a la mayoría de tareas. Sin embargo, se podría utilizar alguno de
estos sistemas de control si se considera necesario, por ejemplo si el 80% de las tareas
necesita revisión.
Poner un número en las tareas para indicar el orden.
Poner en las tareas el ID o nombre abreviado de la historia de usuario (por si se caen).
Tener una zona de Parking para los siguientes objetivos si no caben en el tablero o para tareas
que el equipo va detectando que sería necesario hacer antes de finalizar la iteración pero que
todavía no han sido clasificadas en objetivos.
Agradecimientos
Me gustaría agradecer a las siguientes personas las ideas y consejos que me han ido proporcionando en
estos años de uso de tableros de Scrum:
[1] Ángel Medinilla, por la sugerencia de utilizar cartón pluma como base.
[2] Jordi Salvat y Alabart, por su artículo de métricas en Scrum en que explica el marcaje
especial de las tareas no identificadas en la reunión de planificación de iteración.
[3] Xavier Quesada, por la fuente de recursos e inspiración que es su Visual Management
Blog (en inglés), donde aparecen más ejemplos como el siguiente:
Gráficos de trabajo pendiente
(Burndown charts)
Un gráfico de trabajo pendiente a lo largo del tiempo muestra la velocidad a la que se
está completando los objetivos/requisitos. Permite extrapolar si el Equipo podrá
completar el trabajo en el tiempo estimado.
Días pendientes para completar los requisitos del producto o proyecto (product
burndown chart), realizado a partir de la lista de requisitos priorizada (Product
Backlog).
Horas pendientes para completar las tareas de la iteración (sprint burndown chart),
realizado a partir de la lista de tareas de la iteración (Iteration Backlog).
Este tipo de gráfico permite realizar diversas simulaciones: ver cómo se aplazan las
fechas de entrega si se le añaden requisitos, ver cómo se avanzan si se le quitan
requisitos o se añade otro equipo, etc.
RESPONSABILIDADES
Las responsabilidades del Cliente / Product Owner (que puede ser interno o externo a
la organización que realiza el desarrollo del producto) son:
Conocer el mercado y los comportamientos de los clientes / usuarios finales, con muy
buena visión de Negocio.
Ser el representante de todas las personas interesadas (stakeholders) para conseguir una
buena definición de los objetivos del producto o proyecto y de los resultados esperados.
Las “personas interesadas” pueden ser internas o externas a la organización: promotores
del proyecto y usuarios finales.
Idealmente el Product Owner también debería ser algún tipo de usuario, un consumidor
final del producto, para poder experimentar directamente si se consiguen los beneficios que
hipotéticamente le debería aportar.
Encargarse de que exista una priorización clara de los objetivos a conseguir. De este modo,
dirige los resultados del proyecto para maximizar su ROI (Return Of Investment):
Es el propietario de la planificación del proyecto: crear y mantener la lista priorizada con los
requisitos necesarios para cubrir los objetivos del producto o proyecto, conocer el valor que
aportará cada requisito y calcula el ROI a partir del coste de cada requisito (estimación que
le proporciona el equipo).
Repartir los objetivos/requisitos en iteraciones, de manera que prioriza tanto el proporcionar
beneficios al usuario final como reducir riesgos respecto hipótesis) y establece un
calendario de entregas.
Antes de iniciar cada iteración, replanificar el proyecto en función de los requisitos que
aportan más valor en ese momento, de los requisitos completados en la iteración anterior y
del contexto del proyecto en ese momento (demandas del mercado, movimientos de la
competencia, etc.).
Actuar como interlocutor único ante el equipo, con autoridad para tomar decisiones (es decir,
con libertad para decidir qué hacer de manera alineada con los objetivos de su área de trabajo,
que no se vea invalidada por personas en una posición superior).
Colaborar con el equipo para planificar, revisar y dar detalle a los objetivos de cada
iteración:
Participar en la reunión de planificación de iteración, proponiendo los requisitos más
prioritarios a desarrollar, respondiendo a las dudas del equipo y detallando los requisitos
que el equipo se comprometer a hacer.
Estar disponible durante el transcurso de la iteración para responder a las preguntas que
puedan aparecer.
No cambiar los requisitos que se están desarrollando en una iteración, una vez está
iniciada.
Participar en la reunión de demostración de la iteración, revisando los requisitos
completados.
Proporcionar suficiente dedicación para hacer este trabajo (usualmente un Product Owner no
suele poder estar con más de 1-2 equipos, en función del tipo de producto y equipos).
Notar que una distancia de 3-5 metros del equipo puede llegar a ser una barrera demasiado
alta para interactuar de manera ágil con el equipo (a menos que se encuentre físicamente
en otra ciudad). Sería difícil de justificar que el Product Owner esté situado en la misma
ciudad y no esté la mayor parte del tiempo sentado con sus equipos.
Por ello, una buena selección de Product Owners (y una esfuerzo especial en su
coaching de Producto/Cliente) es fundamental para un inicio de transformación
ágil exitoso, es decir, aportar resultados a la empresa de manera más ágil.
Otros roles
El facilitador (Scrum Master).
El equipo.
De este modo, es el coach y lider al servicio del equipo, llevando a cabo las siguientes
responsabilidades:
Velar por que todos los participantes del proyecto sigan los valores y principios ágiles,
las reglas y proceso de Scrum y guiar la colaboración intraequipo y con el cliente /
Product Owner) de manera que las sinergias sean máximas. Esto implica:
Asegurar que exista una lista de requisitos priorizada y que esté preparada antes de la
siguiente iteración.
Facilitar las reuniones de Scrum (planificación de la iteración, reuniones diarias de
sincronización del equipo, demostración, retrospectiva), de manera que sean productivas,
se piense de manera conjunta, se creen sinergias y se consigan sus objetivos.
Enseñar al equipo a autogestionarse. No da respuestas, si no que guía al equipo con
preguntas para que descubra por sí mismo una solución.
Conocer el grado de motivación de cada uno de los miembros del equipo, trabajarla con ellos
y/o con las personas de la organización más relacionadas con este aspecto.
Quitar impedimentos que el equipo tiene en su camino para conseguir el objetivo de cada
iteración (proporcionar un resultado útil al cliente de la manera más efectiva) y poder finalizar el
proyecto con éxito. Estos obstáculos se identifican de manera sistemática en las reuniones
diarias de sincronización del equipo y en las reuniones de retrospectiva.
Trabajar con otros Scrum Masters y el equipo de transformación / mejora continua con el
objetivo de que la organización sea cada vez más ágil.
Para poder conseguir su misión, es primordial que el Scrum Master esté sentado de
manera continua donde está la mayoría del equipo (normalmente donde está el equipo
de desarrollo), que sea un compañero mas, que forme parte de su día a día para poder
ayudarles a identificar cualquier área de mejora, así como estar a disponible siempre y
cuando se le necesite.
Notar que una distancia de 3-5 metros del equipo puede llegar a ser una barrera
demasiado alta para poder descubrir los comportamientos y tipos de relaciones que
hay entre sus miembros, y los impedimentos que les están dificultando el día a día.
Artículos relacionados
Auto-organización – Fundamentos y relación con la motivación intrínseca
Motivación de personas y liderazgo.
El buen gestor de un equipo ágil
Skills en un equipo ágil
Otros roles
El cliente (Product Owner).
El equipo de desarrollo.
Autónomo y multidisciplinar.
Agile se basa en ir desarrollando un producto “tangible” de forma iterativa para
obtener feedback en intervalos cortos de tiempo sobre si el producto genera en el
cliente el resultado esperado. Para ello, idealmente el equipo no debe depender de otros
pues generaría esperas y retrasos en la entrega de valor (necesidad de coordinación,
integración e incluso falta de ownership), con lo cual sólo se puede hacer con equipos
multidisciplinares y autónomos del resto de la organización. De este modo:
Los miembros del equipo disponen de las habilidades necesarias para poder identificar
y ejecutar todas las tareas que permiten proporcionar al cliente los requisitos previstos
en la iteración.
Tienen que depender lo mínimo de personas externas al equipo, de manera que no se
ponga en peligro la previsión del trabajo a revisar al final de cada iteración.
Se crea una sinergia que permite que el resultado sea más rico al nutrirse de las
diferentes experiencias, conocimientos y habilidades de todos, “colaboración creativa”.
El equipo de desarrollo ágil en ocasiones es llamado Squad al englobar, con una visión
más amplia, cualquier skill o rol necesario para incluir toda la cadena de
valor dentro del equipo, de modo que todos sus miembros están guiados por el mismo
propósito, conocen al cliente, el dominio y definen conjuntamente problema a
solucionar. En función de las necesidades para desarrollar el producto, el Squad
puede incluir a desarrolladores, UX, Ops, Data, … y, por supuesto, al Product Owner y
al Scrum Master.
Están motivados.
Las personas motivadas hacen cosas increíbles y, por otro lado, un equipo no motivado
difícilmente desarrollará un gran producto o estará comprometido con proporcionar un gran
servicio (lo cual lleva a clientes / usuarios finales a los que se mejora su vida y están más
contentos, que es lo que necesita la empresa).
Otros roles
El facilitador (Scrum Master).
El cliente (Product Owner).
Herramientas que se suelen utilizar en Scrum
Priorización
La etapa de priorización es sencilla y depende exclusivamente del Product
Owner. Sabiendo ya el tamaño de las historias, debe priorizarlas por valor de
negocio. Notar que también es posible comenzar con la asignación de valor
y después aportar el tamaño, en todo caso, la priorización se realiza
balanceando el valor respecto al coste y respecto a los riesgos de cada
objetivo.
Ahora bien: todo esto todavía no nos dice nada respecto a cuánto durará o
costará el proyecto; pero al menos es un paso más respecto a como
estábamos antes, que solo teníamos el ballpark estimate. Si sólo pudiéramos
averiguar a cuántos días/hombre o días/equipo equivale un story point,
tendríamos nuestra estimación, y luego nuestra planificación.
Conclusión
La estimación y planificación ágil permiten así en todo momento saber cuál
es la fecha estimada de finalización del proyecto, y en qué iteración
estará lista determinada funcionalidad. Un beneficio adicional que nos
brinda es que de existir complicaciones severas, que pongan en juego la
factibilidad del proyecto, éstas generalmente se ven expuestas bien
temprano, permitiendo cancelar el proyecto antes de incurrir en grandes
pérdidas. Por esto, sumado al hecho de que el desarrollo iterativo e
incremental garantiza que en todo momento se cuenta con el producto
listo para ser entregado (por ejemplo software funcionado), está el hecho de
que los métodos ágiles disminuyen enormemente los riesgos
tradicionales en el desarrollo de proyectos.
Artículos relacionados
Refinamiento de la lista de requisitos y cambios en el proyecto
Planificación ágil vs planificación tradicional
Videos cortos sobre planificación ágil
Planificación ágil con mapas de producto
Estimación y planificación ágil – Resultados del quinto encuentro ágil en
Barcelona
Creación de Product Backlog – III encuentro ágil en Barcelona
Planificación ágil de proyectos dependientes
Métricas ágiles y valor – VI encuentro ágil en Barcelona