Las metodologías de desarrollo ágil suponen un cambio de la mentalidad y filosofía de las empresas, y son ideales para desarrollos complejos en un entorno tan cambiante como son las TIC en la actualidad
El concepto de desarrollo ágil nace en la década de los 90 como reacción a los rígidos sistemas de planificación de proyectos existentes hasta la fecha.
Los métodos de planificación tradicionales (predictivos) se basan en un análisis inicial y la estimación del tiempo y recursos necesarios para el desarrollo, a partir de los cuales se elaboraba una planificación en cascada.
Esto resultaba en un método de trabajo muy estructurado, rígido y estricto, que en muchos casos resultaba en grandes desviaciones en tiempo y costes o incluso en un producto final que no cumple con las necesidades del cliente, ya sea por un mal análisis inicial, una mala planificación o por el simple hecho de que las necesidades pueden variar durante el tiempo en que el proyecto se está desarrollando.
A partir de 2001 se empieza a definir y a utilizar el término “métodos ágiles”, lo que hoy conocemos como desarrollo ágil.
El desarrollo ágil se basa en un modelo incremental e iterativo, en el cual el proyecto concibe como un conjunto de hitos o entregables, que se van desarrollando y entregando de forma periódica, lo que permite por un lado, adaptar o reconducir el proyecto en función del desempeño en cada momento y por otro disponer de un producto funcional en etapas muy tempranas del desarrollo.
El término SCRUM proviene la formación en melée que practican los equipos de rugby y es una metodología concreta de desarrollo de producto ágil, inicialmente definido en los 80 Japón, en el marco de la empresa tecnológica pero que puede aplicarse a cualquier tipo de producto.
Más adelante en 1995 se desarrolló como un marco o conjunto de reglas (framework) específicas para el desarrollo de software de forma colaborativa.
Dentro de los distintos modelos de desarrollo ágil, el SCRUM es el que más éxito y penetración de mercado ha conseguido, gracias a su simplicidad y facilidad de implementación.
Como hemos comentado, el SCRUM consiste en dividir el proyecto en una serie de hitos o entregables, de modo que con la entrega o puesta en producción de cada uno de ellos, se pueda revisar o redefinir el conjunto del proyecto.
Para ello, al inicio del proyecto se define una lista de requisitos u objetivos que se deben cumplir con el proyecto, y se priorizan en función del valor que le pueden aportar o del retorno de la inversión en función del coste y tiempo de desarrollo.
En base a estos objetivos, se planifican una serie de entregables compuestos de uno o varios requisitos y se planifica lo que se conoce como una Iteración o Sprint. Estas iteraciones deben ser desarrolladas en plazos relativamente breves, normalmente de dos semanas a un mes.
Durante el desarrollo de cada iteración es fundamental la comunicación en el equipo, y para ello se establecen reuniones diarias muy breves (en torno a 15 minutos) para poner en común las el estado de sus tareas, detectar posibles problemas o desviaciones y coordinar los esfuerzos para cumplir con las fechas de entrega.
Estas iteraciones, una vez finalizadas, deben ser “funcionales” de modo que se puedan revisar y validar mediante una demostración al resto del equipo y al el cliente y reaccionar o adaptar los objetivos y requisitos del proyecto, modificarlos, eliminarlos o añadir nuevos a la lista de pendientes.
En este punto, una vez cerrada la lista de requisitos, se vuelve a priorizar y a generar nuevas iteraciones repitiendo el ciclo hasta dar por completado el proyecto.
Una de las características principales de esta metodología se basa en dividir un proyecto complejo en una serie de etapas o entregables, con tiempos de desarrollo cortos (típicamente entre 1 y 4 semanas) que aporten nuevas funcionalidades al proyecto de forma incremental.
La planificación de estos hitos debe orientarse en la medida de lo posible a priorizar los que mayor valor o retorno de la inversión ofrezca al cliente en el menor tiempo posible.
Una de las características de esta forma de trabajar es que el equipo se divide en pequeñas unidades de desarrollo, que deben ser autónomas y autosuficientes para cumplir con las tareas asignadas.
Esto no quiere decir que sean independientes puesto que deben trabajar en coordinadas con el resto de equipos y dirigidas por la figura del facilitador, que se encargará de coordinar a todas las piezas del proyecto.
Otro de los requisitos fundamentales para llevar a buen término el desarrollo de proyectos mediante este método es la transparencia y comunicación entre todas las partes relacionadas con el proyecto, tanto los miembros de cada equipo de trabajo entre si, como entre los distintos equipos como con el cliente.
Para ello se plantean breves reuniones diarias internas y entregas y demostraciones con el cliente lo más frecuentemente posible.
La base de toda esta metodología es que el proyecto pueda ir adaptándose a las necesidades del cliente o los cambios del mercado conforme se va desarrollando el producto.
Al priorizar las funcionalidades o módulos más importantes para el cliente se puede disponer de un producto viable y funcional mucho más rápido, con lo que se puede probar, validar, e iterar en función de los resultados a partir de ese punto.
Toda la filosofía de SCRUM gira en torno a adaptarse a las necesidades del cliente o del mercado, mediante la puesta en marcha de forma modular o incremental de funcionalidades, lo que otorga una gran capacidad de reacción ante los posibles cambios necesarios para el éxito del proyecto.
El hecho de que las iteraciones o entragables se planteen de modo que sean funcionales y se prioricen en función del valor que pueden aportar al cliente, resulta en que es posible disponer de un producto mínimamente viable (MVP) en una etapa temprana del desarrollo, sin necesidad de tener que esperar a que se haya finalizado el proyecto.
El planteamiento del desarrollo de forma incremental y la obligación de plantear las entregas de forma que sean funcionales ayuda a mejorar la calidad del software, que por otro lado, al pasar constantes revisiones y demostraciones, permite detectar los posibles fallos o ineficiencias de forma temprana.
La organización en grupos autosuficientes y autónomos del equipo de trabajo permite reducir la burocracia e impedimentos en el desarrollo de las iteraciones, lo que agiliza la toma de decisiones y la resolución de problemas.
Por otro lado, este tipo de metodologías basadas en desarrollos incrementales de corta duración y con mayor grado de autonomía, mejora considerablemente la motivación de los trabajadores, lo cual influye directamente en la productividad de los mismos.
La priorización de las tareas en función del retorno de la inversión permite empezar a generar beneficios de forma mucho más rápida e iterar y rectificar en etapas iniciales del proyecto sobre los factores más importantes del negocio.
Por otro lado, elimina el desarrollo de prestaciones o funcionalidades más superficiales.
Validar las funcionalidades clave del proyecto en las primeras etapas permite validar la viabilidad del proyecto sin que sea necesario realizar la inversión que supondría el desarrollo completo del mismo, así como evaluar la calidad del software y la velocidad de desarrollo del equipo.
Todo esto permite despejar muchas dudas e incógnitas o adaptarse a los posibles problemas con mucho mayor tiempo de reacción y tomar decisiones durante toda duración del desarrollo.
El método de desarrollo ágil SCRUM se puede aplicar en prácticamente cualquier proyecto, pero esto no quiere decir que sea siempre el más idóneo.
Esta forma de trabajar está especialmente ideada para supuestos en los que:
En definitiva, el desarrollo de productos mediante metodologías ágiles, requiere de un cambio no solo de modelo, sino de mentalidad e incluso de filosofía de empresa, pero los beneficios que puede aportarnos bien lo merecen.
¿Eres un proveedor de soluciones TIC y quieres aparecer en este portal?
¿Eres una empresa y no encuentras lo que estás buscando?