Como continuación del post anterior (Be Agile), que contaba un poco sobre el webinar que tomé hace unas semanas, me gustaría hacer foco en Scrum, como una de las metodologías Agile con la que he trabajado.
Scrum es una metodología de trabajo cuyo foco de organización es la gestión del proyecto (a diferencia de otras metodologías ágiles, que pueden orientarse puntualmente al desarrollo, u otras funciones), es decir, el manejo del ciclo de vida del mismo. Una de las características de Scrum, es que pueden identificarse componentes de la metodología, motivo por el cual, suele decirse también, que es un marco de trabajo (framework).
Funcionamiento y características
En Scrum, el desarrollo de una aplicación se separa en ciclos o iteraciones de tamaño fijo llamadas sprint. La duración habitual de una sprint es de entre 1 y 4 semanas, y esto es acordado al comenzar el proyecto. En teoría, no debería modificarse el largo de un Sprint, aunque es frecuente encontrarse con este escenario. Otra característica de estas iteraciones, es que son incrementales, es decir, que al finalizar de cada una se debe lograr un incremento en la funcionalidad (después de cada iteración, el entregable debe ser una aplicación funcionando + un listado de tareas pendientes, es decir, se prioriza una unidad funcional sobre el detalle que será abordado en iteraciones posteriores).
De esta manera, se podría resumir Scrum como una metodología que de manera iterativa, transforma un grupo de necesidades en un conjunto de funcionalidades. A este grupo de necesidades (o requerimientos) se lo conoce como Product Backlog, el cual no es más que una lista única (todos los requerimientos del proyecto se encuentran allí), dinámica (se pueden agregar requerimientos en cualquier momento), priorizada (si no puede darse un orden a esta lista, es imposible planificar el trabajo), y finalmente contempla complejidad (el orden en que se realizarán los requerimientos, está determinado por una suerte de ROI = prioridad/complejidad).
Si hacemos un "zoom" del sprint podemos identificar que cada ciclo tiene 4 fases (o tipo de fases, ya que una de ellas se repite dentro de la iteración). A estas fases, se las suele asociar con las conocidas scrum meetings:
- Planning: Se realiza al comienzo de cada iteración, y sirve para definir el equipo, las responsabilidades, seleccionar del product backlog el trabajo que se va a realizar. Idealmente, al finalizar, debe contarse con un Sprint Backlog (que será refinado durante la iteración), pero que básicamente, es una lista de tareas (para realizar los requerimientos seleccionados), y sus respectivas estimaciones. Una característica del Sprint Backlog, es su alta visibilidad. Su revisión será diaria.
- Daily: Se realiza una vez por día, durante toda la iteración. Participa todo el equipo y cuenta que es lo que realizó las últimas 24 horas, y que se compromete a hacer las siguientes 24. De esta forma, se mantiene al equipo productivo, y se puede controlar el avance sobre el Sprint Backlog. Es durante este proceso, que el mismo cobra una alta visibilidad.
- Review: Se realiza sobre el final de la iteración, y su proposito es el de mostrarle a los diferentes stakeholders el avance logrado durante la misma. Suele llamarse a esta fase demo.
- Retrospective: Se realiza al finalizar la iteración, con el objetivo de hacer un analisis de lo ocurrido durante la sprint. Es el momento de plantear las lecciones aprendidas, para evitar llevar los errores a la siguiente iteración. Es la manera de conseguir una mejora continua en el proceso.
Roles
Para un correcto entendimiento de la métodología, es importante también destacar los roles de los interesados o stakeholders del proyecto.
- Team: Grupo multidisciplinario de profesionales capaces de transformar los requerimientos en funcionalidades. Scrum apunta a que el equipo se autogestione (respecto de la asignación de tareas).
- Product Owner: Canaliza las necesidades en función del ROI. Debe comprender el negocio del cliente (idealmente, podría ser parte del cliente que comprenda como funciona esta metodología).
- Scrum Master: Lider servicial que utiliza su conocimiento para facilitar la aplicación de Scrum. Es el responsable de remover los obstáculos que se le presenten a los diferentes stakeholders. El Scrum master NO asigna tareas; el equipo se autogestiona. El Scrum master es un facilitador.
Pilares
Scrum, basa su funcionamiento en los siguientes pilares:
- Empirismo y Autogestión: Cada iteración es una suerte de "prueba y error" en donde el equipo aprende y aplica lo aprendido para una gestión cada vez más eficaz.
- Timeboxing: Los distintos componentes (ciclos, y reuniones) se enmarcan en tiempos fijos. De esta manera, el equipo se adapta a los momentos del proyecto (sabiendo cuándo debe enfatizar la producción, cuando dar lugar a la mejora, cuando invertir en investigación, etc).
- Mejora continua: En cada momento, el proceso aplicado en el pasado alimenta al ciclo actual.
Scrum es Agil
No quiero ahondar demasiado en "cómo Scrum encaja en Agile y su manifiesto". Creo que la aplicación de los principios ágiles da lugar a este tipo de metodologías dado al nivel de transparencia e incentivo a la interacción humana que este plantea.