Hace unos días en
Ceiba (empresa donde trabajo como Scrum Master) filosofábamos en equipo la siguiente pregunta:
¿qué era necesario hacer para lograr mayor velocidad (puntos por sprint)?
Nota aclaratoria: no fue presión mía como Scrum Master hacia el equipo, pero si es cierto que yo lancé la inquietud (realizando la Inception :-) como en la película el Origen, de Nolan y Di Caprio)
La respuesta a esta inquietud ha llegado gradualmente, y pienso que es uno de los interrogantes obligatorios que tiene que plantearse un Scrum Master y que debe plantearle al equipo.
Dentro de las responsabilidades del SM están:
- el seguimiento del proceso
- el coach al equipo
- y dentro de ese coach llevarlo a una productividad mayor (a un doble de productividad según Sutherland - padre de scrum- [1] )
Hay que reconocer que Scrum nos ha permitido ser muchos más veloces y productivos debido a:
- Involucramiento y compromiso del dueño del producto, que permite resolver inquietudes rápido
- Visibilidad y resolución rápida de impedimentos
- Retrospectivas bien hechas, que nos llevan a la mejora continua
- Empoderamiento del equipo, de forma que este por si mismo se auto-organiza y encuentra la mejor forma de entregar el producto
- Los valores de coraje y compromiso, que han permitido querer ir más allá y poder enfocarnos mucho más en como ser mejores
- Atención a la excelencia técnica, que ha hecho que nuestra deuda técnica cada vez sea menor, lo cual mejora nuestra velocidad. "La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad" [2] (principio del manifiesto ágil). (este punto lo retomaré más adelante)
- Teniendo el equipo motivado y feliz, equipos motivados son más ágiles "Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo." [2] (principio del manifiesto ágil).
Pero luego de estar allí, es necesario plantearse ¿es posible ser mejores? a continuación entonces, enumero en orden de importancia (según mi criterio) las formas en las que considero y he encontrado que podemos ser más veloces:
1. Seguir el patrón Scrumming the Scrum
En la conferencia de
Jeff Sutherland | "Scrum: The Future of Work" [3], presenta este patrón de scrum como una de las formas de llegar "hiper-productividad" en los equipos
 |
Patrón: Scrumming the Scrum [4] |
Este patrón se basa en:
- Identificar y priorizar la(s) mejora(s) (kaizen) a realizarle al proceso de Scrum en la Reunión de Retrospectiva. Recordemos en la retrospecttiva debemos enfocarnos en:
- cómo mejorar el proceso de elaboración del producto, el cómo que Scrum no resuelve y deja en libertad a los equipos).
- cómo mejorar la calidad y el producto
- cómo mejorar la felicidad del equipo
- Enfocarse en la(s) mejora(s) más importante(s) y críticas. He leído por ahí que máximo 3 cosas muy importantes a mejorar (1, 3 ó 4 no recomiendo ningún número en especial - yo prefiero pocas cosas a muchas - intenten una opción y concluyan - recordemos que lo que funciona en un equipo no tiene por que funcionar en otro)
- Ponga el Kaizen en el primer lugar del sprint backlog con criterios de aceptación cuantitativos.
- Revise la mejora Kaizen en el Sprint Review como si fuera otra historia.
Beneficios:
- terminar antes
- solicitar mas backlog para el sprint
- incrementar la métrica de "el clima de ayer" para el próximo planning.
2. Seguir el patrón de Interrupción
Otro de los patrones expuestos en esta conferencia
Jeff Sutherland | "Scrum: The Future of Work" [3] para llegar a la "hiper-productividad", es el presentado a continuación:.
Este patrón es útil cuando el producto ya se encuentra en producción y se requiere atención inmediata a temas específicos.
El patrón se basa en:
- Luego del Kaizen determine una cantidad de puntos disponibles para tareas inmediatas que requiere el Product Owner.
- Si identifica que no se van a consumir úselos en más historias.
Beneficios:
- Equipo dispuesto para atender urgencias con un tiempo asignado para ello, sin que les quite velocidad y compromiso..
- Product Owner contento con su equipo, debido a que pueden atender temas urgentes.
3. Hacer Sprints más cortos
Esta recomendación nos la dió Ricardo Colusso (
@rcolusso) de
kleer.la en donde nos sugería realizar sprints de 1 semana.
Beneficios:
- Poder fallar más rápido, debido a ciclos de retroalimentación más cortos.
- Despliegue de producto más rápido
Requerimientos
- Más compromiso del Product Owner
- Más historias de usuario refinadas y cumpliendo el criterio de Ready.
- Historias de usuario más pequeñas
Nota: No he intentado esta sugerencia
4. Tener un backlog refinado y con el criterio de ready
Otra de las recomendación que nos la daba Ricardo Colusso (
@rcolusso) de
kleer.la y que también remarcaba Sutherland era la necesidad de tener un backlog refinado y con el criterio de ready, esto indiscutiblemente proporciona una visión clara hacia donde va el producto.
Beneficios:
- Visión de producto
- equipo enfocado
Requerimientos
- Más compromiso del Product Owner
- Realizar la reunión de refinamiento al la mitad del sprint
- tener al menos 2 sprints más con historias de usuario cumpliendo el criterio de Ready.
5. Resolviendo la deuda técnica
La deuda técnica es uno de los elementos que termina frenando la velocidad de los equipos y va en contra de la atención a la excelencia técnica (que es uno de los principios del manifiesto ágil). Recomiendo el post de
Henrik Kniberg - The Solution to Technical Debt . Aunque pienso que es un tema de estudio y de compromiso con el cliente, producto, product owner y mismo equipo.
Presento dos gráficas de este post, que muestran la necesidad de detener la deuda técnica y comenzar a "pagarla" antes de que la velocidad de nuestro equipo se vea frenada radicalmente.
 |
Efecto de programar con código apestoso (crappy code) (en español no encuentro una palabra polite para crappy) [4] |
 |
Efecto de trabajar con código limpio (clean code) [4] |
Beneficios:
- Velocidad
- entendimiento del código
- excelencia técnica
Requerimientos
- Equipo con coraje y conocimiento técnico
- Equipo y Scrum Master que sepan vender la idea de resolver la deuda técnica el Product Owner.
- Hacer la deuda técnica como parte del kaizen y darle prioridad e importancia en el proyecto.
Recomendación
- Tener lineamientos técnicos que se cumplan desde el inicio del proyecto.
6. Teniendo una holgura (Slack) cada cierto tiempo
Por último, la holgura o Slack es un tiempo intencional dejado entre sprints para cubrir cualquiera de las siguientes tareas:
- Innovación técnica
- transferencia de conocimiento entre equipos
- realizar ajustes pendientes de soporte y mantenimiento
Algunas de las formas de implementar el Slack son:
- dejar un tiempo pequeño entre sprints de 1 a 2 días
- 6×2 + 1 - despues de 6 sprints de 2 semanas, descansar una.
- El viernes del desarrollador: Cada viernes el desarrollador tiene tiempo para alguna de estas tareas.
- Una carta dorada. Esta carta en el juego del poker le dará al desarrollador un día libre (el que quiera) para usar el slack en lo que el quiera.
- etc..
Recomiendo visitar este post:
Cutting Slack in Scrum
En conclusión
Si seguimos estas directrices, no dudo que podremos mostrar gráficas de velocidad similares a la que presenta Jeff Sutherland
 |
Incremento de velocidad aplicando los patrones 1 y 2 [4] |
Y pronto estaremos escribiendo artículos y recomendaciones de como ser mejores en Scrum.
Consideración importante respecto a la puntación de historias
Cuando se mejore la velocidad y encontremos qué cosas que antes nos tomaban más tiempo, pero ahora luego de la mejora nos toman mucho menos, debemos de tener una consideración importante respecto a la puntuación:
- si tus puntos fueron diseñados poniendo un pivote de funcionalidad conocido (ejemplo una pantalla con un formulario de 8 campos), no hay lio, ese pivote y las demás funcionalidades las hará el equipo más rápido y la puntuación seguirá siendo la misma.
- Si tu pivote esta basado en días felices/productivos (ver [7]) (yo uso esa técnica), considera que si haces algo más rápido debes puntuarlo de la misma forma que usabas al principo del proyecto, como si no tuvieras hiper-velocidad o hiper-productividad, ejemplo:
- si una pantalla tipo a= te tomaba 2 días felices (2 puntos).. .pero luego de la mejora te toma un dia feliz (un punto) síguela puntuando como antes, pues esa es la referencia inicial con la que se dimensionó el proyecto y permitirá visualizar la velocidad y la mejora.
Hasta ahora he encontrado estas 6 formas, talvez hayan más o sean realmente menos, si alguien conoce, aprende, o ensaya más y las puede/quiere compartir bienvenidas sean, es importante todos aprender de todos.
Queda abierto el espacio para sus comentarios y experiencias.
Saludos
Jorge Abad
---
Referencias: