SCRUM - La mejor metodología de desarrollo Ágil

La mayoría de compañías que desarrollan su propio software con SCRUM para tener una ventaja competitiva respecto a la competencia, aplicando ciclos rápidos de entregas de nuevas versiones con el objetivo de diferenciarse y validar nuevos servicios o funcionalidades.

Por qué nace la metodología SCRUM

En el desarrollo de software tradicional, el proceso para comenzar a elaborar un nuevo sistema de información se basaba en metodologías muy rígidas con una aproximación en cascada. En este tipo de aproximaciones se exige que la fase actual se considere estable y válidada por los usuarios clave en ese momento, antes de poder pasar a la siguiente. En muchas ocasiones se requiere la firma de los responsables indicando que están de acuerdo a lo especificado y por tanto asumen la responsabilidad de los contenidos generados en esa fase.

Esta aproximación puede ser útil porque requiere realizar muchas validaciones y certificaciones que garantizan el correcto avance del proyecto. Pero también produce un incremento considerable en los tiempos necesarios para elaborar cualquier aplicación. Y en el mundo de la empresa, donde se pretende ser ágil e innovador, el principio de desarrollo por cascada resulta ser poco ágil.

Qué es el desarrollo mediante SCRUM

Para evitar este problema surgieron las metodologías ágiles en donde se busca un mecanismo de elaborar aplicaciones mucho más dinámico con entregas periódigas denominados springs aplicando cambios incrementales en el software. Entre ellas la más famosa es SCRUM.

SCRUM define unas reglas de metodología ágil, pero dejando la puerta abierta a que las empresas puedan adaptar la norma general a sus necesidades, puesto que no todas las aplicaciones son iguales y tienen los mismos requisitos funcionales o técnicos.

Cómo se organizan las tareas en SCRUM

De manera resumida se puede decir que SCRUM se basa en planificar grupos de tareas, que se tratarán de resolver en entregables quincenales. Con el despliegue de cada nueva versión se implica al usuario para que revise los cambios realizados y pueda evaluar el avance del proyecto, pudiendo tomar decisiones que afecten al grupo de tareas ya planificadas, como cambiar las prioridades, desestimar algunas o introducir de nuevas.

En SCRUM el equipo de desarrolladores van asigándose tareas registradas, a veces con ayuda de un coordinador denominado Scrum Master, que tratarán de resolver dentro de un entregable. Aunque puede pasar, que la tarea sea tan compleja que requiera más de un spring. Si es así, debe estudiarse la posible descomposición de ésta en otras más pequeñas.

Para que los programadores puedan implementar algunas de las tareas planificadas, el equipo de SCRUM tras cada spring, se reúnen y revisan del conjunto de todas las tareas, denominado task pool, cuáles entrarán en el siguiente spring. Para ello se asigna una puntuación de complejidad por tarea como mecanismo de estimación de esfuerzo. Es bastante habitual asignar números de la serie de fibonacci en un intento de hacer una escala que crece rápidamente en complejidad, para evitar el uso de sistemas muy sofisticados de puntuación, puesto que en la mayoría de las veces sólo se usarán entre 3 y 5 puntuaciones diferentes.

Tanto los usuarios finales, como cualquier miembro del equipo puede registrar nuevas peticiones dentro del pool. En cada spring, el equipo revisará de manera consensuada qué tareas deben pasar a ejecución, respetando en la manera de lo posible la decisión de o de los usuarios.

Cómo se realizan las comunicaciones en SCRUM

A parte de las reuniones de springs, SCRUM establece de forma general que al principio de cada jornada y por tanto cada día, el equipo que interviene en el proyecto debe reunirse en una sesiones denominadas daily. En donde todos los miembros de pié hablan durante aproximadamente dos minutos de que tratarán de resolver ese día, qué problemas han tenido en la jornada anterior o qué limitaciones tienen a la hora de solventar alguna tarea. La consideración de que la reunión se realice sin ningún miembro sentado es precisamente para darle una calidad de ágil y rápida. Si alguno de los puntos es lo suficientemente complejo para ser tratado individualmente, el SCRUM máster debe tomar las riendas de la reunión para dejar registrado ese incidente y proseguir con el resto de los temas. Es importante que la reunión diaria se lo más breve posible.

Aun así, la reunión diaria es una extraordinaria herramienta para evitar los bloqueos generados por dependencias o por problemas técnicos, pudiendo levantar la mano cara a los responsables de los departamentos para solicitar ayuda o recursos que permitan solventar algún obstáculo en el avance del proyecto. Así mismo, mantienen a la organización informada del estado del proyecto y de la dirección que debe seguir.

Dónde puede aplicarse SCRUM

Realmente SCRUM no es exclusivo del desarrollo de software, aunque hay muchas empresas de tecnología que lo aplican. De hecho es una metodología de gestión de proyectos que puede aplicarse en muchos ámbitos, siempre que el cambio de dirección durante la ejecución de un proyecto no represente un problema grave, como los que podrían ocurrir en construcción o edificación. Su uso está más enfocado en entornos donde hay equipos de personas entre 3 y 12 miembros y donde el componente de innovación o investigación puede estar presente sin representar un riesgo grave, ni para el proyecto ni para la organización.

En entornos donde la innovación o el cambio de requisitos pueda conllevar problemas significativos será preferible una aproximación tradicional a metodologías en cascada ya que estas permiten realizar unos cimientos sólidos para pasar a la siguiente fase de elaboración. En esa dirección Métrica v3, la mejor metodología de proyectos cerrados, se aplica más convenientemente.

Conclusiones en el uso de SCRUM

En definitiva, Scrum encaja perfectamente en proyectos de software que tratan de elaborar modelos explorativos de aplicaciones en donde las necesidades reales de los usuarios o del mercado no pueden ser definidas con precisión, o también en sistemas cuya tecnología subyacente requerida aun no está madura y puede sufrir cambios que afecten a la forma de consumir los servicios que provee. Salvo estos escenarios, SCRUM garantiza realizar acciones que tienen impacto directo sobre los objetivos que se persiguen y una revisión casi constante de adecuación en el avance, evitando sobre-costes.

Además, gracias a las comunicaciones diarias, se mantiene informado a todos los miembros que tienen alguna responsabilidad en el proyecto y adicionalmente con las entregas quincenales se consigue reducir al máximo los posibles desvíos en el software final, o incluso los riesgos en la realización de costosas inversiones en herramientas que no alcanzan su objetivo cara al usuario final.