Descripción

El desarrollo de software es el entorno por excelencia para los marcos ágiles, ya que los requisitos de usuario y las tendencias del mercado son cambiantes y es crucial la entrega temprana de funcionalidades que aporten valor.

Fundamentos

Requisitos inciertos y cambiantes

El cliente puede no saber exactamente qué características funcionarán mejor hasta que no las ve implementadas. El mercado también exige nuevas funcionalidades constantemente.

Riesgo reducido

Al hacer entregas funcionales cada pocas semanas (en lugar de esperar 9 meses para una entrega completa), los errores se detectan y corrigen de manera temprana.

Colaboración activa

El cliente o Product Owner está continuamente involucrado, asegurándose de que el equipo de desarrollo siempre esté construyendo aquello que más valor aporta al negocio.

Tipología

Aunque todos los proyectos ágiles comparten las características indicadas, podemos identificar determinados subtipos, dependiendo de qué ciclo de vida del proyecto adopten.

Ciclo de vida iterativo

En el contexto de las metodologías ágiles, un proyecto iterativo es aquel que se construye mediante la repetición de ciclos de desarrollo (llamados iteraciones o sprints). A diferencia de los métodos tradicionales «en cascada», donde cada fase ocurre una sola vez, aquí el ciclo de vida completo se repite una y otra vez para pulir y mejorar el producto.

Sus características principales son:

  • Refinamiento progresivo: El equipo no intenta entregar piezas terminadas del producto desde el inicio, sino que crea una versión completa pero simple de la solución y la va perfeccionando en cada ciclo.
  • Ciclos de retroalimentación (feedback loops): Cada iteración termina con una revisión o demostración. El objetivo es obtener críticas del cliente o usuario lo antes posible para ajustar el rumbo en la siguiente iteración. Esto minimiza el riesgo de construir algo que nadie quiere.
  • Flexibilidad ante el cambio: Los requisitos no son fijos. Se asume que el conocimiento del problema evolucionará a medida que el proyecto avance. Por ello, la planificación se hace de forma «justo a tiempo» para la siguiente iteración, permitiendo pivotar si las prioridades del negocio cambian.
  • Mitigación temprana de riesgos: Al repetir el proceso de diseño, desarrollo y prueba en cada ciclo, los problemas técnicos o de arquitectura salen a la luz muy pronto. No se espera al final del proyecto para probar si todo encaja; se prueba continuamente.
  • Estructura de tiempo fijo (timeboxing): Aunque el contenido puede cambiar, el tiempo suele ser fijo (por ejemplo, iteraciones de 2 semanas). Esto obliga al equipo a centrarse en lo más importante y a mantener un ritmo de trabajo sostenible.

Ciclo de vida incremental

En los proyectos con ciclo de vida incremental, en lugar de intentar abordar todo el proyecto de una sola vez, el producto se descompone en pequeñas piezas funcionales llamadas incrementos. Cada incremento añade una nueva funcionalidad completa al producto final, como si estuviésemos construyendo una casa habitación por habitación: primero se termina la cocina y ya se puede usar, luego el salón y así sucesivamente.

Sus características principales son:

  • Entregas funcionales: Al final de cada ciclo, el cliente recibe una parte del producto que ya funciona y aporta valor real. No es un prototipo, es una pieza terminada.

  • Priorización por valor: Se suelen construir primero las funcionalidades que el cliente considera más importantes o urgentes.

  • Despliegue gradual: Permite que el usuario empiece a utilizar el sistema mucho antes de que el proyecto total esté finalizado.

  • Reducción de la complejidad: Al centrarse en una sola parte del sistema a la vez, el equipo reduce la carga cognitiva y el riesgo de errores masivos.

A diferencia del modelo iterativo (donde se retoca todo el producto constantemente), el incremental sigue una línea recta para cada módulo:

  1. Requerimientos: Se definen los requisitos de todo el sistema, pero se desglosan en módulos.

  2. Asignación: Se decide qué funcionalidades irán en el incremento 1, cuáles en el 2, etc.

  3. Desarrollo del incremento: Se realiza el análisis, diseño, código y pruebas de esa pieza específica.

  4. Integración: La nueva pieza se añade a lo que ya estaba construido previamente.

Marcos ágiles

Los marcos ágiles más populares suelen emplear una combinación de ciclos iterativos e incrementales. Algunos ejemplos son:

  • Scrum
  • Kanban
  • XP
  • Frameworks de escalamiento ágil (cuando el enfoque adaptativo se aplica a grandes organizaciones con múltiples equipos, se utilizan marcos de escalamiento)

Valores y principios del Manifiesto Ágil

El Manifiesto por el Desarrollo Ágil de Software (Manifiesto Ágil) se gestó en 2001 durante una reunión en Utah, Estados Unidos, en la que participaron Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland y Dave Thomas. El documento constituye una declaración de la nueva filosofía sobre el desarrollo de software centrado en la aportación de valor al cliente.

El manifiesto define cuatro valores como las piedras angulares de la filosofía ágiles. Estos valores son:5

  • Individuos e interacciones sobre procesos y herramientas.
  • Software funcionando sobre documentación extensiva.
  • Colaboración con el cliente sobre negociación contractual.
  • Respuesta ante el cambio sobre seguir un plan.

Dichos valores se articulan en doce principios:6

  • Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor.
  • Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente.
  • Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de tiempo más corto posible.
  • Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto.
  • Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo.
  • El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara.
  • El software funcionando es la medida principal de progreso.
  • Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida.
  • La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad.
  • La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial.
  • Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados.
  • A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia.

La adopción de Agile en las organizaciones

La adopción de la filosofía agile implica un cambio cultural dentro de las organizaciones, el cual puede confrontar obstáculos, vacilaciones o reticencias. Por ello, es importante contar con métodos y perfiles profesionales facilitadores de dicho cambio.

Agile coach

Es el rol de la persona que ayuda a escalar los procesos de gestión de proyectos con marcos agile entre múltiples equipos de desarrollo o en la totalidad de una organización.

ADAPT

El acrónico ADAPT se utiliza en los marcos agile para describir los 5 requisitos o pasos necesarios para adoptar este tipo de framework:

  • Awareness (concienciación)
  • Desire (deseo)
  • Ability (habilidad o capacidad)
  • Promotion (promoción o difusión)
  • Transfer (transferencia)

Ejemplos

Para entender la diferencia entre ciclo de vida iterativo e incremental, imaginemos que vamos a construir un sistema de e-commerce.

Paso Enfoque iterativo Enfoque incremental 
1 Creamos una web muy básica con botones que no funcionan (solo el diseño). Creamos solo el catálogo de productos, que funciona perfectamente.
2 Hacemos que los botones funcionen pero con un diseño simple. Añadimos el carrito de compra al catálogo ya existente.
3 Mejoramos el diseño, añadimos seguridad y optimizamos la velocidad. Añadimos la pasarela de pagos para completar el flujo.

Hay que tener en cuenta que en la práctica de Agile, casi nunca se usa uno modelo puro. Usamos el incremental para decidir qué piezas entregar y el iterativo para mejorar esas piezas basándonos en el feedback.

Recursos adicionales

Gestión de proyectos

Sector público

  1. En línea: https://agilemanifesto.org/iso/es/manifesto.html
  2. En línea: https://agilemanifesto.org/iso/es/principles.html
  3. En línea: https://agilemanifesto.org/iso/es/manifesto.html
  4. En línea: https://agilemanifesto.org/iso/es/principles.html
  5. En línea: https://agilemanifesto.org/iso/es/manifesto.html
  6. En línea: https://agilemanifesto.org/iso/es/principles.html
Sinónimos:
proyecto ágil, marco ágil
Categorías: Agile