3.2 Kanban Tema 3: Scrum y Kanban
Introducción a Kanban
Historia Orígenes en los sistemas de fabricación lean y en los sistemas pull Entre 2003 y 2010 trabajo de David J. Anderson en los equipos de desarrollo de Microsoft y Corbis para adaptar estos sistemas al desarrollo de software Presentación en sociedad en la conferencia Agile 2007 en Washington Crece el interés: 6 presentaciones en Agile 2008 en Toronto Publicación del libro de David J. Anderson en 2010 Aceptación por la comunidad ágil e integración con la metodología más aceptada en este momento: Scrum David J. Anderson Kanban 3
Motivaciones Conseguir un ritmo de trabajo sostenible en el desarrollo de software Visualizar en todo momento la carga de trabajo del equipo de desarrollo (WIP: Work In Progress, trabajo en progreso) Visualizar y estandarizar el flujo de trabajo de las historias de usuario Políticas explícitas (definition of Done, límites WIP, etc.) Kanban 4
Qué equipo necesita mejorar? Todo Doing Done this week Todo Doing Done this week Avg lead time: 20 days Avg lead time: 3 days Henrik Kniberg Kanban 5
Jardines Imperiales de Tokio En las entradas dan a cada persona una tarjeta que hay que devolver a la salida No se cobra en ningún momento Para qué sirve la tarjeta? Límite en el número de personas dentro del recinto (WIP) Kanban 6
Kanban in a nutshell Visualizar el flujo de trabajo 1. Dividir el trabajo en pequeñas partes, escribir cada elemento en una tarjeta y ponerla en un tablero 2. Crear un tablero compartido por el equipo, dividido en columnas que identifican en qué parte del flujo de trabajo se encuentra el elemento Henrik Kniberg Limitar el WIP (Work In Progress, trabajo en progreso): asignar un límite al número de elementos que puede haber en cada estado del flujo de trabajo Medir el tiempo medio de terminación de un elemento (llamado lead time o cycle time) y optimizar el proceso para hacerlo tan pequeño y predecible como sea posible Kanban 7
Kanban 8
Kanban 9
Kanban 10
Kanban 11
Kanban 12
Kanban 13
Kanban 14
Juego: Pasar las monedas Kanban 15
3 rondas Cada encargado: Pone en marcha el cronómetro cuando su trabajador recibe la moneda #1 Para el cronómetro cuando el trabajador envía su moneda #20 Each manager: Start the timer when your worker receives coin #1 3 rounds Each Stop manager: the timer when your worker sends coin #20 Cuánto tarda cada Start the timer Ronda when 1: your tamaño worker receives del batch coin 20 #1 trabajador? Ronda 1 Ronda 2 Ronda 3 3 rounds Round A: Batch size 20 Round Round Stop Round the timer when your worker sends coin #20 Lisa David Martín María Cuándo recibe el cliente la primera moneda? Cuándo recibe el cliente la última moneda? How long did each worker take? How long did each worker take? Lisa Lisa David Jack David Maria Jack How long did each When worker did take? the customer Maria receive the first coin? When did the When customer did the receive customer receive the first coin? the last coin? When did the customer receive A Round A 3 rounds Lisa David Round A the last coin? Jack Henrik Kniberg Maria Henrik Kniberg When did the customer receive the first coin? When did the customer receive the last coin? B Round B Round B C Round C Round C Round A: Batch size 20 Round B: Batch size 5 Ronda 2: tamaño del batch 5 Round B: Batch size 5 Each manager: Start the timer when your worker receives coin #1 Stop the timer when your worker sends coin #20 Round A: Batch size 20 Round C: Batch size 1 Round C: Batch size 1 Ronda 3: tamaño del batch 1 Round B: Batch size 5 Round C: Batch size 1 216 216 Kanban 16
Resultado típico Kanban 17
Algunas preguntas Qué ha pasado con el tiempo total? Por qué? Qué ha pasado con el tiempo de cada trabajador individual? Por qué? Cómo se sentían en cada ronda? Ha sido estresante? Cuándo ha sido más calmado? Se puede trasladar esto al desarrollo de software? Qué representan las monedas? Qué no es aplicable en el desarrollo de software? Kanban 18
One day in Kanban land Henrik Kniberlg, One day in Kanban land
One day in Kanban land ( Henrik Kniberg) Kanban 20
One day in Kanban land ( Henrik Kniberg) Kanban 21
One day in Kanban land ( Henrik Kniberg) Kanban 22
One day in Kanban land ( Henrik Kniberg) Kanban 23
One day in Kanban land ( Henrik Kniberg) Kanban 24
One day in Kanban land ( Henrik Kniberg) Kanban 25
One day in Kanban land ( Henrik Kniberg) Kanban 26
One day in Kanban land ( Henrik Kniberg) Kanban 27
One day in Kanban land ( Henrik Kniberg) Kanban 28
One day in Kanban land ( Henrik Kniberg) Kanban 29
One day in Kanban land ( Henrik Kniberg) Kanban 30
One day in Kanban land ( Henrik Kniberg) Kanban 31
One day in Kanban land ( Henrik Kniberg) Kanban 32
1. Visualizar el flujo de trabajo
Flujo de trabajo Cada empresa de desarrollo de software tiene su propio flujo de trabajo Para aplicar Kanban debemos empezar identificando el flujo de trabajo Qué son los ítems de trabajo (work items)? Por qué fases pasan? Existen distintos tipos de ítems? Su tamaño tiene mucha variabilidad? Kanban 34
Historias de usuario e ítems de trabajo Si las historias de usuario tienen un tamaño demasiado grande, las debemos dividir en tareas más pequeñas Todas las historias deben ir acompañadas de criterios de aceptación (lo primero que debemos hacer si desarrollamos con TDD) Escribiremos las tareas en forma de ítems de trabajo en etiquetas que pegaremos en el tablero Kanban Los ítems de trabajo sí que pueden ser partes horizontales del proyecto Los ítems de trabajo tampoco pueden ser demasiado pequeños Una historia no se resuelve con un método de un API. Debemos implementar todos sus aspectos: interfaz de usuario, código de cliente, servidor, base de datos, etc. Como <rol> quiero <característica> para <beneficio> Como estudiante quiero generar un PDF con mi expediente para guardar un resumen de mi expediente y poder entregarlo a quien me lo pida Independent Negotiable Valuable Estimable Small Testable Acrónimo creado por Bill Wake www.xp123.com Kanban 35
Post-it con el ítem de trabajo Descripción del ítem de trabajo. Concisa, precisa y entendible por todos los miembros del equipo. Fecha de comienzo Quién está trabajando en el ítem. Lo ideal sería un avatar pegado encima de la etiqueta. Plazo de finalización Código de identificación con el que podemos encontrar más información sobre el ítem en otro lugar (sistema online, etc.) Indicador de progreso (cuánto se ha avanzado en el ítem) Tamaño del ítem (S,M,L) 10-10-13 24-10-13 #TSK: 1304 CREAR PDF CON LA FICHA INFORMATIVA DEL ESTUDIANTE M @ Avatars: nitsnets Kanban 36
El tablero Kanban El objetivo principal del tablero Kanban es mostrar visualmente en qué está trabajando el equipo en un momento dado Principales utilidades: Elemento fundamental para la reflexión, la comunicación y la discusión en las reuniones de pie diarias Medir distintas métricas relacionadas con el flujo: número de ítems terminados por semana, WIP Definir políticas estrictas de flujo de trabajo y de terminación (Definition of Done) Kanban 37
Tablero Kanban http://ketiljensen.wordpress.com/2009/10/31/kanban-the-next-step-in-the-agile-evolution/ Kanban 38
Un sistema Kanban sencillo To Do Doing Done this week 5 3 Migrate invoicing reports to the new format amet, co nse ctetur amet, co nse ctetur amet, co nse ctetur 12 amet, co nse ctetur amet, co nse ctetur amet, co nse ctetur amet, co nse ctetur Lead time (days) 9 6 7 amet, co nse ctetur amet, co nse ctetur 3 5 3 Avg cycle time: 5 days 0 w1 w2 w3 w4 w5 w6 8 10 7 7 9 Henrik Kniberg Kanban 39
Kanban kick-start example ( Henrik Kniberg) Henrik Kniberg Next Analysis Development Acceptance Prod 2 3 3 2 2009-09-03 ipsum dolor sit amet, co nse ctetur adi pis cing elit nisl Ongoing 2009-09-02 amet, nse ctetur adi pis elit nisl Kanban kick-start example Done 2009-09-01 orem ipsum orem ipsum dolor dolor sit amet, co nse adi pis cing elit nisl Ongoing 2009-08-30 2009-09-08 amet, co adi pis cing elit nisl www.crisp.se/kanban/example xxxx kjd orem ipsum dj dolor d xxx sit Done 2009-08-27 amet, ctetur adi pis cing elit nisl Ongoing 2009-08-27 amet, adi pis cing elit nisl Done version 1.2 2009-11-16 2009-08-20 orem olor sit amet, co nse ctetur adi pis cing elit nisl 2009-08-20 2009-08-25 adi pis cing elit nisl 2009-08-22 amet, co 2009-09-02 orem ipsum dolor sit amet, co nse 2009-08-29 amet, nse ctetur adi pis cing elit nisl 2009-08-26 orem adi pis cing elit nisl 2009-08-25 ctetur adi pis cing elit nisl Definition of Done: Goal is clear First tasks defined Story split (if necessary) Definition of Done: Code clean & checked in on trunk Integrated & regression tested Running on UAT environment Definition of Done: Customer accepted Ready for production Feature / story Date when added to board 2009-08-20 2009-09-30 (description) Hard deadline (if applicable) = priority = panic Who is analyzing / testing right now Task / defect (description) (description) (description) Why (description) =task = completed = blocked (description) =defect = who is doing this right now What to pull first Panicfeatures (should be swarmed and kept moving. Interrupt other work and break WIP limits as necessary) Priority features Hard deadline features (only if deadline is at risk) Oldest features Kanban 40
Ejemplos de tableros Kanban Mattias Skarin, 10 kanban boards and their context Kanban 41
Ejemplos de tableros Kanban Mattias Skarin, 10 kanban boards and their context Kanban 42
Ejemplos de tableros Kanban Mattias Skarin, 10 kanban boards and their context Kanban 43
Kanban evoluciona en cada equipo Kanban 44
Un ejemplo de tablero - Lean from the Trenches Henrik Kniberg, Lean From the Trenches Kanban 45
Políticas en el tablero Henrik Kinberg, Lean From the Trenches Kanban 46
Diferentes tipos de trabajo Henrik Kniberg, Lean From the Trenches Kanban 47
Buffers Henrik Kniberg, Lean From the Trenches Kanban 48
Estadísticas Henrik Kniberg, Lean From the Trenches Kanban 49
Escalar el tablero: tres equipos trabajando en el mismo proyecto Henrik Kniberg, Lean From the Trenches Kanban 50
Tablero on-line? Problemas principales No visible en un lugar del espacio de trabajo Poca resolución de pantalla y necesidad de hacer scroll para ver todo de un vistazo Falta de flexibilidad Ventajas Cálculo automático de diagramas y velocidades Consultas ( Qué está haciendo Fulanito? Cuánto tiempo lleva esta tarea aparcada?,...) Solución Actualizar diariamente una copia del tablero físico en alguna herramienta on-line Kanban 51
2. Limitar el WIP
Límite de trabajos en progreso Henrik Kniberg, Lean From the Trenches Kanban 53
Un límite por estado del flujo Kanban 54
Por qué limitar el WIP? Evitar exceso de multitarea Evitar sobrecargas en las siguientes partes de la cadena de proceso (downstream) El límite del WIP debe establecerse por consenso entre todos los implicados en el proyecto La tensión creada por establecer un WIP obliga a discusiones y análisis beneficiosos para el equipo y el proyecto Kanban 55
Limitando el WIP se aumenta el throughput Henrik Kniberg Kanban 56
Cuál es el límite óptimo? Se obtiene midiendo, experimentando y mejorando Empezar usando alguna regla sencilla: 2n-1, siendo n el número de personas trabajando en esa fase Estudiar el flujo y optimizar el límite (Kanban es un proceso empírico) Kanban 57
Optimizar el límite de WIP Henrik Kniberg Kanban 58
El límite de WIP obliga a terminar Frase importante en Kanban Stop starting, start finishing El límite de WIP obliga al equipo a centrarse en terminar tareas antes de poder acometer nuevas Kanban 59
Clases de servicio En Kanban se pueden definir condiciones adicionales que afectan al límite de WIP según la clase de servicio (class of service) del ítem de trabajo Nuevas características (historias de usuario) Solucionar bugs y deuda técnica Tareas de soporte Ejemplo muy común: clase Expedite Ítems urgentes que tienen prioridad sobre el resto Se define un carril adicional en el tablero para ellos con un WIP de 1 (carril rápido o fast lane) Kanban in Action Kanban 60
3. Medir y optimizar el flujo (tiempo medio de terminación)
Tiempo medio de terminación (cycle time o lead time) Tiempo medio que tarda un ítem de trabajo en ser procesado en cada paso Equivalente al número de ítems terminados por unidad de tiempo Se suele analizar su evolución a lo largo del proyecto usando lo que se denomina diagrama de flujo acumulativo Henrik Kniberg, Lean from the Trenches Su cálculo es muy sencillo: basta una hoja de cálculo (o incluso una pizarra) Diagrama de fujo acumulativo Kanban 62
Cadena de valor La definición de la cadena de valor (value chain) por la que pasan los ítems de trabajo es importante tanto para analizar el flujo y detectar cuellos de botella Eficiencia del ciclo de proceso Henrik Kniberg & Mattias Skarin, Kanban and Scrum, InfoQ Kanban 63
Resumen prácticas Kanban 1. Visualizar el flujo de trabajo 2. Limitar el Work In Progress 3. Medir y optimizar el flujo (el tiempo de ciclo o lead time) 4. Hacer explícitas las políticas Definition of Done (Definición de Hecho) Classes of Service (Clases de servicios) Service Level Agreement (Acuerdos de nivel de servicios) 5. Retroalimentación y mejora continua Ritmo y cadencia Daily Standups (Reuniones diarias) Retrospectivas Kanban 64
Receta para el cambio a Kanban 1. Centrarse en la calidad (Focus on Quality) 2. Reducir el Work-In-Progress (Reduce Work-in-Progress) 3. Entregar con más frecuencia (Deliver Often) 4. Equilibrar la demanda con el rendimiento (Balance Demand against Throughput) 5. Priorizar (Prioritize) 6. Atacar las fuentes de la variabilidad para mejorar la predictibilidad (Attack Sources of Variability to Improve Predictability) David J. Anderson, Kanban, Cap. 3 Kanban 65
Bibliografía Libros básicos Marcus Hammarberg, Joakim Sunden, Kanban in Action Henrik Kniberg, Kanban and Scrum, pp. 1-51 Libros avanzados David J. Anderson, Kanban Kanban 66