Jump to content

Lean Software Development: Difference between revisions

From Scrum Manager BoK
No edit summary
No edit summary
Line 1: Line 1:
__NOTOC__
__NOTOC__
{{Meta-bok|min=4}}
'''Lean Software Development''' (LSD, desarrollo de software lean) es la aplicación de los principios de la [[Lean|manufactura lean]] al desarrollo de software. Fue formulada por Mary y Tom Poppendieck en su libro ''Lean Software Development: An Agile Toolkit'' (2003) y es uno de los marcos fundacionales del movimiento ágil, aunque menos conocido que Scrum o XP.


'''''Lean Software Development''''' se refiere a la aplicación de los principios la [[manufactura lean]] o [[producción lean]] en el desarrollo del software.
== Los siete principios ==
==Origen==
Mary y Tom Poppendieck<sup>1</sup> fueron quienes lo acuñaron. Gracias a sus aportes y los de la comunidad ágil, ''Lean Software Development'' está desarrollando un inventario de prácticas útiles para el desarrollo ágil de software.
==Principios==
Se basa en 7 principios:
===1.Eliminar el desperdicio===
Las actividades que no crean valor no sirven y deben ser eliminadas.


Algunos '''ejemplos''':
Mary y Tom Poppendieck identificaron siete principios que traducen el pensamiento lean al contexto del desarrollo de software:
*Tareas que no fueron solicitadas por el cliente.
*Sobre-documentación del proyecto.
*Procesos de desarrollo que se ejecutan sin analizar su nivel de eficiencia o vigencia.
*Un mayor número de líneas de código no siempre es mejor, y además requiere mayor esfuerzo de testeo y de mantenimiento.
*Los errores, bugs y fallos del software son verdadero desperdicio que se debe reducir.


===2.Construir con calidad===
=== 1. Eliminar los desperdicios ===
Incluir en el procedimiento prácticas para mejora de la calidad en el producto (traslación de prácticas “poka-yoke” y “andon” al desarrollo de software).


Un procedimiento que respeta la calidad es aquel que es conocido, entendido y mejorado por los propios participantes. Para lograrlo es necesario compromiso y respeto.
En la manufactura lean, desperdicio es todo lo que no añade valor al cliente. En el software, los Poppendieck identificaron siete tipos de desperdicio equivalentes: trabajo a medias, características extra, reaprendizaje, transferencias (''handoffs''), retrasos, cambios de tareas y defectos. Eliminar los desperdicios es el primer principio porque todo lo demás fluye de él.


Algunos ejemplos de prácticas que se deben contemplar al hacer software:
=== 2. Ampliar el aprendizaje ===
*Técnicas como [[TDD]] (''Test Driven Development'') permiten que usuarios (clientes), programadores y tester definan claramente los requerimientos y confeccionen pruebas de aceptación antes de escribir el código. Ayuda a la comprensión de los programadores y mejora el entendimiento de los requerimientos.
*El programador es responsable de su propio desarrollo. No debe esperar a que las pruebas o los procedimientos de aseguramiento de calidad descubran los errores.
*Fomentar el desarrollo de pruebas automatizadas.
*Refactorización del código, para lograr simplicidad y eliminar duplicidades.


===3.Compartir conocimiento===
El desarrollo de software es un proceso de descubrimiento: los requisitos se clarifican a medida que el sistema se construye. En lugar de intentar especificarlo todo al principio, Lean Software Development propone ampliar el aprendizaje con ciclos cortos de retroalimentación, pruebas frecuentes y revisiones con el cliente.
Conocer lo que necesita el cliente requiere dedicación y esfuerzo, y debe convertirse en el aspecto principal, porque desarrollar un producto que no es útil, es el mayor desperdicio.
Hacer software implica un proceso de aprendizaje: entender qué es lo que el cliente quiere y cómo entregar la mejor solución posible. El desarrollo incremental proporciona cuantiosa y frecuente retroinformación.


===4.Diferir el compromiso===
=== 3. Decidir lo más tarde posible ===
En los proyectos ágiles que parten con una visión que evoluciona con el desarrollo, el compromiso con el cliente se asienta y evoluciona en la misma medida que se van concretando y comprometiendo los incrementos del producto.


===5.Entregar rápido===
Tomar decisiones irreversibles demasiado pronto, antes de tener suficiente información, es una fuente de desperdicio. LSD propone posponer las decisiones hasta el momento en que se disponga del máximo de información, sin llegar a retrasarlas hasta que se conviertan en urgentes.
La gestión evolutiva realiza entregas rápidas a los clientes, que se encuentran con código operativo desde etapas tempranas. Dicho código debe ser desarrollado con calidad ya que no se puede mantener una velocidad importante de entrega si no se cuenta con calidad y un equipo disciplinado, comprometido y confiable.


===6.Respetar a las personas===
=== 4. Entregar lo más rápidamente posible ===
Lean se basa en el respecto por las personas que son el elemento único y diferenciador de cada organización.


Deben estar suficientemente capacitadas y ser responsables de los procesos en los que intervienen, de modo que cuando resultan necesarios cambios y mejoras, cada persona colabora en su desarrollo.
La entrega rápida de valor al cliente reduce el riesgo, genera retroalimentación temprana y permite adaptarse. Ciclos cortos de entrega son la mejor forma de aprender lo que el cliente realmente necesita.


===7.Optimizar el todo===
=== 5. Capacitar al equipo ===
Lean invita a contemplar el proceso completo, es decir todo el flujo de valor, en lugar de hacerlo en cada etapa. El problema de optimizar cada fase por separado es que genera inventarios grandes en los puntos de transición. En el mundo del software, estos "inventarios" representan al trabajo parcialmente terminado (por ejemplo, requisitos completos, pero sin diseñar, codificar o probar). Lean demostró que un flujo de "una pieza" (por ejemplo, enfocarse en construir un ítem de manera completa) es un proceso más eficiente que concentrarse en construir las partes separadas de forma rápida.
==Véase también==
*[[Lean]].
*[[Manufactura lean]].
*[[Lean inception]].
*[[Kanban: origen y definición]].


==Referencias==
Las personas más cercanas al trabajo son quienes mejor lo conocen. LSD propone que las decisiones técnicas las tomen los desarrolladores, no los gestores, y que el rol del mando sea crear las condiciones para que el equipo pueda hacer su trabajo con autonomía y calidad.
*<sup>1</sup>Poppendieck, M.; Poppendieck, T. (2003) ''Lean Software Development: An Agile Toolkit for Software Development Managers'', Addison Wesley.
 
=== 6. Construir con integridad incorporada ===
 
La calidad no se puede añadir al final como una capa: tiene que estar integrada en el proceso desde el principio. Esto incluye tanto la integridad perceptible (la experiencia que tiene el usuario con el sistema) como la integridad conceptual (que el sistema forma un todo coherente).
 
=== 7. Ver el conjunto ===
 
Los sistemas complejos no se pueden optimizar optimizando cada parte por separado. Ver el conjunto implica entender las interdependencias, evitar la suboptimización local y asegurarse de que las mejoras locales contribuyen al valor del sistema como un todo.
 
== Lean Software Development y la IA ==
 
Los siete principios de LSD son especialmente relevantes en el contexto del desarrollo asistido por IA:
 
* '''Eliminar desperdicios:''' el código generado sin revisión que luego hay que reescribir es desperdicio. La DoD reforzada y la revisión humana del código IA son mecanismos lean de eliminación de defectos.
* '''Ampliar el aprendizaje:''' los prototipos rápidos con IA son una herramienta poderosa de aprendizaje, siempre que se traten como artefactos de aprendizaje y no como código de producción.
* '''Ver el conjunto:''' la optimización local con IA (generar código muy rápido en una parte del sistema) puede crear problemas sistémicos si no se considera la coherencia del conjunto.
 
== Referencias ==
 
* Poppendieck, Mary; Poppendieck, Tom. (2003). ''Lean Software Development: An Agile Toolkit''. Addison-Wesley.
* Poppendieck, Mary; Poppendieck, Tom. (2006). ''Implementing Lean Software Development: From Concept to Cash''. Addison-Wesley.
 
== Véase también ==
 
<div class="bok-tags">
[[Lean]] [[Manufactura lean]] [[El manifiesto ágil]] [[Agilidad técnica]] [[Extreme programming]] [[Deuda técnica]] [[Definición de hecho]]
</div>
 
<div class="bok-ecosistema">
<div class="texto">
<span class="titulo">'''¿Quieres avanzar en agilidad?'''</span>
<span class="sub">Puedes buscar convocatorias de cursos y exámenes o ir a tu ritmo haciéndote miembro del Club Agile. Esta membresía incluye recursos exclusivos, aulas e-learning y acceso a [https://scrummanager.com/skillarena/ '''Skill Arena''']: un espacio para practicar y medir tus habilidades ágiles a tu ritmo.</span>
</div>
<div class="botones">
<div class="bok-btn-outline">[https://www.scrummanager.com/website/c/calendar/show-courses.php Buscar convocatorias]</div>
<div class="bok-btn-filled">[https://scrummanager.com/club/ Club Agile]</div>
</div>
</div>


[[Category:Glosario de términos]]
[[Category:Glosario de términos]]
[[Category:Marcos_y_modelos]]
[[Category:Marcos y modelos]]
[[Category:Metodologías ágiles]]
[[Category:Metodologías ágiles]]

Revision as of 11:42, 15 May 2026

⏱ 4 min de lectura  ·  📅 Actualizado en 2026

Lean Software Development (LSD, desarrollo de software lean) es la aplicación de los principios de la manufactura lean al desarrollo de software. Fue formulada por Mary y Tom Poppendieck en su libro Lean Software Development: An Agile Toolkit (2003) y es uno de los marcos fundacionales del movimiento ágil, aunque menos conocido que Scrum o XP.

Los siete principios

Mary y Tom Poppendieck identificaron siete principios que traducen el pensamiento lean al contexto del desarrollo de software:

1. Eliminar los desperdicios

En la manufactura lean, desperdicio es todo lo que no añade valor al cliente. En el software, los Poppendieck identificaron siete tipos de desperdicio equivalentes: trabajo a medias, características extra, reaprendizaje, transferencias (handoffs), retrasos, cambios de tareas y defectos. Eliminar los desperdicios es el primer principio porque todo lo demás fluye de él.

2. Ampliar el aprendizaje

El desarrollo de software es un proceso de descubrimiento: los requisitos se clarifican a medida que el sistema se construye. En lugar de intentar especificarlo todo al principio, Lean Software Development propone ampliar el aprendizaje con ciclos cortos de retroalimentación, pruebas frecuentes y revisiones con el cliente.

3. Decidir lo más tarde posible

Tomar decisiones irreversibles demasiado pronto, antes de tener suficiente información, es una fuente de desperdicio. LSD propone posponer las decisiones hasta el momento en que se disponga del máximo de información, sin llegar a retrasarlas hasta que se conviertan en urgentes.

4. Entregar lo más rápidamente posible

La entrega rápida de valor al cliente reduce el riesgo, genera retroalimentación temprana y permite adaptarse. Ciclos cortos de entrega son la mejor forma de aprender lo que el cliente realmente necesita.

5. Capacitar al equipo

Las personas más cercanas al trabajo son quienes mejor lo conocen. LSD propone que las decisiones técnicas las tomen los desarrolladores, no los gestores, y que el rol del mando sea crear las condiciones para que el equipo pueda hacer su trabajo con autonomía y calidad.

6. Construir con integridad incorporada

La calidad no se puede añadir al final como una capa: tiene que estar integrada en el proceso desde el principio. Esto incluye tanto la integridad perceptible (la experiencia que tiene el usuario con el sistema) como la integridad conceptual (que el sistema forma un todo coherente).

7. Ver el conjunto

Los sistemas complejos no se pueden optimizar optimizando cada parte por separado. Ver el conjunto implica entender las interdependencias, evitar la suboptimización local y asegurarse de que las mejoras locales contribuyen al valor del sistema como un todo.

Lean Software Development y la IA

Los siete principios de LSD son especialmente relevantes en el contexto del desarrollo asistido por IA:

  • Eliminar desperdicios: el código generado sin revisión que luego hay que reescribir es desperdicio. La DoD reforzada y la revisión humana del código IA son mecanismos lean de eliminación de defectos.
  • Ampliar el aprendizaje: los prototipos rápidos con IA son una herramienta poderosa de aprendizaje, siempre que se traten como artefactos de aprendizaje y no como código de producción.
  • Ver el conjunto: la optimización local con IA (generar código muy rápido en una parte del sistema) puede crear problemas sistémicos si no se considera la coherencia del conjunto.

Referencias

  • Poppendieck, Mary; Poppendieck, Tom. (2003). Lean Software Development: An Agile Toolkit. Addison-Wesley.
  • Poppendieck, Mary; Poppendieck, Tom. (2006). Implementing Lean Software Development: From Concept to Cash. Addison-Wesley.

Véase también

¿Quieres avanzar en agilidad? Puedes buscar convocatorias de cursos y exámenes o ir a tu ritmo haciéndote miembro del Club Agile. Esta membresía incluye recursos exclusivos, aulas e-learning y acceso a Skill Arena: un espacio para practicar y medir tus habilidades ágiles a tu ritmo.