# Scrum

En esta lección hablaremos sobre Scrum, una metodología ágil de desarrollo de software, viendo sus principales conceptos.

## Introducción

Scrum (Melé en español) es un modelo de desarrollo ágil que propone una técnica de desarrollo incremental mediante sprints. Para ello, no se cuenta con una planificación como tal, sino con un listado de características deseables para el producto que se deberán abordar durante los sprints de trabajo.
Sus principios se basan en:
* Mantener equipos de trabajo bien organizados en los que se maximice la comunicación.
* Utilizar un proceso flexible susceptible a cambios para asegurar una máxima calidad del producto.
* Dividir el trabajo en paquetes poco acoplados.

## Roles del equipo

* Product Owner: Es el miembro que recibe toda la información del producto y la plasma en el documento de requisitos del producto de forma priorizada (Product Backlog).
* Scrum Master: Es un miembro del equipo encargado de que el sprint se realice de forma correcta, coordinando a los miembros y solucionando los problemas que pudieran retrasar al equipo.
* Developers: Hasta 8 personas con todas las habilidades necesarias para la construcción de un incremento en cada sprint.
Idealmente pueden participar todos los 'stakeholders' o participantes del proyecto, como el cliente o los administradores de la organización.

## Fases del patrón de desarrollo
### Product backlog

El Backlog del Producto o Product Backlog es un listado de ítems (Product Backlog Ítems, PBIs) que representan las características del producto a construir. Esta lista de Ítems del Product Backlog o PBIs es un elemento vivo y emergente, que cambia constantemente a medida que se aprende más y más acerca del producto. Es mantenida y ordenada por el Scrum Product Owner y es la única fuente del trabajo que hace el Equipo Scrum.

### Sprint

* Duración: 1 a 4 semanas.
Al ser Scrum un proceso de desarrollo incremental y evolutivo, utiliza periodos consecutivos de tiempo corto para construir un producto, Incremento tras Incremento, para inspeccionar y adaptar frecuentemente tanto el producto como el proceso utilizado. A estos periodos de tiempo acotado, en Scrum, se los identifica como Sprints.
Todos los eventos de Scrum, Sprint Planning, Daily Scrums, Sprint Review y Sprint Retrospective, y todo el trabajo que sea necesario hacer para transformar los PBIs en un Incremento sucede dentro de un Sprint.

#### Reunión de planificación de Sprint

* Este Sprint planning meeting tiene una duración: max. 8 horas.
Antes de comenzar el sprint se realiza una reunión en la que se escogen los requisitos que se abordarán. Para planificar o estimar la duración que deberá tener el sprint es común realizar sesiones de 'scrum póker'. Después de esta fase se deberá generar un documento con todas las tareas a realizar así como los tiempos en los que se deberán completar, conocido como 'sprint backlog'.

#### Reunión diaria de Scrum

* Este Daily Scrum tiene una duración aproximada de 15 minutos.
Cada día, al comenzar la jornada, se dedicarán 15 minutos para realizar una reunión en la que se deberán poner al día los miembros del equipo exponiendo:
* ¿Qué hiciste desde la última reunión?
* ¿Hay algún obstáculo en tu tarea?
* ¿Qué tienes planificado hacer hoy?

#### Revisión del Scrum

Al finalizar el Sprint se realiza una inspección del Incremento creado, este evento se llama Sprint Review. En la Sprint Review colabora todo el Equipo Scrum con los stakeholders revisando el Incremento creado en el Sprint e integrado al resto del producto para decidir cuáles serán los próximos pasos hacia el logro del Objetivo de Producto. La Sprint Review dura un máximo de cuatro horas para un Sprint de cuatro semanas. Si el Sprint es más corto, la Sprint Review durará menos.

#### Retrospectiva

La Retrospectiva del Sprint es el momento en el que el equipo inspecciona cómo le fue durante este último Sprint con respecto a las personas, las interacciones, los procesos, las herramientas y su Definición de Terminado (Definition of Done). Este evento es el corazón de la mejora continua y las prácticas emergentes.

## Beneficios de Scrum

* Flexibilidad a cambios.
* Reducción del Time to Market.
* Mayor calidad del software.
* Mayor productividad.
* Maximiza el retorno de la inversión (ROI).
* Predicciones de tiempos.
* Reducción de riesgos