Métodos ágiles más usados II: métodos Lean

Métodos Lean

Continuamos con el post de los métodos ágiles más usados, en este caso, hablaremos sobre aquellos de filosofía Lean.

Lean y agile son dos conceptos semejantes. Cada uno evolucionó de forma independiente y con el tiempo terminaron por confluir. Por tanto, no podemos hablar de agile sin tener en cuenta el paradigma lean, ni podemos obviar la naturaleza ágil de los métodos lean.

Así que hoy veremos los diferentes métodos lean. Vamos al lío.

Lean: la agilidad que llegó de Japón

Antes de abordar los métodos lean más conocidos, vamos a hacer una parada en el concepto de Lean, que de las muchas traducciones posibles quizá la más acertada sea austero, en el sentido de “sin desperdicio” o “sin nada que no sea necesario”.

Es una filosofía de trabajo que se fraguó en Japón tras la Segunda Guerra Mundial y que, cosas del destino, terminaría entroncando con lo que décadas después se llamaría agile.

En general podemos decir que Lean engloba las ideas de añadir valor y reducir al máximo el desperdicio, minimizando las pérdidas de tiempo y centrándonos en Calidad, Clientes y Empleados.

Un poco de historia…

Veamos cómo comenzó todo esto. Tras la Segunda Guerra Mundial, Taiichi Ohno, director en Toyota por aquel entonces, viajó a Estados Unidos para estudiar los sistemas de producción de las grandes firmas automovilísticas americanas.

Sin embargo, no quedó nada convencido con lo que vio: observó que estas empresas realizaban una producción en masa de vehículos sin preocuparse por el desperdicio que esto supusiese. Este derroche era algo que se podía permitir la primera potencia económica mundial, pero no era un modelo extrapolable a una pequeña empresa automovilística como Toyota en el empobrecido Japón de la postguerra.

Pero el viaje de Taiichi Ohno no fue en valde. Un día, observando cómo funcionaban los supermercados estadounidenses, tuvo una revelación. Vio cómo en los estantes se ponían los productos en un número de unidades limitado y éstos se reponían según los clientes fueran llevándoselos.

Es decir, el flujo de producción no se determinaba desde el origen de fabricación (sistema push) sino que la demanda era la que determinaba si debía generarse más unidades o no (sistema pull).

Esta idea, aparentemente tan simple, supuso para Toyota todo un revulsivo que daría lugar al conocido Sistema de Producción Toyota, basado en una serie de herramientas y procedimientos que veremos a continuación.

Características del Sistema Toyota

Veamos las características de este sistema, cuyos principios comparten los métodos lean de gestión de software:

  • La demanda “tira” de la producción de productos, no es la producción la que “empuja” la construcción de productos hacia la demanda (véase Kanban). A esta forma de trabajo se le denomina sistema pull. Esto hará que se construya sólo lo necesario en el momento en que se necesite (JIT – Just in Time, justo a tiempo), permitiendo reducir el coste de inversión en inventarios. De ahí el término de “austero”, sin derroche.
  • Cero defectos mediante la detección y solución de éstos en su origen.
  • Eliminar el desperdicio (en japonés, muda), es decir, todo aquello que no aporta valor.
  • Kaizen o mejora continua en cualquier aspecto de la producción, ya sea calidad, costes, tiempos, etc.  

Esta forma de trabajo llevada a cabo en el sistema de producción Toyota, con los años, terminaría denominándose Lean Manufacturing.

Con el tiempo apareció otro concepto semejante, Lean Management. Se basa en los principios del Lean Manufacturing para su aplicación no sólo de la industria del automóvil, sino a cualquier tipo de industria, sector o empresa.

Lean vs Agile

Te estarás preguntando, ¿y todo esto qué tiene que ver con la agilidad? ¿por qué los métodos lean son métodos ágiles?

Lean y agile son dos conceptos complementarios y semejantes. Agile es lean, en tanto busca generar de forma incremental versiones pequeñas y frecuentes de un producto, en lugar de una única gran producción, dejando todo lo superfluo para el final (si es que alguna vez llega a hacerse).

Y lean es agile, en tanto cumple con muchos de sus principios como por ejemplo satisfacer al cliente mediante la entrega temprana y continua de valor.

Esto hace que muchas herramientas lean hayan dado lugar a la creación de métodos ágiles como los que veremos a continuación.

Estos serías los métodos lean que veremos: Kanban, Lean Software Development y Lean Startup.

Kanban: visualizando el flujo de trabajo

Ya hablamos de cómo el señor Taiichi Ohno fue el padre de la filosofía lean y de cómo el Sistema de Producción Toyota se basó en sus ideas. Pues bien, una de las herramientas que ideo para vertebrar su sistema pull y que todo se produjese cuando era necesario, minimizando el stock, fue un sistema de comunicación entre los materiales y las cantidades necesarios en cada punto de la fábrica basado en paneles y tarjetas, llamado kanban (que podemos traducir como “tarjeta visual”).

No obstante, el creador del método Kanban de desarrollo ágil de software, que es lo que nos interesa, lo creo el estadounidense David J. Anderson en 2004 para un proyecto de software en Microsoft.

Parece ser que Anderson se sintió especialmente inspirado en una visita que realizó al palacio imperial de Tokio. A la entrada de palacio, se repartían unas tarjetas a los visitantes en un número limitado, y conforme un visitante salía devolvía su tarjeta para que pudiese cederse a otra persona.

El hecho de que fuera un número limitado de tarjetas hacía que no se formaran aglomeraciones y que, conforme una tarjeta quedase libre, admitiese más visitantes. Es decir, un sencillo sistema pull en el que la demanda de visitantes tiraba de los que esperaban en la entrada del recinto…

Características de Kanban

Podemos resumir este método, uno de los métodos lean más populares, en 3 principios:

Flujo de trabajo visible

Los humanos somos una especie a la que le cuesta entender lo que no le entra por la vista, de modo que Kanban representa el trabajo mediante un panel, semejante a aquellos que usaba el señor Taiichi Ohno en su fábrica. Su aspecto es semejante a éste:

Panel Kanban

Cada tarea se representa en una tarjeta o post-it. Se pega en el panel dentro de la columna que corresponda al estado en el que se encuentre la tarea dentro del flujo de trabajo. Así, de un simple vistazo sabemos en qué etapa está cada tarea dentro del proceso.

En el ejemplo tenemos bastantes tareas por empezar (columna TO DO), otras que están en progreso (columna DOING) y otras tareas que ya se finalizaron (columna DONE). Siéntete libre de poner en tu panel las columnas que necesites según sea tu flujo de trabajo. Recuerda que si no es flexible no es agile.

NOTA: en realidad un panel Kanban es más que esto, ya que aquí no se está limitando el WIP (Work in Progress). Esto es un protokanban, pero por ahora para hacerte una idea tienes suficiente.

Limita el WIP (Work in Progress)

El WIP (Work in Progress) es el trabajo en curso, o sea, cantidad de tareas en las que un equipo está trabajando actualmente. Establecemos límites a cuántas tareas pueden estar en progreso en cada estado dentro del flujo de trabajo.

Los límites del WIP restringen la cantidad máxima de tareas en las diferentes fases del flujo de trabajo. Esto ayuda al equipo a enfocarse solo en las tareas actuales y así le permite terminar más rápido.

Además, al aplicar los límites de WIP, el equipo podrá detectar cuellos de botella en el flujo de trabajo.

Mide el lead time

El lead time es el tiempo medio para completar una tarea. La idea es medirlo con el objetivo de optimizar el proceso para que sea lo más corto posible.

Puede que con estas tres ideas Kanban te parezca muy simplón en comparación con Scrum. No caigas en el error de subestimarlo. Kanban es un método que arrastra muchos tópicos e ideas simplistas debido al conocimiento poco profundo que se suele tener sobre él. Iremos estudiándolo en posteriores artículos, te sorprenderá lo potente que es.

Lean Software Development: llevando la filosofía Lean Management al software

Al igual que Kanban, este método ágil también proviene de la filosofía Lean Management de Toyota, pero en este caso, aplicándola a la construcción de software. Desarrollado en 2003 por los hermanos Mary y Tom Poppendieck y actualizado en 2006.

Los objetivos buscados por este método lean son reducir el tiempo de entrega, reducir su precio y mejorar la calidad reduciendo el número de incidencias.

Características de Lean Software Development

Para lograr sus objetivos de reducción de tiempo y precio y mejora de la calidad, este método cuenta con 7 principios, en base a la última actualización que realizaron los Poppendieck:

Eliminar el desperdicio

Es decir, eliminar todo aquello que no aporta valor al cliente. Esto se traduce en no dejar trabajo a medias, no desarrollar funcionalidades que apenas tengan uso, eliminar exceso de burocracia y documentación, enfocarnos el crear software sin errores corrigiéndolos lo antes posible, obtener rápidamente y de forma continua feedback que elimine bloqueos por espera y evitar la multitarea.

Crear conocimiento

Consiste en incentivar la cultura del aprendizaje y la mejora continua de los equipos. Para ello, se pueden usar varias técnicas: revisión del código, programación en parejas, documentación, utilizar algún sistema de base de datos o wiki que recoja este conocimiento, código comentado, sesiones formativas, etc.

Aplazar las decisiones

Esto, que de primeras puede chocar un poco, viene a significar que no debemos tomar decisiones sin contar con los datos necesarios ni comprometernos con ideas hasta que no tengamos la comprensión completa de los requisitos de negocio a través de una recopilación de información constante.

Entregar lo antes posible

Este principio es uno de los más importantes, ya que en la industria del software cualquier retraso en la entrega de valor puede suponer que la competencia nos adelante. Todo un clásico de la agilidad: entrega iterativa e incremental. Evitamos la complejidad tal que vamos entregando valor que continuamente iremos completando de forma gradual a partir del feedback del cliente. Además, es imprescindible contar con personal muy cualificado y asegurar siempre la calidad de los desarrollos.

Calidad integrada

Construye con calidad desde el principio y no dejes que los defectos terminen generando deuda técnica.

Respetar a las personas

Hay que enfocarse en mejorar las personas y los procesos que permiten construir el producto, ya que centrarse sólo en la mejora del producto es una solución cortoplacista que no podrá extrapolarse a crear nuevos productos.

Optimizar el todo

Cuidado con los cambios locales, ya que estos pueden a la larga afectar a todo el producto. Tener por tanto perspectiva y visión de largo plazo.

Lean Startup: creando negocios de forma ágil

Para terminar, vamos a ver un método lean y ágil cuyo objeto es extrapolar la agilidad a algo diferente a la construcción de software: crear un modelo de negocio.

El término fue creado por el emprendedor estadounidense Eric Ries, autor del famoso título The Lean Startup en 2008.

Podemos por tanto definir Lean Startup como un método para crear una nueva empresa o modelo de negocio a través de la agilidad, es decir, mediante un proceso iterativo e incremental.

Características de Lean Startup

Todo ello se materializa en tres pasos principales: crear, medir (gracias al feedback que nos proporciona el público) y aprender, corrigiendo y/o mejorando el producto en caso de ser necesario. Y siempre a través de un proceso de mejora continua.

Veamos estos tres pasos mediante los que conduciremos una startup a través de la experimentación, es decir, mediante ensayo, error y mejora.

Crear

Creamos un MVP (Producto Mínimo Viable), es decir, un producto con las suficientes características para satisfacer a los clientes iniciales. De esta forma podremos sacar conclusiones respecto a la dirección del negocio. O sea, es lanzar un piloto de prueba y con ello ver cómo responde el mercado, así de simple. El MVP ayuda a aprender sobre tu propio negocio y además a hacerlo rápidamente y con poco coste.

Medir

Basándonos en la respuesta del público al MVP, aplicamos todos aquellos cambios y mejoras que permitan seguir creciendo al negocio. Para ello es clave utilizar buenas y fiables herramientas de medición. Es fundamental detectar rápidamente cuando un producto no ha cuajado entre el público y así evitamos perseverar en el camino equivocado.

Aprender

Alimentarnos de nuestra experiencia para tomar decisiones y corregir el camino que está siguiendo el negocio en caso de ser necesario, comprobando si el producto de una determinada forma tiene sentido o no.

En resumen, en vez de buscar crear un producto completo desde el principio sin saber si gustará al público o no, primero experimentamos para saber si nuestro producto es interesante y demandado. De esta forma, si la respuesta es negativa, podremos pivotar con muy poco esfuerzo y gasto de tiempo y dinero. Para ello, el saber analizar correctamente el feedback del público a un prototipo o MVP de nuestro producto es imprescindible.

Reflexión final

Estas metodologías ágiles que te he presentado en este post y en este otro no son mutuamente excluyentes, se puede aplicar más de una en tu empresa o proyecto.

Para empezar, tener presente los 4 valores del agilismo es siempre una gran guía: conozco casos donde el agilismo se está aplicando bastante mal a pesar de estar utilizando alguna metodología agile, simplemente porque se están centrando en la forma más que en el fondo.

De hecho, me gustaría advertirte que esto es tremendamente habitual, empresas y organizaciones que se ponen la etiqueta de agile porque queda muy moderno y muy innovador. Incluso puede que apliquen alguna metodología agile en su forma de trabajar.

Pero por desgracia todo se queda en la forma, en el postureo más puro y duro. Y no son agile porque no dispongan de herramientas ni método, simplemente no son por falta de compromiso con estos cuatro valores.

Por favor, no seas tú de esos. No seas un agile de pega. Hazlo bien o no lo hagas.

Si te quedaron dudas puedes dejarlas en la sección de comentarios, estaré encantado de responderte.

Y si el artículo te ha resultado útil, te agradeceré mucho que lo compartas en alguna de las siguientes redes sociales. ¡Nos vemos en el próximo post!

Deja un comentario