jueves, 9 de febrero de 2012

Kanban



En este post quiero empezar a hablar del uso de Kanban para soporte a producción. En entornos en los que se utiliza SCRUM para el desarrollo de productos, muchas veces hay aspectos del paradigma SCRUM que no son apropiados para resolver las necesidades de los equipos de operaciones o de infraestructuras.

Por ejemplo:

  • Iteraciones: El concepto de iteración puede resultar no apropiado porque los equipos que dan soporte a producción necesitan tener tiempos de respuesta más rápidos (apaga fuegos).
  • Equipos multidisciplinares vs. equipos especializados: Una de las bases de SCRUM, los equipos multidisciplinares (¿Quien no sueña con un desarrollador de esos a los que a veces se llama “renaissance developer”?), no puede ser aplicable en departamentos de operaciones o infraestructuras, con perfiles altamente especializados.

Y es en esos casos donde se puede utilizar Kanban. Pero… ¿qué es Kanban? ¿Cómo se compara con SCRUM? En este post daré las bases de Kanban, y en otros sucesivos me centraré en problemas más particulares y detalles de ponerlo en marcha.

Kanban se puede resumir de la siguiente forma:

  • El flujo de trabajo debe ser visible: La famosa “pizarra” de SCRUM. O, en otras palabras, divide el flujo de trabajo en diversas etapas y muéstralas. En la siguiente ilustración he puesto un ejemplo de panel Kanban que utilicé en un proyecto:




    En este caso, los diferentes colores correspondían a tipos de tareas. No es necesario distinguir entre tipos de tarea, aunque a veces puede ser útil. También se pueden utilizar diversos tableros Kanban si se tienen diversos equipos, o bien un solo tablero para todos. Además, el diseño del tablero también se puede customizar: los estados de trabajo en vertical y diferentes proyectos / departamentos en horizontal, etc.


    ¿Qué tarea se escoge para pasar al siguiente estado? Por ejemplo, dentro de la lista de tareas que están pendientes, ¿cuál será la siguiente en la que se trabajará? Kanban no prescibe un método en particular. Se pueden realizar reuniones de priorización, o bien un método más fácil: La más antigua, por ejemplo. Esto es una diferencia con el Product Backlog con prioridades de SCRUM.

  • Limita el Work in Progress: Este es el concepto fundamental. El equipo sólo puede trabajar en x elementos a la misma vez. Este número es más difícil de establecer correctamente de lo que parece a simple vista. En un principio, casi seguro que los equipos se equivocarán. Pero por la naturaleza de “prueba y error” de Kanban, el numero se irá modificando hasta que funcione.

    Es el número 4 del ejemplo gráfico anterior:





    Significa que el equipo, pase lo que pase, sólo puede trabajar en 4 elementos a la vez.

    En general:
    • Si el limite WIP es demasiado bajo, podemos tener a miembros del equipo de brazos cruzados. Esto es especialmente crítico si el tipo de tareas no son fácilmente compartidas (tipos de trabajo en los que poner a más personas trabajando en ellas sólo creará problemas).
    • Si el límite WIP es demasiado alto, baja el tiempo de respuesta. Nos acercamos a la forma de trabajar tradicional (estamos en mil cosas y no acabamos ninguna). No se sabe nunca cuando el negocio tendrá resolución y, además, no hay presión para solventar cuellos de botella porque el equipo se puede poner a trabajar en otra tarea sin problemas.


    A veces, encontrar el límite de WIP correcto llega a parecerse más a un arte que a una ciencia.
    En algunos casos, también se pueden poner límites en otras columnas. Por ejemplo, en “paso a producción”. Esto ayuda porque así evita que se acumulen elementos en cualquier estado.
    En general, las ventajas son que limitando el WIP tenemos una forma muy gráfica para detectar cuellos de botella y que conseguimos que el equipo se concentre en resolver el trabajo que tiene entre manos.

  • Mide y optimiza el tiempo medio para completar un elemento: A esto se le llama “tiempo de ciclo”, en inglés “Lead time”. Es importantísimo porque el “Lead time” es la base de las expectativas de negocio y también se utilizará para ir adaptando el límite de WIP hasta llegar a un valor óptimo para cada equipo.




    Aunque ahora no me extenderé sobre el tema, es bastante lógico deducir que para que la métrica de “Lead time” tenga sentido, las tareas deben tener tamaños más o menos equivalentes. O, si no es así, tener una medida en “horas-hombre”, “puntos de historia”, etc. Las tareas se priorizan y se estiman en reuniones de planificación, que en el caso de Kanban se pueden establecer cuando sea más necesario.

Resumiendo, muchas veces se utiliza Kanban para el soporte a produción y SCRUM para el desarrollo. Ambos comparten principios comunes, lo que los hace perfectamente compatibles. Sobretodo, los dos están basados en la evaluación continua. El método de la prueba y el error. En este aspecto, SCRUM es más restrictivo que Kanban. En SCRUM, la reunión de retrospective es imprescindible y se realiza al final de una iteración. En Kanban, no hay limitaciones al respecto. Y cuando “insertamos” retrospectives de forma más o menos organizada en un método Kanban, estamos llegando a un sistema que se ha empezado a llamar “Scrumban”.

No hay comentarios:

Publicar un comentario en la entrada