miércoles, 28 de julio de 2010

Kanban y Scrum – Obteniendo lo mejor de ambos

Tras un mes de vacaciones, volvemos a la carga con el blog. Voy a empezar por un libro cortito cuya lectura ya tenía en mente antes de ir de vacaciones y que continúa el tema de las metodologías ágiles, haciendo una introducción a Kanban en este caso.

Este libro es la traducción al castellano, realizada por el equipo de contenidos de Agile Spain del libro de Henrik Kniberg y Mattias Skarin “Kanban vs Scrum – a practical guide”.

En el prólogo de este libro, David Anderson expone que la idea principal de Kanban consiste en limitar el trabajo en progreso (WIP – Work In Progress), utilizando tarjetas (kanban) como indicadores de que nuevos bloques pueden ser incorporados en un paso del flujo de trabajo. Está basado en las ideas extraídas del sistema de producción de Toyota (TPS – Toyota Production System) y se engloba dentro de las metodologías ligeras (Lean).

También comenta que Kanban introduce una aproximación a la gestión del cambio. Se comienza a hacer Kanban comprendiendo el flijo de trabajo actual y estableciendo límites para el trabajo en curso en cada una de sus fases. El trabajo es arrastrado (pull) a través del sistema a partir de señales Kanban. Mostrando este avance del trabajo en un panel se hacen visibles las deficiencias en el proceso y permite su mejora y adaptación continua.

El propósito de este libro es introducirnos a lo que es Kanban, comparándolo con Scrum, y a cómo pueden ser útiles en nuestro entorno. Para ello, el libro se divide en dos partes, en la primera parte Henrik Kniberg compara Kanban y Scrum y en la segunda parte Mattias Skarin presenta un ejemplo práctico de aplicación de Kanban.

Como he dicho, en la primera parte, más teórica, se comparan Scrum y Kanban a través de los siguientes capítulos:
  1. Bueno, pero, al fin y al cabo, ¿qué son Scrum y Kanban?: En este capítulo se resume de forma breve lo que es cada una de estas dos metodologías. Ya conocemos Scrum, así que sólo me detendré en las ideas principales de Kanban: visualizar el flujo de trabajo, limitar el WIP y medir el tiempo de ciclo para hacer que sea lo más pequeño y predecible posible.

  2. Entonces, ¿cómo se relacionan Scrum y Kanban entre sí?: Scrum y Kanban son herramientas de proceso que porporcionan ciertas restricciones y directrices. Ambos son métodos ligeros menos restrictivos que los métodos tradicionales y muy adaptables, siendo Scrum algo más restrictivo que Kanban. Estas herramientas no son excluyentes y se pueden mezclar entre sí y con otras herramientas como algunas de las ideas de XP.

  3. Scrum prescribe roles: Mientras que Scrum prescribe los roles de dueño del producto, equipo y Scrum Master, Kanban no establece ningún rol. Pero existe libertad para añadir los roles que se consideren necesarios.

  4. Scrum prescribe iteraciones de tiempo fijo: Scrum está basado en iteraciones de tiempo fijo que determinan la cadencia del proyecto. En una iteración se combinan las actividades de planificación, mejora del proceso y entrega. En Kanaban no existen iteraciones, por lo que estas actividades se pueden realizar siguiendo cualquier estrategia.

  5. Kanban limita el WIP por estado en flujo de trabajo, Scrum limita el WIP por iteración: Kanban limita el número de elementos al mismo tiempo en un estado del flujo de trabajo. En Scrum, el límite es el número de elementos en la pila del producto.

  6. Ambos son empíricos: En Scrum y Kanban el proceso se puede controlar de forma indirecta a través de parámatros como el número de componentes del equipo, el límite de trabajo en curso, la existencia de iteraciones… Son empíricos en el sentido de que se espera que experimentes con el proceso y lo adaptes a tu entorno. A este proceso de mejora se le denomina “kaizen” en terminología Lean, y se trata de buscar una realimentación sobre el proceso que de información sobre cómo mejorarlo.

  7. Scrum se resiste a los cambios durante la iteración: Scrum no permite modificar la pila del sprint durante el mismo, permitiendo al equipo mantenerse enfocado durante un periodo de tiempo suficiente. Kanban, en cambio, permite cambiar los elementos en la entrada del flujo de trabajo siempre que se respete el límte del WIP establecido.

  8. El tablero sprint se limpia entre iteraciones: En Scrum, cuando finaliza un sprint, el tablero se limpia y todos los elementos son eliminados. En Kanban, el tablero no se limpia, los elementos simplemente van avanzando a través de las columnas.

  9. Scrum prescribe equipos multifuncionales: En Scrum, el tablero pertenece a un equipo, y un equipo tiene todo el conocimiento necesario para llevar a cabo una iteración. En Kanban el tablero está relacionado con un flujo de trabajo y puede pertenecer a varios equipos de distintas funcionalidades.

  10. Los elementos de la pila de producto deben caber en un sprint: En Scrum, si un problema es demasiado grande para caber en un sprint, éste se descompone. En Kanban, aunque es interesante tener elementos pequeños que minimicen el tiempo de entrega, no es obligatorio que estos se ajusten a un intervalo de tiempo específico.

  11. Scrum prescribe la estimación y la velocidad: En Scrum los equipos estiman el tamaño relativo de cada elemento al que se comprometen, y sumando el tamaño de cada elemento se obtiene la velocidad. En Kanban no es necesario estimar, pero algunos equipos lo hacen para poder garantizar el tiempo de entrega promedio.

  12. Ambos permiten trabajar en múltiples productos simultáneamente: En Scrum, la pila de producto podría completarse con elementos de varios proyectos. Esto mismo, se puede hacer también en Kanban.

  13. Ambos son Lean y Ágiles: Ambos son sistemas de optimización “pull”, basados en procesos de optimización continuos y que priorizan la respuesta al cambio frente al seguimiento de un plan, entre otras características.

  14. Diferencias menores: diferencias menos relevantes entre Scrum y Kanban son que Scrum prescribe una pila de producto priorizada, establece reuniones diarias y utiliza gráficos burndown. En Kanban se utilizan diagramas de flujo acumulativo que representan como el WIP afecta al plazode entrega.

  15. El tablero Scrum vs. El tablero Kanban – un ejemplo menos trivial: En este apartado se muestran casos de utilización de un tablero Kanban en distintas situaciones. También se dan directrices sobre cómo aplicar los límites Kanban.

  16. Resumen de Scrum vs. Kanban: En este apartado se resumen los parecidos y las diferencias entre ambos vistos en los capítulos anteriores.

La segunda parte es un ejemplo de cómo poner Kanban en práctica. Con ello, el libro es una introducción estupenda a Kanban, sobre todo para aquellos que ya han visto algo de Scrum y que se preguntan cuál es la diferencia entre ambas herramientas.

Referencias:
Blog de Henrik Kniberg
Página web de Navegapolis