Lean Software Development
Daniel Robledo
Mateo García
Hamilton Álvarez
Introducción
Lean Software Development es un modelo de gestión enfocado a la creación de flujo para poder entregar el máximo valor para los clientes, utilizando para ello los mínimos recursos necesarios: es decir ajustados.

Origen
-
Iniciado en el sistema de producción de Toyota.
-
Adoptado por la comunidad Ágil.
- Establecido en el libro Lean Software Develpment de Mary Poppendieck y Tom Poppendieck.

Roles
- Ingeniero jefe (Program manager o Product champion).
- Equipo de desarrollo.

Responsabilidades
"Promover equipos autogestionados"
- El grupo selecciona su trabajo.
- Las personas seleccionan su propio trabajo.
- El equipo define como realizar el trabajo.
- El equipo se compromete a entregar el trabajo.
- El equipo coordina su trabajo.
- El manager aun cuenta.

7 principios de Lean Development Software
Eliminar el desperdicio
Desperdicio es todo lo que no genera valor para el producto.
- Codificaciones innecesarias.
- Inicio de más tareas de las que pueden ser completadas.
- Retrasos en el propio proceso de desarrollo de software.
- Comunicación lenta o ineficaz.
- Defectos y problemas de calidad.
- Cambios de tarea injustificados.

Tomado de: www.sixsigmadaily.com
Aseguramiento de la calidad
Se debe garantizar la calidad desde el principio, esto permite una mejora continua.
- Automatización.
- Pair Programming.
- TDD.
- Feedback constante. Inspeccionar y adaptar.
- Minimizar el tiempo entre las etapas(desarrollo, pruebas, corrección de errores).
- Integración continua.

Tomado de: www.wlmht.nhs.uk
Creación de conocimiento
Crear conocimiento permite que el equipo sea mas flexible y productivo.
- Pair Programming
- Code reviews
- Documentación
- Wiki
- Sesiones compartidas de conocimiento
- Entrenamientos

Tomado de: www.ingenicomm.net
Aplazar el compromiso
Decidir lo más tarde posible. Lo importante es analizar la situación y tomar la mejor decisión, en especial aquellas que no tienen reversa.

Tomado de: www.emprendedores.es
Entregar rápido
Entre más rápido se entrega más rápido se recibe feedback
- Contar con las personas adecuadas.
- Simpre hacer las cosas de la forma más simple.
- Trabajar en equipo.
- Asegurar que se cumplen los estándares de calidad.

Tomado de: www.followersandlikes4u.com
Respetar a las personas
Se deben tratar a todas las personas con el mismo respeto. Esto genera un ambiente tranquilo y de confianza en el equipo. Permite incrementar la motivación porque cada uno respeta el trabajo u opinión de los demás.

Tomado de: www.ericgeiger.com
Optimizar el todo
Es comun en la industria del software a suboptimizar, por ejemplo el tiempo o los costos. El problema con esto es que se descuida otras partes del proceso.

Tomado de: www.list.ly
Técnicas para el desarrollo lean
Controles visuales
- Trazo de un gráfico con elementos del trabajo
- Visualizar la carga de trabajo
- Detectar cuellos de botella
Sistemas Kanban virtuales
- Herramienta que limita el trabajo en un tiempo
- Establece un tiempo determinado para cada trabajo


Tamaños pequeños
- El trabajo se realiza en bloques pequeños.
- Actualización constante.
Automatización
- Implementación de actividades automatizadas.
- Secciones repetitivas.



Eventos Kaizen
"Mejora continua."
- Mejorar procesos.
- Mejorar funciones.
- Mejorar herramientas
Reuniones diarias
- Visualizar el trabajo en curso.
- Discutir el flujo del proyecto.
- Identificar problemas.


Retrospectiva.
- Evaluar desempeño
- Retroalimentación
Revisión de operaciones
- Evaluación del desempeño más profundo.
- Evaluaciones mensuales


GRACIAS
Bibliografía
Lean Software Development
By mejialvarez
Lean Software Development
- 670