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 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 de clientes y de la disponibilidad para recibir la entrega por clientes. 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 quienes tienen suerte usando 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. Típicamente 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?

Para aprender más sobre Kanban, te recomiendo el taller Lean y Kanban en acción, de Kleer. 

12 comentarios:

  1. Muy interesante tu artículo. Creo que empezaré a aplicar estás métricas en uno de mis proyectos a ver que tal nos va.

    Gracias.

    ResponderBorrar
  2. Te felicito por el artículo, esta muy comprensible, amplía los conocimientos, descrito en videos y en documentos que he revisado.
    Me da una mejor perspectiva del trabajo que debo realizar en MPG.
    GRACIAS

    ResponderBorrar
  3. Muy bueno Thomas.. concreto y directo... además estaba necesitando algo así para un kanban que estamos por implementar... gracias

    ResponderBorrar
  4. hola, buena info, tengo una consulta.. como se grafica? en promedio o con la cantidad de tarjetas hecha? gracias

    ResponderBorrar
    Respuestas
    1. Hola! Me parece que depende de como quieras mostrar la info. A mi me ha servido mostrar en el eje X el tiempo en días (o en semanas) y en el eje Y el valor promedio de Cycle Time, Lead Time y/o Touch Time.

      Borrar
  5. Hola buenas!
    De verdad me sirvió mucho esta información, ya que estoy aprendiendo como Scrum master.
    Pero tengo una duda: cuando hablas de días bloqueados, te refieres a: sábados y domingos + festivos? Sé qué puede sonar algo tonto, pero es algo que necesitaba preguntar.

    Muchas gracias de verdad por la información. Me gusta mucho tu blog!

    ResponderBorrar
    Respuestas
    1. Gracias Gloria!

      En el ejemplo, cuando se calcula el Lead Time y Cycle Time, se tienen que restar los días no trabajados (festivos, fin de semana).

      Para calcular el Touch Time, se restan al Cycle Time los días bloqueados, o sea la cantidad de días laborables donde no hubo trabajo del equipo sobre el item.

      Espero se entiendo!

      Saludos!

      Borrar