Seguramente aquellos que estéis leyendo este artículo ya hayáis oído hablar de la filosofía Lean aplicada a la fabricación, adaptación del sistema de producción de Toyota y de Lean IT aplicable a la gestión de productos y servicios de tecnología de la información (IT).
La idea principal de la filosofía Lean es aplicar un método sistemático consistente en eliminar los desperdicios, o lo que es lo mismo, el trabajo que no aporta valor al resultado final (servicio o producto).
Principios Lean aplicables al desarrollo de software
El desarrollo de software bajo la filosofía Lean se puede resumir en siete principios:
- Eliminar desperdicios/restos
- Amplificar el aprendizaje
- Tomar decisiones lo más tarde posible
- Entregar lo antes posible
- Potenciar el equipo
- Crear la integridad
- Visualizar todo el conjunto
Eliminar desperdicios / restos
Por desperdicio o basura consideramos todo aquello que no aporta valor al cliente. En Lean y en su nombre original en japonés se conoce como Muda 無駄
Dentro del desarrollo de software podríamos incluir los siguientes elementos:
- Código generado que ofrece funcionalidades no deseadas o necesarias
- Retrasos en el proceso de desarrollo de software
- Mala toma de requisitos
- Problemas con la comunicación interna
- Documentación excesiva o mal procedimentada
Amplificar el aprendizaje
Es de vital importancia que todos los miembros del equipo de desarrollo trabajen con una mentalidad de aprendizaje continuo. El hecho de que un desarrollador trabaje con una tecnología o lenguaje concreto (JavaScript, .NET, J2EE, Angular, NodeJS, etc.) no quiere decir que no pueda aprender de otros compañeros o proyectos.
Estamos en una era en la que la tecnología que hoy es noticia en unos días puede haber cambiado radicalmente. Por este motivo los principales implicados tienen que estar al día tanto por su bien como profesionales como por el bien de las empresas de desarrollo de software.
Tomar decisiones lo más tarde posible
Este principio que a priori puede parecer malo desde un punto de vista tradicional (ciclo de vida en cascada) en la filosofía Lean es primordial. Los requisitos de los clientes pueden cambiar de un día para otro, bien por cambios en las necesidades o bien por una mala definición de los mismos.
En un modo tradicional (sin aplicar Lean) el proyecto parte de unos requisitos iniciales que condicionan todo el ciclo de desarrollo de software y cualquier cambio plantea replanificación y adición de Muda al proyecto.
En una filosofía Lean, Agile generalmente, los requisitos suelen ser sustituidos por user stories que están más cerca de la necesidad real. Por este motivo podemos esperar a construir el software hasta que la user story esté definida claramente y sin ambigüedades.
Entregar lo antes posible
En un modelo Lean, las entregas de software son más frecuentes incluyendo features alineadas con las user stories. Por este motivo, cada entrega incluirá funcionalidades que necesitan los usuarios lo antes posible basadas en prioridades, impacto, valor o cualquier otro motivo.
Potenciar el equipo
Facilitar que los desarrolladores participen en la toma de decisiones de tiempos asociados a tareas, priorización de las mismas y demás hacen que los miembros del equipo se sientan parte importante en él.
Además, los propios desarrolladores saben de primera mano qué tareas cuestan más, cuales menos y qué implicaciones tienen el ciclo de vida del proyecto.
Técnicas como el Planning Poker en las que se asignan pesos, esfuerzos o complejidades a las tareas a realizar caen dentro de este principio.
Crear la integridad
Contar con un buen sistema de integración continua que incluya pruebas automatizadas, builds, pruebas de usabilidad son críticas para que un software sea fácil de mantener, de mejorar y de reutilizar. Con esto evitaremos añadir Muda a dicho software e intentar aprovechar lo aprendido de proyectos anteriores.
Visualizar todo el conjunto
La consigna “Pensar en grande, actuar en pequeño, equivocarse rápido y aprender con rapidez” podrían resumir los siete principios Lean para el desarrollo de software.
Analizar las interacciones de nuestro software con el resto de sistemas dentro de la compañía nos permitirán estudiar posibles mejoras y cambios que redunden en una mejor experiencia de usuario y aporten un mayor valor para el cliente y para el equipo del proyecto.
Situación no ideal vs Situación ideal
Además de la Muda, ya mencionada como todo aquello que no aporta valor al cliente, también contamos con otros dos términos, Muri y Mura relacionados con la filosofía Lean.
El primero hace referencia a la sobrecarga de trabajo a alguno de los miembros del equipo y el segundo a errores de balanceo de trabajo en función del proyecto.
Conclusión
Los siete principios Lean nos facilitarán construir aplicaciones más fiables, más seguras, con menos errores, con mejoras frecuentes aprovechando al máximo el uso de los recursos y el presupuesto y tiempo disponible garantizando el valor ofrecido al cliente.
Como dijo precisamente el fundador de Toyota, Sakichi Toyoda (1867-1930) “Antes de decir que no puedes hacer algo, inténtalo”.