Aunque Scrum estaba enfocado a la gestión de procesos de desarrollo de software, puede ser utilizado en equipos de mantenimiento de software, o en una aproximación de gestión de programas: Scrum de Scrums.
Características de Scrum
Scrum es un modelo de referencia que define un conjunto de prácticas y roles, y que puede tomarse como punto de partida para definir el proceso de desarrollo que se ejecutará durante un proyecto. Los roles principales en Scrum son el ScrumMaster, que mantiene los procesos y trabaja de forma similar al director de proyecto, el ProductOwner, que representa a los stakeholders (interesados externos o internos), y el Team que incluye a los desarrolladores.Durante cada sprint, un periodo entre una y cuatro semanas (la magnitud es definida por el equipo), el equipo crea un incremento de software potencialmente entregable (utilizable). El conjunto de características que forma parte de cada sprint viene del Product Backlog, que es un conjunto de requisitos de alto nivel priorizados que definen el trabajo a realizar. Los elementos del Product Backlog que forman parte del sprint se determinan durante la reunión de Sprint Planning. Durante esta reunión, el Product Owner identifica los elementos del Product Backlog que quiere ver completados y los hace del conocimiento del equipo. Entonces, el equipo determina la cantidad de ese trabajo que puede comprometerse a completar durante el siguiente sprint.[2] Durante el sprint, nadie puede cambiar el Sprint Backlog, lo que significa que los requisitos están congelados durante el sprint.
Scrum permite la creación de equipos autoorganizados impulsando la co-localización de todos los miembros del equipo, y la comunicación verbal entre todos los miembros y disciplinas involucrados en el proyecto.
Un principio clave de Scrum es el reconocimiento de que durante un proyecto los clientes pueden cambiar de idea sobre lo que quieren y necesitan (a menudo llamado requirements churn), y que los desafíos impredecibles no pueden ser fácilmente enfrentados de una forma predictiva y planificada. Por lo tanto, Scrum adopta una aproximación pragmática, aceptando que el problema no puede ser completamente entendido o definido, y centrándose en maximizar la capacidad del equipo de entregar rápidamente y responder a requisitos emergentes.
Existen varias implementaciones de sistemas para gestionar el proceso de Scrum, que van desde notas amarillas "post-it" y pizarras hasta paquetes de software. Una de las mayores ventajas de Scrum es que es muy fácil de aprender, y requiere muy poco esfuerzo para comenzarse a utilizar.
Kanban, una nueva metodología aplicada a desarrollo software
Kanban viene del japonés (como no), quiere decir ‘etiqueta de instrucción’ , está relacionado con los términos ya conocidos por los lares del desarrollo de software como Lean o just-in-time y como viene siendo habitual se trata de una metodología creada en Japón tras la segunda guerra mundial. Concretamente en TOYOTA se creó como una manera de manejo del flujo de materiales en una línea de ensamble para producir eficientemente sin causar trastornos ni retrasos en la entrega de un producto.
Con el espíritu de aprender del mercado norteamericano, ingenieros japoneses viajaron a estados unidos donde observaron el modo de actuar de los comercios y supermercados. Obtuvieron dos conclusiones, importantes:
- El almacenamiento de la mercancía hasta su venta se limitaba
- Cuando de un producto quedaba un número fijado de unidades se reponía para que siempre hubiera servicio al cliente.
Con estas premisas y ampliando esta filosofía a toda la cadena de servicio se desarrollo Kanban en el que se enuncia que es la orden de que el pedido es el que debe poner en marcha la producción y no a la inversa como hasta el momento. Esto se tradujo en una orden de pedido que da nombre a la metodología.
Las reglas concretas de Kanban son las siguientes:
- No se debe mandar material defectuoso a los procesos subsiguientes
- Los procesos subsiguientes requerirán sólo lo que es necesario
- Procesar solamente la cantidad exacta requerida por el proceso subsiguiente
- Balancear la producción
- Tener en cuenta que KANBAN es un medio para evitar especulaciones, realizar tan solo lo que indica el pedido.
- Estabilizar y racionalizar el proceso