Método Lean de desarrollo de Software

Método Lean de desarrollo de Software

En el mundo del desarrollo de software necesitamos contar con una metodología que nos permita obtener información directamente de la fuente, eliminando así el problema común de producir software que no atiende las necesidades de los clientes.

Afortunadamente, existe este método y se conoce como el método Lean de desarrollo de Software y en este post te hablaremos de qué se trata y cómo funciona. 

Qué es el método Lean

El desarrollo de software Lean es un conjunto de principios que se pueden aplicar al desarrollo de software. Lean comenzó en la fabricación, como una forma de optimizar la línea de producción para minimizar el desperdicio y maximizar el valor para el cliente.

Estos dos objetivos son relevantes para el desarrollo de software, que también sigue un proceso repetible, requiere estándares de calidad particulares y se basa en la colaboración de un grupo de trabajadores especializados para lograrlo.

Principios

A continuación te presentamos los 7 principios del método Lean. 

Eliminar residuos

Uno de los elementos clave de la práctica de Lean es eliminar cualquier cosa que no agregue valor al cliente. Entre estos encontramos:

  • Código o funcionalidad innecesarios: retrasa el tiempo para el cliente, ralentiza los bucles de retroalimentación
  • Comenzar más de lo que se puedes completar: agrega complejidad innecesaria al sistema, da como resultado un cambio de contexto, retrasos en la transferencia y otros impedimentos para fluir.
  • Retraso en el proceso de desarrollo de software: retrasa el tiempo para el cliente, ralentiza los ciclos de retroalimentación
  • Requisitos poco claros o en constante cambio: causa frustración, problemas de calidad, falta de enfoque.
  • Burocracia: genera demoras
  • Comunicación lenta o ineficaz: da como resultado retrasos, frustraciones y una comunicación deficiente con las partes interesadas que pueden afectar la reputación de TI en la organización
  • Trabajo realizado parcialmente: no agrega valor al cliente ni permite que el equipo aprenda del trabajo
  • Defectos y problemas de calidad: exceso de trabajo, trabajo abandonado y baja satisfacción del cliente
  • Cambio de tareas: resultados en baja calidad del trabajo, retrasos, interrupciones de comunicación y baja moral del equipo

Generar Calidad

Puede parecer evidente, pero cada equipo quiere incorporar calidad en su trabajo. Pero a menos que esto sea parte de una práctica disciplinada, es mucho más fácil decirlo que hacerlo. Al tratar de garantizar la calidad, muchos equipos realmente generan desperdicio, a través de pruebas excesivas, o un registro excesivo de defectos. Se puede crear calidad a partir de las siguientes herramientas:

  • Programación en pareja: evitas problemas de calidad combinando las habilidades y la experiencia de dos desarrolladores en lugar de uno.
  • Desarrollo basado en pruebas: escribe criterios para el código antes de escribir el código para garantizar que se cumpla con los requisitos comerciales.
  • Desarrollo incremental y retroalimentación constante
  • Minimiza los estados de espera: reduce el cambio de contexto, las brechas de conocimiento y la falta de enfoque.
  • Automatización: automatiza cualquier proceso tedioso, manual o cualquier proceso propenso a errores humanos

Crear conocimiento

El principio de desarrollo Lean de Create Knowledge es otro que parece simple, pero requiere disciplina y enfoque para implementarlo. Este principio alienta a los equipos Lean a proporcionar la infraestructura para documentar y retener adecuadamente el aprendizaje valioso. Esto se puede hacer utilizando cualquier combinación de las siguientes herramientas:

  • Programación en pareja
  • Revisiones de código
  • Documentación
  • Wiki - para permitir que la base de conocimiento se incremente gradualmente
  • Código completamente comentado
  • Sesiones de intercambio de conocimientos.
  • Formación

Diferir compromiso

Este principio de desarrollo Lean es fácilmente mal utilizado. Aplazar el compromiso no significa que los equipos deban tomar decisiones descabelladas o irresponsables.

Más bien, lo contrario: este principio Lean alienta al equipo a demostrar responsabilidad al mantener sus opciones abiertas y recopilar información continuamente, en lugar de tomar decisiones sin los datos necesarios.

Entrega rápida

Cada equipo quiere entregar rápidamente, para poner el valor en manos del cliente lo más rápido posible. La pregunta no es por qué los equipos quieren entregar rápidamente, sino qué los ralentiza. 

Respetar a las personas

El principio Lean de Respeto a las personas es a menudo uno de los más descuidados, especialmente en el mundo del desarrollo de software.

Se aplica a todos los aspectos de la forma en que operan los equipos Lean, desde cómo se comunican, manejan conflictos, contratan y abordan nuevos miembros del equipo, se ocupan de la mejora de procesos y más.

Los equipos de desarrollo lean pueden alentar el respeto por las personas al comunicarse de manera proactiva y efectiva, alentar conflictos saludables, hacer surgir cualquier problema relacionado con el trabajo en equipo y capacitarse mutuamente para hacer su mejor trabajo.

Optimizar Todo

La optimización del todo es un principio de desarrollo Lean que alienta a las organizaciones a eliminar cualquier ciclo viciosos al operar con una mejor comprensión de la capacidad y el impacto del trabajo. Se basa en la idea de que cada empresa representa un flujo de valor: la secuencia de actividades necesarias para diseñar, producir y entregar un producto o servicio a los clientes. Si nuestro objetivo es entregar tanto valor a nuestros clientes lo más rápido posible, entonces tenemos que optimizar nuestros flujos de valor para poder hacer exactamente eso. Y para comprender cómo optimizar nuestros flujos de valor, primero tenemos que identificarlos adecuadamente.

Lean vs Agile

Lean y Agile son términos que se han utilizado mucho recientemente, a menudo en referencia a metodologías de desarrollo de software, gestión de proyectos o estilos organizativos. Pero alguna vez te has preguntado ¿Qué es lean? ¿Qué es Agile? ¿Hay una diferencia entre ellos?

Agile ahora es ampliamente conocido en el mundo de la tecnología como un conjunto de valores y principios para guiar el desarrollo de software. El " Manifiesto Ágil " presenta un conjunto de cuatro valores y 12 principios. Destilada en su núcleo, Agile es exactamente lo que crees que podría ser. Una metodología que favorece la flexibilidad, la comunicación, la colaboración y la simplicidad.

Lean por su parte es el menos comprendido y carece de una definición clara respaldada por un consenso profesional. El término "Lean" fue originalmente acuñado para describir un modelo de organización de fabricación basado en el Sistema de Producción Toyota, pero comúnmente se considera un sub marco dentro del desarrollo de Agile. Hoy en día, existe mucha confusión acerca de qué es Lean, qué es Agile, si son uno y lo mismo, y cuál debe usarse.

Tanto Lean como Agile se desarrollaron en respuesta a las deficiencias de los métodos existentes basados en planes como Waterfall. Usados desde la década de 1970, los desarrolladores y los gerentes de ingeniería de software comenzaron a notar las ineficiencias de Waterfall en la década de los 90. Con mercados más dinámicos y consumidores expertos en tecnología, Waterfall no pudo responder lo suficientemente rápido a las demandas del mercado, cambiar la tecnología o entregar software libre de errores de manera consistente.

En la búsqueda de un mejor modelo, los creadores de Lean y Agile buscaron desarrollar metodologías con un enfoque más centrado en el cliente. Las nuevas metodologías adoptaron la capacidad de adaptarse como una ventaja competitiva, favorecieron las pruebas tempranas y continuas, y aportaron un elemento humano a la gestión y ejecución de proyectos.

El Dr. Robert Charette propuso por primera vez Lean Software Development (LSD) como una forma de construir organizaciones tolerantes al cambio que se estaban volviendo cada vez más dependientes del software. Luego vino "El Manifiesto Agile" que consagró los 12 principios del Desarrollo de Software Agile. Ambas metodologías son sorprendentemente similares. Sin embargo, los principios de Lean pueden ser algo menos específicos pero todo esto se corrige con el manifiesto agile y el desarrollo de software Lean de Charette.

Más métodos y metodologías: