Los métodos Agile y en cascada (o tradicional) son dos metodologías de desarrollo; Agile utiliza un enfoque iterativo, mientras que la metodología en cascada es secuencial.
Al abordar un nuevo proyecto, programa o producto, los gestores de proyectos deben decidir qué metodología de entrega utilizar. Un método de entrega es básicamente un marco de trabajo, es decir, el proceso o serie de procesos utilizados para llevar a cabo la planificación, el desarrollo, la ejecución, la fijación, la supervisión y la revisión del trabajo. Dos de las metodologías más utilizadas en la actualidad son el marco tradicional en cascada y el marco de trabajo más moderno, Agile. Existe además un tercer enfoque que combina métodos de trabajo tradicionales y Agile, y que está teniendo una adopción generalizada.
Agile es una metodología de desarrollo de software iterativa con un objetivo centrado en la colaboración entre equipos interfuncionales y que se organizan a sí mismos. Obtén más información sobre Agile.
Agile rompe con el enfoque tradicional paso por paso, según el cual los recursos asignados realizan tareas asignadas específicas y después pasan el proyecto a la siguiente fase o a los siguientes recursos asignados. En su lugar, en esta metodología los equipos son capaces de trabajar de forma colaborativa y simultánea. Estos equipos realizan las tareas al mismo tiempo, lo que evita tener que esperar a su finalización. Además, los equipos pueden adaptarse fácilmente si cambian las necesidades o surge algún problema.
Como se ha mencionado arriba, Agile es un método iterativo, que admite versiones continuas; divide el trabajo en varias secuencias de ciclos repetidos, denominadas iteraciones. Esto proporciona valor al usuario final de forma continua, en lugar de dárselo todo a la vez al finalizar el proyecto. Agile cumple una función clave para la entrega continua y la mejora continua.
Aunque los diferentes equipos pueden abordar esta metodología de forma diferente, Agile siempre cumple con los siguientes principios fundamentales:
- Adaptabilidad
Los proyectos Agile deben tener la flexibilidad para adaptarse a los cambios de arquitectura, diseño, productos finales, requisitos y otros elementos a mitad del proyecto. - Desarrollo Lean
Agile adopta el enfoque más simple para el desarrollo, eliminando pasos innecesarios o redundantes. - Trabajo en equipo
Agile depende del trabajo en equipo y la comunicación eficaces para poder completar varias tareas a la vez. - Participación de los clientes
Las iteraciones Agile proporcionan valor de forma incremental, lo que permite colaborar con los clientes en la introducción de nuevas ideas y en la realización de revisiones de productos. - Sostenibilidad
Agile hace hincapié en la creación de un ritmo de desarrollo constante y sostenible para ofrecer valor al cliente en función de los resultados, en lugar de estresar a los equipos poniendo el foco en los resultados. - Tiempo
El tiempo dedicado a los proyectos Agile se divide en sprints, pequeñas unidades de tiempo en las que se completan y revisan tareas específicas. - Pruebas
Se realizan pruebas en cada fase del proyecto Agile, en lugar de esperar que se complete el proyecto.
Desde su introducción a principios de la década del 2000, Agile ha ganado una gran popularidad. Estos son algunos de los beneficios de la metodología Agile:
Los sprints predefinidos permiten que se entreguen nuevas funciones de forma rápida y predecible. Las pruebas beta también se pueden realizar antes de lo que sería posible de otro modo.
El enfoque de la metodología Agile en la simplicidad y la colaboración les ofrece a los equipos una libertad inigualable para organizarse a sí mismos y tomar decisiones cruciales.
La autonomía del equipo en el enfoque Agile brinda a los equipos la flexibilidad de elegir los métodos y las técnicas que mejor se adapten al resultado deseado. Al mismo tiempo, los proyectos en sí mismos se vuelven más adaptables, ya que se pueden introducir o cambiar elementos de trabajo pendiente a mitad del desarrollo. Las pruebas beta tempranas también proporcionan información esencial que los desarrolladores pueden utilizar para realizar cambios importantes.
Agile depende de la capacidad de un equipo para comunicarse de manera efectiva, tanto interna como externamente. Enfatiza la franqueza y la claridad, y garantiza que se produzca una comunicación regular cara a cara.
En la metodología Agile, es el cliente o el usuario final el que determina la prioridad de las características. Esto proporciona a los equipos de desarrollo una visión clara de las características que aportan un mayor valor a la empresa.
Cuando se enfrentan a plazos ajustados y objetivos difíciles a largo plazo, los desarrolladores pueden perder fácilmente la perspectiva de la importancia del cliente. Agile realinea ese enfoque, utilizando las necesidades del cliente y otros comentarios de los usuarios como base para mejorar los productos. Esto no solo da lugar a una mayor satisfacción del cliente, sino también a una mejora de los resultados.
Aunque Agile a menudo se considera la opción de metodología superior, también tiene algunas desventajas que se deben tener en cuenta antes de comprometerse completamente. Algunos de ellos son:
Si los clientes no tienen el tiempo o el interés para colaborar estrechamente con el equipo de desarrollo, el proyecto no tendrá los comentarios ni los conocimientos necesarios para avanzar.
Si los miembros del equipo no están totalmente comprometidos a completar el proyecto de manera eficaz y eficiente, el aspecto de autogestión de Agile se desarma.
Algunas tareas, o incluso ciertas tareas secundarias, pueden requerir mucho tiempo para completarse durante un solo sprint. Para abordar estos problemas, los equipos tienen que cambiar las prioridades o introducir costosos sprints adicionales.
La naturaleza iterativa e incremental de Agile no es tan compatible con la gobernanza o supervisión del proyecto. Es menos probable que los equipos que son incapaces de autogestionarse puedan gestionarse con eficacia.
El hecho de que Agile priorice el software de trabajo sobre la documentación a veces significa que se omiten instrucciones importantes. Esto puede ser un problema, ya que una documentación completa ayuda a que las implementaciones sean más fáciles de compartir, identifica el pensamiento detrás de decisiones específicas y permite que los equipos puedan retroceder más fácilmente a etapas anteriores.
A menudo, los procesos corporativos, los conjuntos de herramientas, las políticas, las estructuras organizativas y los controles arraigados no generan agilidad. Una implementación de la metodología Agile eficaz exige un cambio cultural generalizado en toda la organización. Esto puede provocar el rechazo de personas o departamentos que están acostumbrados a prácticas más tradicionales.
El método más tradicional para el desarrollo, en cascada, es una metodología lineal y secuencial que divide el ciclo de vida del desarrollo del software en fases distintas en las que la siguiente fase solamente puede producirse si se ha completado la fase anterior.
La metodología en cascada fue la primera metodología de desarrollo, es fácil de aplicar y comprender, y depende en gran medida de la carga frontal del trabajo, la investigación, la documentación y la planificación. Es un enfoque de "medir dos veces y cortar una"; todos los requisitos del proyecto se definen claramente al comienzo del proyecto y se crea un plan detallado para adaptarse a esas necesidades.
La metodología de desarrollo tradicional divide los proyectos en siete etapas distintas. Cada una de ellas es independiente de las demás; una nueva etapa generalmente no puede comenzar antes de que se haya completado la anterior. Además, la mayoría de las etapas están separadas por una "puerta intermedia", que representa un conjunto de requisitos que se deben completar y las decisiones de gestión que se deben tomar antes de que el proyecto pase a la siguiente etapa. Las etapas son las siguientes:
- Concepción
Los equipos de desarrollo comienzan por evaluar el próximo proyecto, incluidos sus beneficios y los costes potenciales. - Documentación
Los requisitos del sistema y el software, así como otros recursos para el proyecto, se recopilan y documentan. - Análisis y diseño
Los equipos analizan el proyecto y determinan cómo quieren que funcione el producto o servicio; el trabajo esencial se identifica y planifica. - Pruebas de código y unidad
La codificación comienza para cada unidad del software, y se realizan pruebas a lo largo del proceso. Las unidades están integradas en la arquitectura de software definida en etapas anteriores. - Pruebas en todo el sistema
Se realizan pruebas en todo el sistema, que incluyen pruebas de errores y pruebas de aceptación del usuario (UAT), así como cualquier otra prueba esencial. - Resolución de problemas
Los errores, ineficiencias y problemas identificados en la etapa anterior se corrigen y resuelven. - Entrega
El producto o servicio terminado se lanza para el usuario final.
Descrita por primera vez en 1970, la metodología en cascada la han usado de forma habitual los equipos de desarrollo durante aproximadamente medio siglo. Esto se debe a que ofrece ciertos beneficios, incluidos los siguientes:
La metodología en cascada es quizás la más fácil de gestionar y cada etapa está vinculada a entregables específicos y a un proceso de revisión claro.
En proyectos en los que se deben diseñar varios componentes para permitir la integración con sistemas externos, el enfoque en cascada (en el que el diseño se completa al principio del proceso) es una clara ventaja.
Los requisitos del producto se documentan y acuerdan antes del inicio del desarrollo, lo que establece un conjunto de características concretas y predecibles.
Una mayor planificación y dar prioridad a la documentación proporcionan una idea clara de los posibles costes, lo que permite elaborar presupuestos precisos.
Dado que el alcance completo del trabajo se conoce por adelantado, medir el progreso resulta sencillo y preciso. El progreso normalmente se mide en el "informe de estado", donde los elementos de trabajo se distinguen con el color verde, amarillo o rojo en lo que respecta a la programación, el presupuesto y los recursos.
Los objetivos se identifican y establecen antes de que comience el trabajo de desarrollo, en lugar de ser variables para dar respuesta a los cambios en las necesidades.
Los miembros del equipo tienen libertad para trabajar en otros proyectos, solo deben dedicar su tiempo durante las etapas que se les han asignado.
Las metodologías en cascada ofrecen a los clientes una experiencia más fácil y sin intervención; no se requiere la participación de los usuarios finales, excepto durante las etapas de requisitos y revisión.
Con un enfoque más claro en la planificación y documentación, los proyectos siguen un recorrido establecido, son más fáciles de revisar y los resultados se identifican con mayor claridad.
El auge de la metodología Agile atestigua ciertas desventajas de la metodología tradicional en cascada. Algunas de ellas son las siguientes:
Debido a que el método en cascada se basa en la planificación detallada en la etapa inicial, es posible que los proyectos en los que surjan problemas inesperados, obstáculos o cambios en las necesidades no se puedan adaptar. Del mismo modo, los flujos en cascada tienen una sola dirección, por lo que puede ser imposible o muy difícil volver a las etapas anteriores para realizar cambios.
La definición rígida de requisitos deja muy poco espacio para la inspiración, la innovación o la creatividad, y puede impedir que los desarrolladores aprovechen las oportunidades inesperadas durante el desarrollo.
Al estar menos involucrados en los procesos de desarrollo, los clientes pueden sentir que se les deja al margen. Quizás aún más problemático es que los clientes no sean conscientes de lo que se entregará hasta que el proyecto se completa. En el otro lado de la moneda, es posible que los desarrolladores no sepan cuál es el resultado esperado para el cliente, lo que amplía aún más la brecha. Además, debido a que las pruebas solo se realizan al final del proyecto, hay más probabilidades de que se produzcan errores y problemas relacionados con la experiencia del usuario.
Los plazos poco claros en etapas específicas pueden provocar retrasos en los proyectos. Para compensarlo, los equipos a veces se apresuran en las últimas etapas, incluidas las pruebas. Esto puede dar como resultado productos de una calidad inferior.
Los requisitos deben identificarse con claridad y aprobarse antes de comenzar cualquier trabajo. De lo contrario, los miembros del equipo podrían interpretar los requisitos de manera diferente, con la consiguiente desconexión entre ellos.
Con tanto esfuerzo dedicado a la planificación y documentación, hay menos recursos disponibles para la creación de los productos.
Cada uno de estos enfoques ofrece sus propias ventajas y desventajas. Teniendo esto en cuenta, comprender los casos de uso específicos de cada opción puede ayudar a las organizaciones a elegir la metodología más conveniente para cada proyecto.
A la hora de tomar una decisión, ten en cuenta estos aspectos:
Unos requisitos del proyecto más estrictos son más adecuados para el enfoque en cascada, mientras que menos requisitos y normas permiten que la creatividad y la libertad características de Agile brillen.
Unos requisitos del proyecto más estrictos son más adecuados para el enfoque en cascada, mientras que menos requisitos y normas permiten que la creatividad y la libertad características de Agile brillen.
Los procesos estrictos hacen que el despliegue de Agile sea muy difícil y resulta más útil seguir un enfoque tradicional en cascada. Los métodos Agile son más eficaces cuando los procesos son más flexibles.
La metodología en cascada es eficaz cuando los clientes, los usuarios finales y los propietarios de productos no están interesados en trabajar estrechamente con el equipo de desarrollo. Aquellos usuarios que desean una mayor participación encontrarán más ventajas en el enfoque Agile.
La mejora de los proyectos heredados existentes, cuyas características ya están bien definidas y en los que las integraciones ya están establecidas, se beneficia del enfoque en cascada. Si el proyecto abre nuevos caminos y aborda algo que no se ha hecho antes, el enfoque iterativo Agile permite a los equipos aprender y adaptarse sobre la marcha.
La metodología en cascada establece un resultado predecible y funciona bien con plazos claramente definidos y proyectos de larga duración. Con plazos más cortos y más flexibles es mejor el método Agile.
La previsibilidad del enfoque en cascada también es adecuada para presupuestos inflexibles, donde cada acción y gasto debe documentarse al principio del proceso. Agile exige menos rigidez en el presupuesto, y se centra principalmente en las características y la velocidad del desarrollo, y no tanto en los costes.
Los proyectos más pequeños y bien definidos suelen ser más adecuados para el enfoque en cascada. Los proyectos más grandes y complejos se benefician más del enfoque Agile.
Si se coordina con trabajadores remotos o hay asociación con otras organizaciones, la menor necesidad de la colaboración presencial del enfoque en cascada lo convierte en la mejor opción. Si una sola organización y los miembros de un equipo de ubicación conjunta son los únicos responsables del proyecto, Agile es más eficaz.
Dado que ambos enfoques ofrecen ventajas significativas, las empresas de todo el mundo buscan maneras de combinar estas ventajas y limitar las desventajas. El resultado es la gestión híbrida de proyectos.
La gestión híbrida de proyectos une las metodologías Agile y en cascada para crear una solución que optimiza el tiempo, los recursos y la satisfacción del usuario.