La filosofía de las metodologías ágiles da un giro al sistema de trabajo tradicional, mejorando en flexibilidad, eficiencia y resultados.

En una sociedad cada vez más cambiante, adaptarse a los nuevos tiempos ya no es opcional, sino un deber que todas las empresas deben abordar si desean sobrevivir y tener éxito en el mercado actual.

Cada vez más empresarios, apuestan por una transformación digital completa para su empresa. Eso incluye tanto la manera en la que se comunican y se relacionan con sus clientes, como su método de producción. Hoy en día, los cambios se producen a tal velocidad, que los procedimientos tradicionales pueden ralentizar un proyecto, ya que no se tienen en cuenta las necesidades que puedan surgir a lo largo del proceso o las circunstancias cambiantes de la sociedad y del cliente. Para resolver estas cuestiones, surgen las metodologías ágiles.

Las metodologías ágiles son un conjunto de métodos que permiten adaptar el modo de trabajo a las condiciones del proyecto, aportando flexibilidad, eficiencia y, por lo tanto, logrando un mejor producto a menor coste.

Flexibilidad más eficiencia es igual a mayor calidad y menor coste.

Aunque actualmente estas herramientas pueden aplicarse a todo tipo de empresas, la filosofía de las metodologías ágiles surgió en la industria del desarrollo del software, en una búsqueda de alternativas al método tradicional de trabajo, muy estructurado y estricto, extraído del modelo de desarrollo en cascada. Este proceso se consideraba burocrático, lento y muy poco eficiente.

Manifiesto Ágil

En el año 2001, se reunieron importantes desarrolladores de software en Snowbird, Utah. Pusieron en común sus conocimientos sobre los mejores métodos de desarrollo y crearon el Manifiesto Ágil, en el que se establecieron 12 principios, y cuya filosofía se puede resumir en cuatro ideas principales:

Valorar a los individuos e interacciones sobre los procesos y herramientas
Balanza: Los individuos e interacciones pesan más que los procesos y herramientas.
Los procesos y las herramientas son muy importantes, proporcionan una hoja de ruta que seguir y métodos para ejecutar el proceso con eficiencia. Sin embargo, estas características pierden todo su valor si no van acompañadas de buenos profesionales, que son los responsables últimos de realizar las tareas, y cuyo conocimiento y talento serán clave para lograr buenos resultados. Los procesos deben ser una ayuda y una guía, deben adaptarse a la organización y al equipo, y no al revés. Además, no pueden ser rígidos, ya que la sociedad cambia rápidamente, y los profesionales deben poder hacer propuestas innovadoras para agilizar procesos.

Valorar el software funcionando sobre la documentación extensiva
Balanza: El software funcionando pesa más que la documentación extensiva.
El valor que aporta un software en funcionamiento nunca podrá ser superado por la documentación que se haya podido realizar previamente. Durante el proceso de desarrollo es importante ir comprobando las funcionalidades que va adquiriendo el proyecto, tal y como se lleva a cabo en la fase de prototipado de la metodología Design Thinking. Ver anticipadamente el comportamiento de las funcionalidades diseñadas y poder interactuar con los prototipos enriquece mucho el proceso y ofrece la oportunidad de generar nuevas ideas.

La documentación es importante y en muchos casos necesaria, pero nunca debe convertirse en una carga que frene la agilidad de los procesos de producción ni en una barrera para la comunicación directa entre las personas del equipo.

Valorar la colaboración con el cliente sobre la negociación contractual
Balanza: La colaboración con el cliente pesa más que la negociación contractual.
En un mercado cambiante y en procesos de desarrollo prolongados, la relación del equipo con el cliente no puede limitarse a un contrato, que no puede ser mucho más que una formalidad, sino que el propio cliente debe ser un miembro más del equipo, con una colaboración activa. De esta forma, el proyecto se enriquecerá con el conocimiento y la experiencia del cliente y los posibles cambios que se requieran se llevarán a cabo con mucha mayor rapidez.

La comunicación continua y la flexibilidad del proceso permiten alcanzar un producto de mayor calidad de la forma más eficiente y mejoran la satisfacción del cliente, que habrá estado presente durante todo el proceso.

Valorar la respuesta ante el cambio en lugar de seguir un plan
Balanza: La respuesta ante el cambio pesa más que seguir un plan.
En el método de trabajo tradicional se valora en gran medida una buena planificación previa y herramientas de control para no desviarse del plan. Este sistema deja de ser adecuado cuando se opera en un entorno cambiante e inestable, en el que hay una evolución rápida y continuada. Las metodologías ágiles valoran más la capacidad de respuesta y una gestión flexible con capacidad de anticipación y adaptación al cambio.

Metodologías ágiles más utilizadas

Existen diferentes metodologías basadas en la filosofía ágil. Sin embargo, las más utilizadas actualmente son tres: Programación extrema, Scrum y Kanban.

Programación extrema o Extreme Programming (XP)

Ilustración programación

La programación extrema es una metodología de desarrollo de software diseñada para mejorar la calidad del software y tener una capacidad rápida de respuesta a los requisitos cambiantes del cliente. Para ello, se trabaja conjuntamente con el cliente, ofreciéndole versiones parciales pero funcionales del producto con mucha frecuencia, para contar con su retroalimentación y poder adoptar los cambios que sean requeridos, mejorando la productividad. Las prácticas básicas de la programación extrema son las siguientes:

  • Equipo completo: Todas las personas relacionadas con el proyecto forman parte del equipo, incluido el cliente y el responsable del proyecto.
  • La planificación se revisa continuamente.
  • Test del cliente: El cliente propone sus propias pruebas.
  • Versiones parciales: Se deben hacer cada pocas semanas y deben ser funcionales.
  • Diseño simple.
  • Los programadores trabajan por parejas, que se intercambian frecuentemente.
  • Desarrollo guiado por las pruebas automáticas.
  • A lo largo del proceso de programación, se debe ir mejorando el código ya hecho.
  • Integración continua: Cada nueva funcionalidad debe incluirse en el proyecto y ser probada.
  • Todo el equipo tiene acceso y opción de modificar el código.
  • Debe haber un estilo definido y común de codificación.
  • Metáforas: Deben definirse nombres o frases reconocibles que identifiquen las distintas partes del programa, para facilitar la comunicación entre las personas del equipo.
  • El ritmo de trabajo debe ser constante.

Scrum

Ilustración Scrum
Scrum es un marco de trabajo diseñado para facilitar el desarrollo ágil de un proyecto. Se basa en una filosofía colaborativa y en dividir el trabajo en ciclos temporales. Contiene tres roles principales:

  • Product Owner: Es el responsable del proyecto. Elabora la lista de funciones a realizar, indicando las prioridades (Product Backlog).
  • ScrumMaster: Es el «facilitador» o «moderador». Su función es eliminar los trabas que obstaculizan alcanzar los objetivos, pero siempre fomentando la autoorganización del equipo, asegurándose que el proceso scrum funciona correctamente. Trabaja junto al Product Owner y el equipo de desarrollo y actúa de moderador en las reuniones.
  • Equipo de Desarrollo: El equipo es el responsable de la entrega del producto. Está compuesto por un grupo de profesionales multidisciplinar capacitado para realizar el proyecto. Trabajan en equipo, mediante la autoorganización, construyendo el producto de forma incremental, a partir de ciclos temporales cortos llamados Sprints.

Un Sprint o iteración es un periodo de tiempo fijo, definido por el equipo, pero preferentemente corto (normalmente de 2 a 4 semanas), en el cual se realiza el trabajo. En cada Sprint, el equipo de desarrollo debe construir y entregar un Incremento de Producto, una entrega parcial que consiste en una versión del producto realizada durante el proceso de desarrollo. Los incrementos deben ser funcionales, estar operativos y deben mostrar una mejoría respecto del anterior. Además, deberán cumplir los requisitos de calidad marcados en la Definición de Hecho (Definition of Done), un documento con un listado de criterios comunes que determinarán cuándo una tarea puede considerarse terminada.

Elementos de la metodología ágil Scrum

Los pilares del método Scrum son unas fases de producción definidas y reuniones continuadas. De este modo, el proceso se puede resumir de la siguiente manera:

  • Sprint Planning Meeting
    El primer día tiene lugar la reunión de planificación del Sprint, con dos objetivos principales:

    • Seleccionar los requisitos: El Product Owner presenta la lista de requisitos a realizar, indicando las prioridades. Se resuelve cualquier duda que pueda haber, y el equipo selecciona los requisitos que se incluirán en el Sprint, asegurándose de que podrán ser completados para entregar al cliente.
    • Planificar el Sprint: El equipo realiza una lista de tareas para llevar a cabo durante el Sprint. Los miembros del equipo se autoorganizan para asignarse las tareas, según sus habilidades, y complementandose con trabajo en equipo.
  • Daily Scrum Meeting
    Cada día, normalmente por a primera hora, el equipo realiza una reunión de sincronización de unos 15 minutos en la que ponen en común el trabajo realizado, el progreso del Sprint y si existen obstáculos que estén ralentizando las tareas. En esta reunión, cada miembro del equipo responde a tres cuestiones:

    • ¿Qué has hecho desde la última reunión?
    • ¿Qué harás hoy?
    • ¿Qué impedimentos tienes para realizar el trabajo y qué ayudas necesitas?

    El Scrum Master actúa como moderador durante estas reuniones.

  • Sprint Review y Sprint Retrospective
    Al finalizar el Sprint, se realiza una reunión con todas las personas implicadas en el proyecto para llevar a cabo la revisión del Sprint. La reunión tiene dos partes:

    • Sprint Review: El equipo presenta el Incremento de Producto alcanzado durante el Sprint. El Product Owner valora el producto y realiza las observaciones o adaptaciones que considere necesarias.
    • Sprint Retrospective: Los asistentes analizan el proceso de trabajo del último Sprint, valoran si la comunicación ha sido correcta durante el proceso y deciden si se deben hacer mejoras para aumentar la productividad en el próximo Sprint.

-Kanban
Ilustración Kanban: Grupo de personas trabajan juntas delante de una pizarra con anotaciones repartidas en cinco columnas: Ítems, pendiente, en curso, probando y hecho.
Kanban es un sistema de gestión de trabajo cuyo objetivo es mejorar la eficiencia y productividad del equipo. Su principal característica consiste en visualizar el flujo de trabajo y tenerlo siempre visible para todos los miembros del equipo. De esa manera, se puede comprobar cómo avanza el trabajo y realizar los cambios que sean necesarios para mejorar la eficiencia, además de evitar repeticiones de tareas o que alguna de ellas se quede sin realizar.

La forma más común para mostrar el flujo de trabajo es mediante columnas. De esta forma, se establecen los diferentes estados del proceso de trabajo, representados en cada columna.