7i_GPS-S01-Scrum-Introducción¶
Introducción a Scrum Gestión de Proyectos Software¶
Introducción a Scrum Gestión de Proyectos Software
Contenidos¶
- ¿Qué es Scrum?
- Origen y razón de ser
- ¿Cuándo elegir Scrum?
- Componentes de Scrum
- Roles, actividades y artefactos
¿Qué es Scrum?¶
- Aproximación ágil al desarrollo de productos y servicios innovadores
- No necesariamente software
- Se empieza con un lista priorizada de tareas para desarrollar un producto ( product backlog , pila del producto)
- Se va trabajando en las más importantes/prioritarias
¿Qué es Scrum?¶
- El trabajo se realiza en iteraciones de duración predeterminada ( timeboxed iterations )
- Entre una semana y un mes
- Durante cada iteración, un equipo multidisciplinar ( cross-functional team ) hace todo el trabajo
- Diseño, implementación, pruebas...
- Al final de cada iteración hay algo que se podría poner en producción ya
- Luego se pondrá o no se pondrá. Pero se podría
¿Qué es Scrum?¶
- Al comienzo de cada iteración, el equipo planifica qué subconjunto de tareas abordará
- Al final de cada iteración, el equipo revisa lo que se ha completado junto a clientes/usuarios
- Ese feedback permite alterar lo que se va a hacer luego y cómo se va a trabajar
¶
El origen de Scrum¶
- 1986: “The New New Product Development Game” (Takeuchi and Nonaka)
- Honda, Canon, Fuji-Xerox usan un aproximación escalable y basada en equipos que se auto-organizan
- Ya aparece el rugby como metáfora (un equipo que busca avanzar distancia , llevando el balón atrás y adelante)
- 1993: Jeff Sutherland y su equipo crean el proceso Scrum para desarrollo de software
- Teniendo en cuenta el artículo de 1986, desarrollo orientado a objetos, control de procesos empírico, desarrollo iterativo e incremental, investigación en procesos y productividad en software y sistemas complejos adaptativos
- 1997: Ken Schwaber publica el primer artículo sobre Scrum
- En este artículo Schwaber habla de “metodología Scrum”. A pesar de esto, hay gente que cree no se puede hablar de “metodología” al referirnos a Scrum
- El Scrum que describe en este artículo ya se parece a la versión que vamos a ver, pero se nota que está todavía un poco verde
- El manifiesto ágil, del que Schwaber es uno de los firmantes, es del año 2001, y eXtreme Programming (XP) nace en el 1999, así que Scrum les precede
¿Por qué Scrum?¶
- Una empresa (Genomica) de informática en investigación genética reporta grandes mejoras
- 1/10 parte del esfuerzo de desarrollo (en personas-mes)
- 7 veces más características valiosas por unidad de tiempo que antes
- Y mayor satisfacción del cliente
¶
¿Por qué Scrum?¶
- Hay que entenderlo en su contexto
- Tenían un dominio complejo e innovador (informática para investigación genética)…
- Ideal para aplicar Scrum
- … y utilizaban un proceso dirigido por planificación y con desarrollo en cascada ( waterfall )
- Lo menos ideal para trabajar en algo complejo
¶
¿Cuándo elegir Scrum?¶
¿Cuándo elegir Scrum?
Cynefin framework¶
Dominio Complejo¶
- Cosas más impredecibles que predecibles
- Hay unknown unknowns
- Esas cosas que ni siquiera sabes que no las sabes
- Hay unknown unknowns
- Ideas que compiten entre sí
- Y no necesariamente unas son correctas y otras incorrectas
- Hacen falta soluciones creativas
- Interacción y comunicación son esenciales
- Trabajamos explorando diversas alternativas, evaluando cada una de estas y respondiendo en base a lo que sabemos hacer
- La exploración hace que afloren los unknown unknowns
- Un ejemplo de este dominio es el desarrollo de nuevos productos innovadores
- Scrum se adapta especialmente bien a este dominio
Dominio Complicado¶
- Hay buenas prácticas dominadas por expertos
- Las relaciones de causa y efecto no son obvias, hace falta un experto para encontrarlas
- Puede haber más de una respuesta correcta
- Tenemos known unknowns
- Hay cosas que no sabemos, pero sabemos cuáles son esas cosas
- Trabajamos evaluando los hechos que se nos presentan, analizando distintas opciones para afrontarlos y luego respondiendo en base a lo que sabemos hacer
- Un ejemplo de este dominio es el mantenimiento (mejoras y corrección de errores) de software en producción o el dimensionamiento de un sistema web para dar soporte a distintos números de usuarios
- Scrum puede servir, pero puede no ser la mejor opción en este dominio
- Suele ser preferible dejar estos problemas en manos de gente experimentada y darles libertad para trabajar
Dominio Simple¶
- Las relaciones causa-efecto son evidentes para cualquiera
- Hay soluciones correctas conocidas una vez hemos determinado cuál es el problema
- Suelen ser obvias y nadie las discute
- Trabajamos evaluando los hechos que se nos presentan, viendo de qué tipo son, y elaborando respuestas en base a lo que sabemos hacer
- Siempre nos aparecen los mismos tipos de cosas, así que es fácil tener soluciones ya establecidas para ellas
- Un ejemplo de esto puede ser configurar y adaptar un software genérico para el n-ésimo cliente y conectarlo con sus sistemas
- Scrum puede servir, pero puede no ser la opción más eficiente en este dominio
- La solución ideal es que haya un proceso definido, con pasos claros y repetibles
Dominio Caótico¶
- Hay una crisis y hay que responder rápido
- No hay relaciones causa-efecto claras
- Hay que tomar muchas decisiones sin tiempo para pensar
- Trabajamos evaluando los hechos y elaborando respuestas en base a lo que sabemos hacer
- Pero actuar cuanto antes es crítico, así que generalmente no esperamos a tener una respuesta óptima o una evaluación detallada de la situación
- Por ejemplo, estamos en el dominio caótico cuando la última versión que hemos desplegado en producción de nuestro software tiene un fallo crítico y no tenemos un mecanismo sencillo para volver a la versión anterior
- Scrum no es la mejor solución
- Por ejemplo, no hay que ponerse a priorizar cosas, alguien tiene que hacerse cargo y actuar inmediatamente
Desorden¶
- Estás en este dominio si no sabes en qué otro dominio estás
- No intentas aplicar Scrum a este dominio
- Lo que intentas es salir de ahí lo antes posible
¿Dónde está el desarrollo de software?¶
- El desarrollo de software suele estar en el dominio complicado o el complejo
- Al menos algunas partes del desarrollo, quizás ciertos módulos críticos, suelen estar en estos dominios
- Pero no siempre
- Hay trabajos que son más simples que otros
Componentes de Scrum¶
Componentes de Scrum
¿Qué es Scrum?¶
- No es un proceso estandarizado en el que siguiendo unos pasos definidos produces un producto en plazo, sin pasarte del presupuesto y satisfaciendo al cliente
- Sí es un marco ( framework ) para organizar y gestionar trabajo, basado en unos valores, principios y prácticas , que proporciona una base para que tu organización construya una aproximación propia
¶
¿Ceremonias?¶
- En ocasiones, a las actividades de Scrum se las denomina ceremonias o rituales
- Si pensamos en estas actividades como ceremonias, tenemos dos problemas
- El foco está donde no debe
- Debería estar siempre en los principios y en los valores, no en las propias actividades
- La palabra ceremonia (o ritual) tiene connotaciones que en un contexto de ingeniería son negativas
- Realizar unas actividades siguiendo unos pasos dados pero sin entender realmente lo que estamos haciendo, no nos permite darnos cuenta si las hacemos mal, ni adaptarlas a nuevas circunstancias, ni proponer mejoras
- El foco está donde no debe
Roles¶
Roles
Roles¶
- El trabajo se hace en equipos Scrum
- En cada equipo hay tres roles: dueño del producto ( product owner) , ScrumMaster y el equipo de desarrollo
- Puede haber otros, pero Scrum solo requiere estos
- Dueña/o del producto
- Responsable de lo que se va a desarrollar y en qué orden
- ScrumMaster
- Guía al equipo en la creación y el seguimiento de un proceso basado en Scrum
- Equipo de desarrollo
- Encargados de determinar como llevar a cabo lo que el dueño del producto ha pedido
¶
Roles¶
- Con o sin gestores (managers, gerentes, directores...), todos los proyectos se gestionan
- Esa gestión puede recaer sobre todo en una única persona, o estar repartida entre el equipo
- Esto último es más compatible con Scrum
- A veces esa gestión no es consciente y sistemática
- Aunque debería
- Esa gestión puede recaer sobre todo en una única persona, o estar repartida entre el equipo
- Los directores/as “tradicionales” tienen su papel y lo veremos cuando tratemos en profundidad sobre los roles
- Pero el de director/a es un rol que Scrum ni define ni requiere
Dueño/a del producto¶
- Autoridad única que decide qué características y funcionalidad se desarrollan, y en qué orden
- Tiene, y comunica al equipo, una visión clara de lo que se trata de construir
ScrumMaster¶
- Ayuda a todos a comprender y aceptar los valores, principios y prácticas de Scrum
- Soluciona problemas que impiden al equipo usar Scrum efectivamente o que les impiden ser productivos
- No tiene autoridad sobre el equipo
- No es la versión Scrum de la directora del proyecto
¶
Equipo de desarrollo¶
- Equipo multidisciplinar de gente que tiene que diseñar, construir y probar el producto
- Desarrolladores/as, diseñadores/as gráficos, testers, documentalistas...
- El equipo de desarrollo se auto-organiza
- Habitualmente se hacen equipos de entre 5 y 9 personas
- Si es un proyecto más grande, se hará entre varios equipos
Actividades y artefactos¶
Actividades y artefactos
¶
Pila del producto (product backlog)¶
- Una lista priorizada del trabajo a realizar
- Responsabilidad del dueño del producto
- Al principio son, esencialmente, requisitos funcionales
- Los necesarios para implementar la visión
- Pero luego se incluirán nuevos requisitos, cambios en características ya implementadas, errores que hay que solucionar, mejoras técnicas etc.
- Por eso no hablamos de requisitos simplemente, sino que normalmente diremos entradas de la pila o de PBI ( product backlog items )
- El dueño del producto es responsable de la pila, pero mantendrá siempre un diálogo con el equipo para su mantenimiento
- Se denomina grooming al mantenimiento de la pila
- Creación de entradas nuevas, refinado de las que hay, estimación y priorización
- Hay que estimar el tamaño (coste) de cada entrada de la pila para ayudar a determinar su prioridad
Sprint¶
- Iteración de hasta un mes de duración en la que se realiza el trabajo en Scrum
- Se suceden hasta el fin del proyecto
- El trabajo terminado en cada sprint debería crear algo de valor tangible para clientes/usuarios
- La duración está predeterminada ( timeboxed )
- Dentro de un sprint, no se permite cambiar ni el objetivo del mismo, ni al equipo Scrum
- Siempre que sea posible
Planificación del Sprint¶
- El dueño del producto y el equipo de desarrollo acuerdan un objetivo para el sprint ( sprint goal )
- A partir del objetivo del sprint, el equipo de desarrollo revisa la pila del producto y determina qué entradas de alta prioridad puede llevar a cabo a un ritmo sostenible ( sustainable pace ) en ese sprint
- El equipo de desarrollo divide las entradas de la pila del producto elegidas en tareas, que junto a estas entradas formarán el sprint backlog (pila del sprint)
- Las entradas de la pila y las tareas (tasks) son cosas distintas y debemos esforzarnos en no confundirlas
- La pila del producto y la pila del sprint son cosas distintas y debemos esforzarnos en no confundirlas
- El equipo de desarrollo estimará el esfuerzo de cada tarea y, sumando eso, el esfuerzo total requerido para el sprint
- Típicamente en horas ideales
- La planificación de un sprint puede tardar hasta dos horas por cada semana que dure el sprint
- Aunque cogiendo un poco de práctica, un sprint típico se puede planificar bastante más rápido
Ejecución del Sprint¶
- Una vez se ha planificado el sprint, el equipo de desarrollo, apoyado por el ScrumMaster, lleva a cabo las tareas de la pila del sprint
- Hasta el punto de tenerlas a nivel de producción
- El equipo de desarrollo se organizará como prefiera para llevar a cabo estas tareas
Scrum Diario (Daily Scrum)¶
- Cada día del sprint , normalmente a la misma hora, el equipo de desarrollo tiene una reunión de duración predeterminada (15 minutos o menos)
- Es común que nadie se siente, para enfatizar la brevedad
- Normalmente el ScrumMaster hace de “facilitador” de la reunión
Scrum Diario (Daily Scrum)¶
- Típicamente cada miembro del equipo de desarrollo contesta tres preguntas
- ¿Qué he logrado desde el último scrum diario?
- ¿En qué planeo trabajar hasta el próximo?
- ¿Qué cosas me dificultan hacer progresos?
- Contestando esas tres preguntas, todo el mundo sabe lo que ocurre, cómo se está progresando y qué problemas hay que solucionar
- Aquí no se resuelven problemas
- Los que surjan se pueden resolver más tarde entre los directamente involucrados
Hecho¶
- Los resultados de un sprint deben ser un incremento del producto potencialmente listo para ser usado ( potentially shippable product increment )
- Por ejemplo: diseñado, implementado, integrado, probado y documentado
- Una definición más agresiva podría llegar a considerar que al final de cada sprint se entrega una nueva versión/revisión a usuarios/as
- En los primeros sprints de desarrollo de un producto innovador, se puede usar una definición un poco menos ambiciosa de “hecho”
Revisión del Sprint¶
- Sirve para inspeccionar y adaptar el producto que se está construyendo
- Participa todo el equipo Scrum y todos los interesados ( stakeholders )
- Clientes, patrocinadores, inversores, miembros de otros equipos Scrum, la dirección de la empresa...
- Se revisa lo que se acaba de completar en el contexto del esfuerzo de desarrollo general
Retrospectiva del Sprint¶
- Sirve para inspeccionar y adaptar el proceso que se sigue
- El equipo Scrum discute lo que funciona y lo que no con Scrum y con otras técnicas que se apliquen
- Se deciden las acciones para mejorar el proceso que se llevarán a cabo en el siguiente Sprint
Bibliografía¶
- Kenneth S. Rubin. Essential Scrum. A practical guide to the most popular agile process
- Chapters 1,2 (Introduction, Scrum Framework)