Metodología ágil

“Metodología ágil” es un término general que se utiliza para referirse a los conceptos, prácticas y, a veces, herramientas que reflejan la filosofía de desarrollo de productos conocida como “ágil”.

El movimiento Agile nació en 2001 durante una reunión de 17 desarrolladores con visión de futuro en un retiro en Utah. La filosofía y los principios establecidos durante el retiro formaron la base de Agile y las metodologías Agile posteriores que se desarrollaron a partir de su trabajo inicial.

Desde la publicación del documento original, "El manifiesto para el desarrollo ágil de software", la metodología ágil ha tenido un profundo efecto transformador no solo en el desarrollo de software, sino también en organizaciones de casi todos los campos. Los valores de la creación de productos lean, el descubrimiento iterativo, el desarrollo centrado en el cambio y el trabajo colaborativo realizado en todas las agrupaciones corporativas y sociales han formado la base de nuevos y avanzados modelos comerciales y de productos en todo el mundo.

Esta guía de Metodología Agile servirá como una descripción general para presentar los principios básicos de Agile. Comenzaremos con una definición de metodología ágil como se propone en el Manifiesto de 2001 y continuaremos describiendo algunos de los vástagos más conocidos que han surgido de ágil. Finalmente, discutiremos algunos de los métodos y herramientas ágiles más populares.

¿Qué es Agile?

Agile es un enfoque de trabajo (inicialmente desarrollo de software) que se puede considerar como un compromiso con el cambio y las mejoras continuas.

Valores ágiles

Agile se describe sucintamente en los siguientes valores, que fueron escritos en 2001 por el equipo original de Agile Manifesto:

  • Individuos e interacciones sobre procesos y herramientas
  • Software de trabajo sobre documentación completa
  • Colaboración con el cliente sobre la negociación del contrato
  • Respondiendo al cambio sobre seguir un plan

Al observar estos principios, es fácil ver que Agile se define tanto por lo que no es como por lo que es. Los cuatro valores descritos anteriormente tienen el hilo común de valorar el descubrimiento iterativo y la colaboración sobre entregables rígidos. Al centrarse en estos elementos, los equipos ágiles no solo pueden crear mejores productos con menos desperdicio, sino que también pueden dejar espacio para el descubrimiento, todo mientras se mantienen funcionales. releaseflowing to el cliente final.
Desarrollo ágil vs. cascada
Los fundadores de Agile propusieron una desviación importante de los métodos de trabajo tradicionales de la industria del software. En ese momento (ca. 2001), el software se creó en gran medida como un esfuerzo único basado en un proyecto para producir un producto digital basado en especificaciones específicas establecidas con meses de anticipación. La visión del producto la determinaba un grupo de consultores, ejecutivos y administradores que luego formaban una lista de requisitos para entregar a los equipos de gestión. Los equipos de gestión luego delegarían el trabajo de codificación, compilación, prueba y construcción del software solicitado, para que se realice durante un período determinado dentro de un presupuesto establecido.

Los desarrolladores se refirieron a este sistema como la metodología de "cascada" porque los requisitos de software y los entregables fueron dictados desde la parte superior de la empresa hasta los trabajadores de desarrollo centrales.

Los colaboradores originales de Agile rechazaron esta forma de desarrollo de software por varias razones. Ante todo, la cascada era demasiado inflexible para responder a las demandas de los clientes que podían cambiar durante el desarrollo. En segundo lugar, el diseño de productos en cascada significaba que se suponía que todas las innovaciones debían idearse antes de que se iniciara el proyecto. Este marco rígido deja poco espacio para el descubrimiento de nuevas posibilidades de características hasta después de la release Está terminado. Además, es posible que el software no funcione según lo previsto, por lo que descubrir este desarrollo intermedio en un proyecto en cascada significó demoras costosas.

Los fundadores de Agile propusieron, en cambio, un método para crear software que estaba abierto al descubrimiento, la innovación y la iteración. En lugar de esperar que se entregue una pieza completa de software con funciones completas en una fecha determinada, las compilaciones funcionales podrían ser released incrementalmente. Esto reduce el tiempo de comercialización y permite presupuestar el desarrollo por fases, en lugar de todo a la vez.

Más importante, Desarrollo ágil reconoce que el producto tal como se imaginó originalmente puede no ser capaz de ofrecer el nivel esperado de valor a los clientes y a la propia empresa. Trabajar en las fases de construcción permite agregar nuevas ideas o cambiar estrategias de productos, lo que permite que el desarrollo responda de una manera que la cascada no puede.

Principios ágiles

Para superar las deficiencias de la cascada, la filosofía Agile fomenta que las ideas provengan de todas partes de la empresa. También es importante que los ciclos de desarrollo de productos se centren en cambios iterativos, entregados con frecuencia, a diferencia de los principales cambios de productos. releases que tomó meses o años para crear una construcción funcional.

En lugar de los tradicionales ciclos de desarrollo impulsados ​​por la gestión en “cascada”, el grupo propuso los siguientes métodos de trabajo que eran radicales en ese momento:

  • Al crear un nuevo software, comience con conceptos e ideas simples en lugar de entregables exhaustivos. Desarrolle un prototipo funcional de prueba de concepto que ejemplifique el potencial del concepto para brindar valor a los clientes y partes interesadas internas.
  • Haga que la gente de negocios y los equipos de desarrolladores colaboren para determinar formas de avanzar, mejorar y evolucionar el prototipo de trabajo en versiones más sólidas.
  • Dedique tiempo y espacio diariamente para conversaciones directas entre individuos y miembros del equipo para que se siga el progreso y se descubran nuevas oportunidades para mejorar el producto. Esto puede tomar la forma de reuniones de pie rápidas o reuniones de scrum más largas.
  • Entregar nuevas versiones funcionales de software con frecuencia, integrando y deploying los nuevos cambios en el entorno de producción en vivo. Cada versión modificada representa una versión mejorada de la anterior.
  • Reflexione sobre el resultado de cada período de trabajo (un "sprint") y utilice las lecciones aprendidas para mejorar el desarrollo posterior.
  • Dar voz al cliente en el proceso, ya sea mediante encuestas directas o mediante señales indirectas de datos, para seguir mejorando el producto

Manufactura ágil y ajustada

Agile absorbe muchas lecciones de la manufactura esbelta, una filosofía pionera durante el crecimiento de la manufactura industrializada avanzada en la segunda mitad del siglo XX. La manufactura esbelta elimina pasos innecesarios en la creación de productos mientras mejora el ritmo de producción. Estos métodos fueron utilizados por la empresa automovilística japonesa Toyota, formando el Sistema de Producción Toyota (TPS).

Las lecciones clave para Agile aprendidas de Lean incluyen:

  • Cree el proceso más eficiente posible.
  • Eliminar desperdicios (Muda) combinando procesos y eliminando aquellos que no resulten en un mejor producto.
  • Mida rigurosamente los resultados para que los productos tengan una calidad constante y ciclos de fabricación consistentes.
  • Deje que los trabajadores contribuyan a mejorar los procesos y confíe en el personal clave para impulsar los objetivos de calidad, velocidad y eficiencia.
  • Identifique los pasos en el proceso que contribuyen a los retrasos o la mala calidad, y aborde estos problemas de "flujo" para que un proceso fluido y eficiente cree productos consistentes sobre una base confiable.

¿Qué es la metodología ágil?

La metodología ágil es un conjunto de métodos de trabajo que reflejan los ideales ágiles codificados por primera vez en 2001. Como tal, en realidad existen múltiples metodologías que pueden incluirse bajo el paraguas de "Metodología ágil". Estos constituyen los métodos ágiles más populares, que se describen con más detalle a continuación.

La metodología ágil se define por los siguientes rasgos:

  • Los equipos se crean a partir de expertos en la materia de diferentes áreas de la organización (equipos multifuncionales).
  • Los equipos interfuncionales son responsables de crear versiones prototipo de conceptos de software/productos basados ​​en ideas innovadoras provenientes del propio equipo, así como de los equipos de estrategia de productos y comentarios de los clientes.
  • Luego, el producto de software se revisa durante un breve "sprint" para agregar más funciones, características, mejoras y correcciones.
  • Las ideas para cambiar y mejorar el producto provienen de toda la empresa. Los debates sobre estos asuntos tienen lugar con frecuencia.
  • Los equipos multifuncionales analizan el progreso del trabajo, los desafíos, las prioridades y las nuevas oportunidades emergentes durante breves reuniones diarias.
  • Una vez que se ha completado un sprint, los cambios creados durante el sprint se incorporan a la versión actual del producto.
  • Los controles de calidad se introducen a lo largo del proceso, incluidas las pruebas periódicas y la incorporación de los comentarios de los clientes. Problemas con un release se descubren y (idealmente) se tratan antes de la integración y entrega del nuevo release.
  • Al final de cada sprint, el equipo multifuncional se toma un tiempo para reflexionar sobre los resultados y cómo fue el proceso. Es probable que se establezcan nuevos objetivos e hitos en función de lo aprendido.
  • Se organizan nuevos sprints para que los realicen equipos multifuncionales, que agregarán nuevas funciones, mejoras y correcciones.

¿Cuáles son los tipos de métodos ágiles?

Hay muchas versiones y derivaciones populares de Agile, así como métodos anteriores al Manifiesto de Agile, pero que comparten sus valores. Incluyen Scrum, Lean, Kanban, Extreme Programming (XP), Feature Driven Development (FDD), Dynamic Systems Development Method (DSDM) y Crystal.

Melé

Melé se enfoca en el uso de sprints agresivos para completar mejoras Agile iterativas. Los equipos de Scrum se coordinan para realizar el trabajo principal durante el transcurso de los sprints, y cada sprint se planifica de modo que se pueda lograr un trabajo significativo sin comprometer la calidad y la integridad del proceso. release.

Scrum se destaca por presentar los roles de "Scrum Master" y "Product Owner", los cuales supervisan que todos los pequeños procesos se sumen para obtener resultados deseables. También es importante el concepto de "Product Backlog", que representa características, mejoras y correcciones oportunas para introducir en el próximo sprint.

Se ha demostrado que la metodología Scrum se escala a múltiples equipos en organizaciones muy grandes con más de 800 personas. Ver cómo Digital.ai Agility, anteriormente VersionOne, admite planificación de sprints de scrum facilitando la gestión de la cartera de productos.

"Lean"

La manufactura esbelta, descrita en parte arriba, prioriza la creación de valor continuo y consistente a través de un "flujo" de trabajo predecible. Enfatiza la velocidad y la eficiencia del flujo de trabajo de desarrollo y se basa en comentarios rápidos y confiables entre programadores y clientes. Lean utiliza la idea de que el producto de trabajo se "tira" a través de la solicitud del cliente. Enfoca la autoridad y la capacidad de toma de decisiones en individuos y equipos pequeños, ya que la investigación muestra que esto es más rápido y más eficiente que el flujo de control jerárquico.

Lean también se concentra en la eficiencia del uso de los recursos del equipo, tratando de garantizar que todos sean productivos la mayor parte del tiempo posible. Se concentra en el trabajo simultáneo y en la menor cantidad posible de dependencias de flujo de trabajo dentro del equipo. Lean también recomienda enfáticamente que las pruebas unitarias automatizadas se escriban al mismo tiempo que se escribe el código.

Kanban

Kanban es un método para gestionar la producción que está estrechamente relacionado con la historia de Lean. El método kanban utiliza principalmente un "tablero kanban" que rastrea el volumen actual de elementos de trabajo y las etapas de trabajo a través de las cuales han progresado. Un tablero kanban usa notas adhesivas (o un equivalente virtual) para rastrear la cantidad de elementos de trabajo actuales en cada etapa del proceso. Una vez que se ha completado un elemento de trabajo, la nota adhesiva se mueve a la siguiente etapa del proceso.

Kanban enfatiza el flujo al visualizar el volumen actual de elementos de trabajo y el progreso en el que se encuentran dentro del ciclo de desarrollo. Cuando muchos elementos de trabajo se embotellan en una sola etapa, es una señal para abordar de inmediato la cantidad de trabajo en curso (WIP) para que el sprint o el grupo de tareas puedan avanzar hacia la finalización. La eliminación de WIP también puede servir como una señal para "extraer" nuevos elementos de trabajo del trabajo pendiente, ya que ahora hay una nueva capacidad.

Programación extrema (XP)

Extreme Programming, o “XP”, fue creada a finales de los 90 por Kent Beck, colaborador de Agile Manifesto. Al igual que Agile, promueve una alta participación del cliente, ciclos rápidos de retroalimentación, continuous testing, planificación continua y trabajo en equipo cercano para entregar software funcional a intervalos muy frecuentes, generalmente cada 1 a 3 semanas.

La receta original de XP se basa en cuatro valores simples: simplicidad, comunicación, retroalimentación y coraje. También funciona a través de doce prácticas críticas de apoyo:

  • Juego de planificación
  • Pequeña releases
  • Pruebas de aceptación del cliente
  • Diseño simple
  • Programación de pares
  • Desarrollo guiado por pruebas
  • Refactorización
  • Integración continua
  • Propiedad colectiva del código
  • Estándares de codificación
  • Metáfora
  • Marcha sostenible

Desarrollo basado en características (FDD)

Desarrollo basado en características (FDD) es una variante de la metodología Agile que describe fases de trabajo específicas y muy cortas, que deben realizarse por separado por función. Estos incluyen recorrido de dominio, diseño, inspección de diseño, código, inspección de código y promoción para compilar.

El concepto principal de FDD es que el estado futuro previsto del producto se puede representar mediante modelos y que trabajar en características ayuda a construir un modelo de producto holístico representado por cosas que son "útiles a los ojos del cliente".

FDD recomienda prácticas de programador específicas como "compilaciones regulares" y "propiedad de componente/clase". Los defensores de FDD afirman que se escala de manera más sencilla que otros enfoques y se adapta mejor a equipos más grandes.

Método de desarrollo de sistemas dinámicos (DSDM)

DSDM es otro ancestro de Agile, descrito por primera vez en 1994. Las semillas de la creación de DSDM provinieron del desarrollo rápido de aplicaciones (RAD), cuyo objetivo era estandarizar entrega de software marcos. Después de la llegada de Agile, DSDM evolucionó y maduró aún más para proporcionar una base integral para planificar, gestionar, ejecutar y escalar procesos ágiles y proyectos de desarrollo de software iterativos.

DSDM se basa en nueve principios clave que giran principalmente en torno a las necesidades/valores comerciales, la participación activa de los usuarios, los equipos empoderados, la entrega frecuente, las pruebas integradas y la colaboración de las partes interesadas. DSDM menciona específicamente la "idoneidad para el propósito comercial" como el criterio principal para la entrega y aceptación de un sistema, centrándose en el 80% útil del sistema que puede ser deployed en 20% del tiempo.

DSDM prioriza ciertos entregables utilizando un modelo de cuadro de tiempo, y los elementos que tienen una prioridad más baja se preseleccionan para apartarlos a fin de cumplir con los plazos del cuadro de tiempo.

Cristal

La metodología Crystal es uno de los enfoques más ligeros y adaptables para el desarrollo de software. Varios de los principios clave del cristal incluyen el trabajo en equipo, la comunicación y la simplicidad, así como la reflexión para ajustar y mejorar el proceso con frecuencia. Al igual que otras metodologías de procesos ágiles, crystal promueve la entrega temprana y frecuente de software funcional, la alta participación del usuario, la adaptabilidad y la eliminación de la burocracia o las distracciones.

Crystal en realidad se compone de una familia de metodologías ágiles como Crystal Clear, Crystal Yellow, Crystal Orange y otras, cuyas características únicas están impulsadas por varios factores, como el tamaño del equipo, la criticidad del sistema y las prioridades del proyecto. Esta familia de cristales aborda la comprensión de que cada proyecto puede requerir un conjunto de políticas, prácticas y procesos ligeramente personalizados para cumplir con las características únicas del proyecto.

Los beneficios de la metodología ágil

Todos los métodos ágiles pueden tener sus propias fortalezas y propósitos únicos, pero los siguientes beneficios tienden a ser mutuos para todos:

  • Las versiones de trabajo del software se entregan con relativa rapidez y frecuencia.
  • La calidad y la integridad de una construcción se comprenden desde el principio del proceso.
  • Se minimizan las dependencias y los cuellos de botella del proceso de entrega
  • Los productos reflejan el estado actual de las demandas según se entiende a partir de las señales indicadas por los clientes, los competidores y el mercado en su conjunto.
  • Las innovaciones se pueden introducir en cualquier etapa del ciclo de vida del producto.
  • Los aportes colaborativos provienen de todos los equipos, en lugar de los principales asesores/administradores/consultores que luego emiten órdenes al fondo.
  • Los riesgos se reducen en comparación con los ciclos de desarrollo que no enfatizan las compilaciones funcionales
  • Se pone énfasis en la satisfacción del cliente y la moral del equipo; si ninguno está contento, entonces se entiende que los productos y procesos no están satisfaciendo las necesidades
  • El trabajo se hace más manejable y predecible al tiempo que se introducen flexibilidades que pueden acomodar interrupciones o cambios repentinos en la estrategia.

Principales herramientas para usar con métodos ágiles

Algunas de las herramientas más recomendadas para métodos Agile incluyen: