¿Es ágil Lean? ¿O Agile y Lean son filosofías totalmente separadas?

¿Puedo decir que Agile "no" es Lean y que tanto Agile como Lean son conceptos o filosofías totalmente diferentes?

Si tomo los principios lean:

  1. "Autoorganización"
  2. "Kaizen o Mejora Continua"
  3. "Seguro de calidad"
  4. "Pokayoke o prueba de fallas"
  5. "Mudha o Eliminación de Residuos"

Veo que Agile definitivamente cumple con los primeros dos y un poco de 3 con un ciclo de retroalimentación, pero no con el resto. ¿Esto hace que los métodos Lean como Kanban sean más superiores? Sin intenciones de socavar ningún principio en particular, pero quería una aclaración lógica para tener una comprensión clara.

Respuestas (6)

Agile y Lean tienen raíces diferentes, pero hasta cierto punto se superponen. El primero se basa en el Manifiesto Ágil , mientras que el segundo tiene sus raíces en el Sistema de Producción de Toyota , pero en muchas áreas ambos movimientos están alineados y, a menudo, se tratan como conceptos similares.

Puede encontrar un poco más de elaboración sobre el tema en esta pregunta y específicamente en esta respuesta .

Si hablas con personas ortodoxas, podrían insistir en que Agile y Lean son conceptos completamente separados, pero dado que estoy lejos de esa actitud, diría que, en general, Agile es más o menos Lean y viceversa.

Algunas palabras de comentario: no estoy de acuerdo con reducir Lean solo a Lean Software Development (que es solo uno de los métodos lean aplicables al desarrollo de software) o Agile a técnicas específicas, como TDD, o métodos, como Scrum. Tanto Lean como Agile son conceptos generales y Kanban, Scrum, Lean Software Development y demás son solo implementaciones específicas de estos conceptos.

Tampoco puedes decir que este o aquel método es superior a otros. Querrás usar diferentes métodos dependiendo de la situación. A veces, Scrum (etiquetado como "Agile") será mejor y, a veces, preferirá ir con Kanban (etiquetado como "Lean). Mi consejo aquí: deje de pensar en etiquetas y piense cuál es el método más razonable en cada situación específica. Usted no No obtienes puntos por ser más ágil o más lean, sino por terminar tus proyectos.

Incluso si tratara la adopción de métodos específicos como una referencia, ya sea que sea esbelto o ágil, lo cual es incorrecto, todavía encontraría mucha superposición. Y, por supuesto, puede ser ágil/esbelto incluso si no usa ningún método con nombre. Se trata de seguir principios y no seguir el libro.

Si miras el tema desde esta perspectiva, Lean y Agile estarán bastante cerca el uno del otro y definitivamente no puedes decir que son "totalmente diferentes".

Creo que es más exacto decir que tanto el Sistema de Producción de Toyota como el Desarrollo de Software Lean tienen sus raíces en el Pensamiento Lean. Modern Lean Software Development se parece más al desarrollo de productos que a una línea de producción, y muchas de las prácticas que hacemos ya no se derivan de TPS.
"Querrás usar diferentes métodos dependiendo de la situación". +1 solo por eso. ¿No es ese el objetivo principal del kaizen, la mejora continua, las autopsias y las reflexiones, etc., la identificación de lo que funciona, lo que no funciona y los cambios para que el proceso funcione mejor?

La mayoría de las metodologías ágiles requieren equipos autoorganizados y un enfoque en la mejora continua del proceso y el producto. Sin embargo, también argumentaría que Agile incorpora eliminación de desechos y poka-yoke, y garantía de calidad hasta cierto punto, dependiendo de los métodos específicos. Ejemplos de esto son You Ain't Gonna Need It/YAGNI y Test Driven Development.

El desarrollo basado en pruebas se suma a las prácticas de control de calidad al garantizar que todas las características tengan código de prueba y procedimientos de prueba desarrollados, y al desarrollar pruebas que fallan y luego escribir código para pasar las pruebas, está trabajando para que su sistema sea a prueba de fallas. Juntos, YAGNI y TDD reducen el desperdicio al hacer cumplir que solo se produzca el código esencial. YAGNI también se puede extender a la documentación.

Se puede ser esbelto sin ser ágil, pero es muy difícil, si no imposible, ser ágil sin ser esbelto.

Creo que el artículo de Lean Software Development en Wikipedia es bastante informativo, en general.

Lean estuvo allí primero, antes de que comenzara el movimiento Agile. Toyota ha estado trabajando en su TPS (Toyota Production System) desde el final de la Segunda Guerra Mundial. Conceptualmente, todavía es un trabajo en progreso y siempre lo será. El movimiento "Ágil" en ingeniería de software es mucho más joven.

A mi modo de ver, ambos comparten muchos conceptos similares. Uno de los ejemplos más destacados sería la escuela de pensamiento liderada por Mary y Tom Poppendieck (más detalles aquí y aquí ). Sin embargo, hay una serie de enfoques diferentes que encajan bajo el paraguas de las metodologías ágiles, por ejemplo, XP, Scrum, FDD, Crystal y otros. Desde esa perspectiva se podría decir que Lean es solo uno más de ellos.

Por otro lado, hay prácticas que forman parte del pensamiento Lean que aún no están tan extendidas en la corriente principal de Agile, por ejemplo, el pensamiento A3 . Sin embargo, esto también está comenzando a cambiar, y sospecho que la razón es que más personas están buscando más técnicas Lean que puedan aprovecharse para la ingeniería de software.

Específicamente a los cinco elementos que enumera, mi opinión sería la siguiente:

  1. Conocido por el desarrollo ágil de software (ya lo respondió usted mismo)
  2. Conocido por el desarrollo ágil de software (ya lo respondió usted mismo)
  3. Cumplido por el desarrollo de software ágil, por ejemplo, TDD pero otros más, por ejemplo, iteraciones frecuentes y lanzamientos pequeños combinados con comentarios
  4. Cumplido por el desarrollo de software ágil. La prueba de fallas se puede lograr con Simple Design, TDD y otros
  5. Cumplido por el desarrollo de software ágil. La eliminación de desechos se puede lograr mediante técnicas como la refactorización despiadada, el diseño simple, "Lo más simple que podría funcionar" y YAGNI ("No lo necesitará").
Además, incluso el proceso de iteración ágil, como tener un producto que se puede enviar al final del sprint, lo obliga a eliminar el desperdicio con la mentalidad de "justo a tiempo".

Lean, Kanban, Agile son solo herramientas, lo importante son los principios. El tipo que enseñó a Toyota era en realidad un... estadounidense desconocido en su propio país hasta que el ex director ejecutivo de Ford redescubrió a Edwards Deming. Se le menciona en el seminario de Sutherland y en este video de Forbes http://www.youtube.com/watch?v=6gfcvIUmdZU

Realmente no puede usar ninguna de estas herramientas sin comprender los principios. De hecho, estas herramientas no importan tanto después de comprender la raíz de las cosas, debería poder crear las suyas propias adaptadas a su organización.

Consulte http://www.youtube.com/watch?v=GXVgsPxQR54&feature=player_embedded http://www.youtube.com/watch?v=GHvnIm9UEoQ&feature=player_embedded

Poppendieck definió el desarrollo de software lean en su trabajo seminal, Lean Software Development: An Agile Toolkit

La investigación tiene una serie de opiniones sobre lean y ágil. En una encuesta sobre metodologías ágiles, Lean se consideró un tipo de metodología ágil. (ver "Estudios empíricos de desarrollo de software ágil: una revisión sistemática")

Se ha demostrado en investigaciones posteriores que Lean es diferente en función de dos factores de Agile. (consulte el capítulo titulado "¿Es lean ágil y ágil lean?" del libro Conceptos y prácticas de la ingeniería de software moderna: enfoques avanzados ) Lean es diferente del desarrollo ágil porque se enfoca en una cosa, que ágil no:

  • E2E: Lean tiene el principio de mejora de extremo a extremo

El concepto E2E es importante porque optimiza todo el proceso en lugar de suboptimizar solo partes.

Tomé la capacitación de certificación Scrum y Agile este año en la que Lean se presentó como un precursor de Agile, parte del terreno a partir del cual creció Agile.

Entonces, no filosofías totalmente separadas.