← CC3091

Lean Software Development

Semestre 02, 2026

Introducción

Idea central

Lean Software Development adapta los principios de manufactura esbelta al desarrollo de software: entregar el máximo valor al cliente usando la menor cantidad de recursos.

  • Busca eliminar todo aquello que no aporta valor.
  • Fue formalizado por Mary y Tom Poppendieck en Lean Software Development: An Agile Toolkit (2003).

Sistema de Producción Toyota

  • Lean nace del Sistema de Producción Toyota (TPS), desarrollado en Japón después de la Segunda Guerra Mundial.
  • Su arquitecto, Taiichi Ohno, buscaba producir con menos desperdicio, mejor calidad y mayor rapidez que la producción en masa tradicional.

Muda y Kaizen

Muda: toda actividad que consume recursos pero no agrega valor al cliente.
Kaizen: mejora continua, en pequeños pasos, con la participación de todo el equipo.

Valor y desperdicio

El punto de partida de Lean es distinguir entre valor y desperdicio.

Valor

Aquello por lo que el cliente está dispuesto a pagar: una funcionalidad que resuelve su problema.

Desperdicio (muda)

Pasos, actividades o artefactos que consumen tiempo y esfuerzo sin acercar el producto al cliente.

La meta de Lean es maximizar el flujo de valor y reducir el desperdicio de forma sistemática.

Los 7 desperdicios del software

Trabajo parcialmente hecho: código sin integrar, probar ni desplegar.
Funcionalidades extra: características que nadie usa.
Reaprendizaje: volver a aprender algo por pérdida de información.
Traspasos (handoffs): cada entrega pierde conocimiento tácito.

Los 7 desperdicios del software

Cambios de tarea: alternar tareas fragmenta la atención.
Esperas y retrasos: tiempo perdido esperando decisiones o dependencias.
Defectos: errores que llegan al cliente u obligan a rehacer trabajo.

Los 7 principios

Definidos por Mary y Tom Poppendieck para aplicar Lean al software.

  • Eliminar el desperdicio
  • Amplificar el aprendizaje
  • Decidir lo más tarde posible
  • Entregar lo más rápido posible
  • Empoderar al equipo
  • Construir la calidad desde el inicio
  • Optimizar el todo

1. Eliminar el desperdicio

Identificar y remover toda actividad que no agrega valor al cliente.

Herramienta

El mapeo del flujo de valor (value stream mapping) dibuja todos los pasos desde la idea hasta la entrega y detecta dónde se genera desperdicio.

2. Amplificar el aprendizaje

El desarrollo de software es un proceso de aprendizaje continuo, no una línea de ensamblaje.

Iteraciones cortas y retroalimentación frecuente del cliente.
Revisiones de código, programación en parejas y refactorización.

3. Decidir lo más tarde posible

Retrasar las decisiones importantes hasta el último momento responsable (last responsible moment), cuando se tiene la mayor información.

Set-based development: explorar varias alternativas en paralelo.
Options thinking: mantener opciones abiertas mientras aporten valor.

4. Entregar lo más rápido posible

Entregar valor en ciclos cortos permite obtener retroalimentación temprana y reaccionar al cambio.

Integración continua y desarrollo just-in-time.
Sistemas pull y tableros Kanban para limitar el trabajo en progreso.

5. Empoderar al equipo

Las personas que hacen el trabajo son las que mejor conocen cómo mejorarlo.

Autonomía para decidir y comunicación abierta.
Liderazgo que va al gemba: el lugar donde ocurre el trabajo.

6. Construir la calidad desde el inicio

La calidad no se inspecciona al final: se integra en cada paso.

Integridad conceptual: la arquitectura interna es coherente.
Integridad percibida: el usuario siente que el producto funciona bien.
Prácticas: TDD, refactorización, pair programming y automatización.

7. Optimizar el todo

Optimizar una parte aislada del sistema suele perjudicar al conjunto.

Visión sistémica

Ver el flujo de valor de principio a fin, alineando incentivos hacia el desempeño global y no hacia métricas individuales.

Herramientas de pensamiento

Value stream mapping: visualizar el flujo de valor y localizar el desperdicio.
Sistemas pull y Kanban: la demanda del cliente jala el trabajo.
Last responsible moment: decidir cuando se tiene más información.

Herramientas de pensamiento

Set-based development: explorar alternativas en paralelo.
Options thinking: mantener las decisiones como opciones abiertas.
Dar poder de decisión a quien hace el trabajo.

Lean y Agile

  • Comparten valores: iteraciones cortas, retroalimentación temprana, respeto por las personas y adaptación al cambio.
  • Agile se enfoca en cómo trabaja el equipo de desarrollo.
  • Lean aporta una mirada más amplia sobre todo el flujo de valor, desde la idea hasta el cliente.
  • Kanban y el trabajo en progreso limitado provienen directamente del pensamiento Lean.

Conclusiones

Lean traslada la filosofía de manufactura esbelta al software.
Su esencia: maximizar el valor y eliminar el desperdicio de forma continua.
Los siete principios y las herramientas ofrecen una guía práctica.
Lean complementa a Agile al mirar el sistema completo.