Por Felipe Talavera

Qué es Lean?

Lean es un concepto creado en Estados unidos a partir  TPS creado en Toyota, siendo esta  filosofía  muy exitosa en japón  y que ahora es bastante conocida a nivel mundial.

Lean se puede interpretar  como “esbelto” o “sin grasa”. la “grasa” en términos de Lean sería todo aquello que no genera valor y esto lo define  como “desperdicio”.

Lean apunta a crear un flujo de mejora continua y gradual que busca disminuir los desperdicios y generar el máximo valor para el cliente.

Captura de pantalla 2016-04-04 a las 10.10.22 a.m.

De Toyota al desarrollo de software

El término lean software development se originó en libro del mismo escrito por Mary y Tom Poppendieck. Lean software development es básicamente la aplicación de la filosofía lean al desarrollo de software. el libro presenta 7 principios basados en lean y un set de 22 herramientas.

Captura de pantalla 2016-04-04 a las 10.11.18 a.m.

7 principios lean

A continuación una descripción de cada uno de los principios lean que describe el libro

  1. ELIMINAR DESPERDICIO.

Uno de los pilares de lean es eliminar el desperdicio que no entrega valor y que agrega tiempos al flujo del  proceso de desarrollo. El desafío se encuentra en encontrar aquello que se puede definir como “desperdicio”

Los autores nos dan algunas ideas de lo que podría ser desperdicio dentro del desarrollo de software:

  • Código o funcionalidad innecesaria
  • Comenzando más de lo que puede ser completado
  • Retrasos en el proceso de desarrollo
  • Cambios constantes o poco claras en los requerimientos
  • Burocracia
  • Comunicacion Lenta o inefectiva
  • Trabajo parcialmente hecho
  • Defectos y  problemas de calidad
  • Cambios de tarea

Captura de pantalla 2016-04-04 a las 10.13.36 a.m.

  1. CALIDAD EN LA CONSTRUCCIÓN

Cuando buscamos desperdicio, podemos encontrarlo en distintos puntos del flujo de desarrollo. Al eliminar ese desperdicio generamos calidad en todo el proceso. Este principio apunta a que se debe generar calidad desde la etapa inicial de desarrollo hasta que el producto es entregado.

Generar calidad significa encontrar defectos a tiempo , entrega de software a tiempo y con la menor cantidad de defectos posibles

  1. CREAR CONOCIMIENTO

El proceso de desarrollo de software en sí mismo es  una actividad de aprendizaje y conocimiento. Es necesario tomar acciones para que este conocimiento sea compartido y no desaparezca al  entregar el producto. El conocimiento es importante porque permite mejorar la flexibilidad y productividad del equipo

  1. APLAZAR COMPROMISO

Este principio en realidad significa “decidir lo más tarde posible”.

El desarrollo de software está lleno de situaciones donde se deben tomar decisiones en ambientes llenos de incertidumbre y complejidad. En este escenario mientras más tiempo tengamos para tomar una decisión mejor, porque es donde tendremos la mayor cantidad de información y tendremos la menor cantidad de incertidumbre.

Esto no significa que todas las decisiones deban ser postergadas. Primero que nada, debemos tratar de que las decisiones puedan revertirse y así cambiarlas fácilmente, de otro modo, las decisiones críticas dejarlas abiertas hasta el último momento posible.

  1. ENTREGAR RÁPIDO

Este principio parecería algo obvio, la realidad, es que en el desarrollo de software no lo es. Comúnmente, la creación de software es un proceso bastante exhaustivo, donde la entrega rápida no parece viable.

En lean software development se propone desarrollar un producto lo más simple posible y funcional y mejorarlo iterativamente a partir de la retroalimentación que el cliente puede dar. Al eliminar desperdicio y generando conocimiento estamos reduciendo los tiempos de entrega

Entre los beneficios de la entrega rápida estaría la adaptabilidad al cambio y minimizar el riesgo de que un requerimiento cambie.

Captura de pantalla 2016-04-04 a las 10.14.34 a.m.

  1. RESPETAR A LAS PERSONAS

Respeto significa que todos merecemos ser escuchados y ser tomados en cuenta sin importar si eres la señora de la limpieza  o el gerente general de la empresa. También significa que  todos tenemos la oportunidad de tomar responsabilidades a la hora de realizar una acción, al final de cuenta, la mejora continua no sería posible si no está todo el equipo comprometido con el cambio a través del respeto.

  1. OPTIMIZAR EL TODO

En desarrollo de software es común ver situaciones como esta:

El cliente quiere nuevas características “ayer”, los desarrolladores construyen lo más rápido posible y como resultado cambios poco rigurosos son hechos, defectos aumentan, complejidad del código aumenta.

Este principio apunta a que la organización debe buscar optimizar el flujo como un todo, no solo funciones individuales o equipos, es necesario, generar una organización mas homogénea donde la comunicación sea mas directa y que a la hora de decidir se tome en cuenta todo el flujo.

Algunas herramientas

Implementar lean software development no es algo intuitivo. existen varias prácticas y herramientas. de las cuales recomiendo 2, Kanban y retrospectiva, por ser faciles de entender e implementar

KANBAN

En términos simples, “kanban” es un método para visualizar el avance de un proyecto a travez de un tablero que se divide en las distintas fases del flujo de desarrollo y como las tareas avanzan en este.Captura de pantalla 2016-04-04 a las 10.18.51 a.m.

para indagar en este recomiendo leer este articulo de  Javier Garzas 

RETROSPECTIVAS

Las retrospectivas se usan en generalmente en el desarrollo agil de software. las retrospectivas son “reuniones” que se hacen al final de una  iteración(o al final de un proyecto), que busca generar reflexión sobre la forma en que hemos llevado a cabo el proyecto y generar acciones para mejorar en la próxima entrega.

Recomiendo leer este artículo de Thomas wallet