13 de julio de 2012

Las 3 métricas claves del kanban

Me gusta explicar Kanban a equipos de TI con las siguientes tres reglas esenciales:

1. Mostrar el proceso y el trabajo en curso
2. Limitar el trabajo en curso
3. Optimizar el flujo de trabajo

En este post quiero detenerme en particular sobre 3 métricas que me parece fundamental monitorear para trabajar la tercera regla.

¿Cuáles son las tres métricas?

Cycle Time: Es la métrica que registra el tiempo que sucede entre el inicio y el final del proceso, para un ítem de trabajo dado. Se suele medir en días de trabajo. 

Lead Time: Es la métrica que registra el tiempo que sucede entre el momento en el cual se está pidiendo un ítem de trabajo y el momento de su entrega (el final del proceso). Se suele medir en días de trabajo. 

La siguiente traducción de la explicación de Corey Ladas sobre la diferencia entre Cycle Time y Lead Time ayuda a entender mejor estos conceptos:
"El reloj del Lead time se inicia cuando se hace el pedido y termina cuando se entrega. El reloj de Cycle Time se inicia cuando el equipo empieza a trabajar sobre el ítem y se termina cuando el ítem está listo para la entrega. El Cycle Time es una medición más mecánica de la capacidad del proceso. El Lead Time es lo que ven los clientes. El Lead Time depende del Cycle Time, pero también depende de la buena disposición para mantener un backlog de ítems de trabajo, de la paciencia del cliente y de la disponibilidad para recibir la entrega del cliente. Otra forma de mirarlo: el Cycle Time mide el ritmo de terminación, mientras el Lead Time mide el ritmo de entrega."


Touch Time: Descubrí el concepto en el libro Lean From The Trenches, de Henrick Knibberg (y al poco tiempo lo empezamos a registrar en el kanban de un equipo de testing):

Es la métrica que registra el tiempo en el cual un ítem de trabajo fue realmente trabajado (o "tocado") por el equipo. Dicho de otra forma: cuantos días hábiles pasó este ítem en columnas de "trabajo en curso", en oposición con columnas de cola / buffer y estado bloqueado o sin trabajo del equipo sobre el mismo.

Con lo cual, para un mismo ítem: 

¿Cómo registrar las tres métricas?

No soy muy amante de las herramientas para soportar los tableros kanban, pero en el caso de usarlos, seguro tendrán funcionalidades muy lindas para registrar y monitorear estas 3 métricas (y mucho más).

Para los suertudos que usan tableros fiscos de kanban, es bastante fácil mantener el registro de estas métricas sin que sea una carga administrativa pesada. Lo que en mi experiencia funciona bien es anotar en los post-its de los items de trabajo alguna información y luego completar una planilla digital con esta información en el momento de finalización del proceso de trabajo de cada ítem.

  • Información a registrar para Cycle Time y Lead Time
El tablero debería contar con una columna "Backlog" donde se agrega un post-it de ítem de trabajo cada vez que se hace un pedido de trabajo. La idea es anotar en el mismo post-it la fecha en la cual se agregó el post-it al tablero (=fecha de pedido). Por otro lado, cuando un ítem de trabajo se empieza a trabajar (y su post-it ingresa a la primera columna de trabajo del tablero), se registra la fecha en el mismo post-it (=fecha de inicio).

  • Información a registrar para Touch Time
Un mecanismo simple para eso es agregar un punto rojo en el post-it de un ítem de trabajo para cada día en el cual el equipo no hizo nada para este ítem. Tipicamente esto ocurre cuando un ítem permanece en una columna de cola / buffer, cuando surge un bloqueo externo al equipo o cuando el equipo está trabajando sobre otros ítems. Si el equipo hacer reuniones diarias de actualización del tablero, es bastante fácil de implementar durante la reunión. 



  • Planilla de calculo de las métricas
El ultimo paso es ingresar esta información en una planilla de calculo. La idea es que cada vez que un item se entrega (=ingresa a la columna de "Terminado" del tablero), se vaya guardando cierta información del post-it en una planilla de calculo. En particular: la fecha de pedido (1), la fecha de inicio (2), la fecha de entrega (3)  y la cantidad de días bloqueados (4)

En esta planilla se pueden armar los cálculos siguientes para las 3 métricas: 
    • Cycle Time = DíasHabilesEntre(3-2)
    • Lead Time = DíasHabilesEntre(3-1)
    • Touch Time = Cycle Time - 4


DiasHabilesEntre(fecha1, fecha2) se puede resolver por ejemplo con la función "NETWORKDAYS" en las planillas de google docs. Ver esta planilla de ejemplo (con los feriados del 2012 de Argentina).


¿Qué monitorear?
En mi experiencia, es importante revisar periódicamente o durante retrospectivas los números a continuación. En la tabla también explico posibles interpretaciones de las tendencias y algunas pistas para mejorar: 
¿Qué monitorear?
Tendencia
Posibles Interpretaciones
Posibles Acciones
Promedio del Cycle Time Está bajando - El equipo está mejorando
- Proceso más fluido 
- Seguir así!
Promedio del Cycle Time  Está subiendo - Se complejiza el trabajo
- Hay bloqueos y/o cuellos de botella
- Se desmotiva el equipo
- Analizar cuellos de botella y bloqueos de trabajo
- Revisar motivación del equipo y/o capacidad del equipo para el trabajo 
Promedio del Lead Time  Está bajando - No hay pedidos
- El equipo está sobre-dimensionado
- Mejoramos 
- Analizar si no deberían llegar más pedidos
- Analizar dimensionamiento del equipo
Promedio del Lead Time  Está subiendo - Hay muchos pedidos
- El equipo está sub-dimensionado
- El ritmo de trabajo no es suficiente

- Revisar validez de los pedidos
- Analizar dimensionamiento del equipo
- Revisar motivación del equipo y/o capacidad del equipo para el trabajo 
Variabilidad Cycle Time Muy variable- Muchas diferencias de complejidad entre los items
- Deuda técnica acumulada surge en cualquier ítem en forma aleatoria
- Separar items en varias clases de servicios o según complejidad (alta, media, baja)
- Atacar la deuda técnica e implementar prácticas para bajarlas (XP)
Promedio Touch Time / Promedio Cycle TimeBaja proporción- Mucha espera en el proceso
- Muchos bloqueos en el proceso y cuellos de botella
- Mucho mult-tasking
- Bajar los limites de WIP y trabajar sobre puntos de bloqueos y cuellos de botella
- Identificar puntos de espera externa y trabajar sobre su optimización
Promedio Cycle  Time / Promedio Lead TimeBaja proporción - El equipo está sub-dimensionado
- El ritmo de trabajo no es suficiente
- Analizar dimensionamiento del equipo
- Revisar motivación del equipo y/o capacidad del equipo para el trabajo 

¿Usan estas métricas? ¿Tienen otras en su Kanban?