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.

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.

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.

 

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