Sergio Xalambrí
July 05, 2014

# ¿Qué es Scrum? ¿Y cómo te ayuda trabajar?

Originally published at medium.com

Scrum es una metodología de desarrollo ágil. Scrum propone una forma diferente de organizarse en el desarrollo de un proyecto, tanto en solitario como trabajando en equipo.

Scrum define tres roles principales, el Product Owner, el ScrumMaster y el Equipo de Desarrollo. El Product Owner vendría a ser el cliente (aunque en algunos casos puede ser algún ejecutivo de cuentas), este define las Historias de Usuario, las prioriza y las agrega al Product Backlog.

El ScrumMaster es un facilitador, este se encarga de ayudar a que el equipo de desarrollo tenga lo que necesita para trabajar, ya sea que el equipo necesite cierta información o que tenga alguna duda sobre una historia de usuario, es deber del ScrumMaster ayudarlos en lo que necesiten para que no se corte el trabajo.

El equipo de desarrollo son los que realizan el proyecto, estos se auto-organizan para poder realizar el trabajo de la mejor forma posible, son quienes definen el tiempo que les llevaría cada historia de usuario lo que ayuda al product owner a definir el Sprint Backlog.

Las historias de usuario son las cosas que tiene que hacer el software, representan una acción que un usuario podría necesitas, por ejemplo: El usuario debería poder ingresar los datos de un producto para generar una factura. Es el product owner, y solo este, el encargado de definir las historias de usuario.

Luego de que se definan las historias de usuario el product owner las ordena por prioridad para definir cuales hay que hacer primero. Una vez hecho esto el equipo de desarrollo calcula cuanto tiempo le tomaría realizar cada historia, una vez conocido el tiempo de cada tarea se agregan al product backlog.

El product backlog representa que va a hacer el software cuando este terminado, el product owner puede, durante el desarrollo, seguir agregando más historias de usuario al product backlog. Una vez terminado de definir se definen los sprints, estos suelen tener una duración de 2 semanas y poseen su propio sprint backlog.

El sprint backlog también lo define el product owner. El sprint backlog son un grupo de tareas que han de desarrollarse durante el sprint. Cada sprint tiene que terminar con un producto funcionando, aunque no este completamente terminado.

Antes de empezar un sprint se realizan una reunión llamada Sprint Planning Meeting entre el product owner, el ScrumMaster y el equipo de desarrollo donde se selecciona el trabajo a realizar, se arma el sprint backlog y se define el tiempo para completar el sprint.

Durante el sprint cada día se realiza una reunión llamado Daily Scrum donde se juntan el ScrumMaster y el equipo de desarrolo, durante la reunión cada miembro del equipo explica que hizo ayer, que va a hacer hoy y si se encontró con algún problema, el ScrumMaster entonces debe fijarse cuales fueron los problemas para ayudar a solucionarlo.

El desarrollo debe seguir entonces el proceso de definir las historias de usuario y el product backlog, definir el sprint backlog, una vez terminado definir otro sprint backlog y así hasta terminar el proyecto.

## ¿Por qué Scrum te ayuda en tu trabajo?

Scrum posee muchos beneficios al implementarlo en el desarrollo de software. Voy a enumerar los que me parecen más útiles.

Mayor productividad: Al hacer que el equipo de desarrollo se auto-organice se alcanza una mayor productividad al eliminar los tiempos muertos que representa el esperar que se asignen tareas.

Flexibilidad a cambios: La forma de trabajo de Scrum permite que realizar cambios no sean molesto, de hecho hasta es ideal que se hagan, esto lleva a que si los requisitos del proyecto cambian el equipo se pueda adaptar sin problemas.

Mayor calidad del software: Al necesitar que cada sprint termine con una versión funcional del software lleva a que el mismo tenga una mayor calidad final.

Estas tres son para mí los mayores beneficios de trabajar con Scrum. Hay varios más que se pueden leer en otro sitios, pero me parece que solo estos ya hacen que valga la pena implementar Scrum en desarrollo de un software.