Hay quien dice que el mejor ahorro es no hacer… No hacer… Entonces, ¿es que hago de más? Si eso es así, vaya… ¡Desperdicio! El concepto de desperdicio nos llevó al modelo de Producción Toyota o Lean Manufacturing.

El artífice del Lean Manufactoring fue Taiichi Ohno (1912 – 1990) quien para la creación del nuevo modelo de producción Toyota se fundamentó en tres líneas estratégicas:

  • Construir sólo lo necesario
  • Eliminar todo aquello que no añade valor
  • Para si algo no va bien

El modelo se concretó en siete principios a seguir para alcanzar sus líneas estratégicas:

1. Elimina desperdicios (Eliminating Waste)
2. Amplifica el aprendizaje (Amplifying Learning)
3. Decide lo más tarde posible (Deciding as Late as Possible)
4. Entrega lo más rápido posible (Delivering as Fast as Possible)
5. Potencia al equipo (Empowering the Team)
6. Construye con integridad (Building Integrity In)
7. Mira el todo (Seeing the Whole)

Mientras estábamos dándole vueltas a Lean algunas personas de la factoría nos certificamos en ISQBT Agile. El primer día del curso de preparación nos encontramos con el manifiesto ágil:

Estamos descubriendo formas mejores de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. A través de este trabajo hemos
aprendido a valorar:

Individuos e interacciones sobre procesos y herramientas
Software funcionando sobre documentación extensiva
Colaboración con el cliente sobre negociación contractual
Respuesta ante el cambio sobre seguir un plan

Esto es, aunque valoramos los elementos de la derecha, valoramos más los de la izquierda.

¡Mejores formas de desarrollar Software! ¡Justo lo que necesitábamos! Por una parte, teníamos lo que estábamos aprendiendo del desperdicio Lean y por otro lado el mundo Agile nos prometía una mejor forma de desarrollar software. Uniendo los dos conceptos llegamos a Lean Software Development.

Lean Software Development es una adaptación de los principios de Lean Manufacturing al desarrollo software que fue desarrollada por Tom y Mary Poppendieck y ampliamente descrita en su libro Lean Software Development: An Agile Toolkit.

Lean Software Development adapta los principios Lean al mundo del desarrollo software mostrando cómo éste puede servir como base para el cambio el enfoque de nuestra manera de desarrollar software dándole una perspectiva ágil y óptima (“esbelta”).

Y en Lean Software Development encontramos nuestro marco de referencia. La siguiente parada tenía que ser poner en marcha el cambio, pero, ¡ojo! ¡No lo olvidemos! Sólo somos una pieza dentro de la cadena de montaje, por lo tanto el enfoque no podía ser una gran revolución sino una revolución de pequeñas cosas.

Próxima estación: el cambio

Principio 1: eliminar el desperdicio

En lo que refiere a la eliminación de desperdicios Lean Manufacturing define que MUDA, palabra japonesa que se refiere esencialmente al desperdicio, es todo aquello adicional a lo mínimo necesario de recursos para fabricar un producto o prestar un servicio. Lean concreta y determina que en cualquier proceso o negocio existen siete formas de MUDA que siempre están presentes:

  • Exceso de inventario (Inventory)
  • Sobre procesamiento (Extra Processing)
  • Sobreproducción (Overproduction)
  • Transporte (Transportation)
  • Tiempo de espera (Waiting)
  • Movimientos innecesarios (Motion)
  • Defectos (Defects)

Nosotros que desarrollamos software unimos el concepto Lean al Agile y trabajamos desde la perspectiva del Lean Software Development que realiza una traslación de los siete desperdicios del mundo de la manufactura al mundo del software:

  • Exceso de inventario à Exceso de trabajo en curso
  • Sobre procesamiento à Procesos innecesarios
  • Sobreproducción à Funcionalidad innecesaria
  • Transporte à Cambio de tareas
  • Tiempo de espera
  • Movimientos innecesarios
  • Defectos

Principio 2: amplificar el conocimiento

El aprendizaje es la clave para hacer cada vez un mejor software, pero la gracia de adquirir conocimiento está en llegar a él cuanto antes y además en compartirlo, como dice este principio Lean, ¡debemos amplificarlo!

Principio 3: decide tan tarde como sea posible

Lo primero que debemos aclarar sobre este principio es que no estamos hablando de procrastinación sino de relegar las decisiones irreversibles al punto más tardío posible.

Haciendo uso de este principio exploraremos qué decisiones pueden relegarse al momento en que tengamos algo tangible para discutir con el cliente y no basarnos en supuestos. Hay que pensar en el código como en un experimento que sea totalmente tolerante al cambio.

Principio 4: entrega tan pronto como sea posible

Este principio nos indica que aumentar la velocidad de entrega nos asegura estar dando lo que el cliente necesita en ese momento y además nos deja en una muy buena posición de cara a la próxima iteración gracias al aprendizaje obtenido con la última.

¡Ojo! Que este principio no nos está diciendo que entreguemos un producto defectuoso sino que debemos concentrarnos en darle al cliente lo que realmente quiere/necesita y no distraernos en otros aspectos menos importantes (o menos importantes en este momento).

Principio 5: potencia el equipo

Siempre que leo este principio me acuerdo de aquella frase que de niña escuchaba en la bola de cristal: “Solo no puedes, con amigos sí”. Y efectivamente solos no podemos, necesitamos a nuestro equipo. Potenciemos al jefe de equipo como un referente no como un mero gestor. Potenciemos al equipo haciéndole capaz y dándole responsabilidad sobre su trabajo.

Principio 6: construye con integridad

El resultado de nuestro trabajo no debe parecer una colección de pequeñas soluciones sino, en nuestro caso, debe dar la seguridad de estar delante un componente. Lean Software development distingue entre:

  • Integridad conceptual o lo que es lo mismo el componente funciona de forma cohesionada, como un todo.
  • Integridad percibida, es decir, el componente cumple con las expectativas (funcionalidad, rendimiento, calidad del código).

Principio 7: ver el todo

Think big, act small, fail fast, learn rapidly. Nosotros repetimos esta frase como un mantra. Es importante que todos los involucrados entiendan este lema ya que en realidad se trata la construcción es un trabajo en equipo que implica a personas de distintos perfiles y empresas, cuanto mejor nos relacionemos, mejores resultados se obtendrán en conjunto.

 







¿Te gustaría recibir nuestros próximos artículos?