Introducción a los Equipos y Metodologías Agiles


En la actualidad, muchos equipos de desarrollo de software que optan por seguir una metodología ágil tienden a confundirse y a llamarse equipos ágiles sin realmente utilizar una metodología como tal, sino que tratan de utilizar algunos elementos a convenir de cada una de las diferentes metodologías ¿Haciendo así metodologías agiles nuevas? No, esto no es lo correcto. Basándonos en esto, considero de gran importancia conocer que es un equipo ágil y las diferentes metodologías ágiles que existen que podemos adoptar.

Las metodologías ágiles son aquellas que permiten adaptar la forma de trabajo a las condiciones del proyecto, consiguiendo flexibilidad e inmediatez en la respuesta para amoldar el proyecto y su desarrollo a ciertas circunstancias específicas del contexto o entorno en su momento.

Las metodologías ágiles son una serie de técnicas para la gestión de proyectos basadas en 4 valores principales:

  1. Los individuos y su interacción, por encima de los procesos y las herramientas.
  2. El software que funciona, frente a la documentación exhaustiva.
  3. La colaboración con el cliente, por encima de la negociación contractual.
  4. La respuesta al cambio, por encima del seguimiento de un plan

Es importante resaltar basándonos en lo anterior, que no todos los proyectos pueden ser manejados bajo una metodología ágil. Entonces en cuales proyectos aplica utilizar una metodología ágil o no; Pues bien, deben ser proyectos donde el problema es conocido pero la solución al mismo no está bien definida, por lo que nos lleva a constantes cambios de funcionalidades y prioridades según los usuarios finales.

A wooden board with sticky notes spelling out the words scrum agile & lean. The post-it notes spell out the management technique used with scurm agile and lean start-up.

¿Qué es un Equipo Agile?

Un equipo agile es un grupo de personas con las habilidades necesarias para analizar, definir, diseñar e implementar/construir y testear/validar funcionalidades que agreguen valor al negocio (Usuarios finales) en un periodo de tiempo reducido. El equipo debe planear, comprometerse y ejecutar todos juntos para logar un objetivo en común y realizar una entrega exitosa donde se observe un valor significativo para los usuarios finales del producto. Para poder lograr esto el equipo debe tener una única visión en común basándonos en el plan de trabajo y aplicar el proceso en las diferentes iteraciones del proceso.

Un equipo agile debe planear, integrar y aprender juntos en todo el proceso; de igual manera mejorar entre una iteración y otra.

Cómo un equipo agile puede ser exitoso

  • El equipo es responsable de manejar su propio trabajo asignado
  • El equipo estima el tamaño y la complejidad del trabajo a realizar
  • El equipo determina el diseño técnico basado en la guía de arquitectura
  • El equipo se compromete a un número de ítems según su capacidad de trabajo que pueda completar en un periodo tiempo (Iteración)
  • El equipo es responsable del de agregar valor y mejorar continuamente
  • El equipo se compromete a mejorar constantemente buscando áreas de mejora

Entre las metodologías agiles tenemos varios tipos:

  • Agile Scrum: Es un proceso en el que se aplican de manera regular un conjunto de buenas prácticas para trabajar colaborativamente, en equipo y obtener el mejor resultado posible de un proyecto.
  • Lean (Fino/Esbelto), se resume en siete principios básicos cuyo objetivo es eliminar todo lo que no añade valor al cliente como: Código y funcionalidades innecesarias, retraso en el proceso de desarrollo de software, requisitos poco claros, burocracia y comunicación interna lenta.
  • Kanban: se define como “un sistema de producción altamente efectivo y eficiente“. El objetivo es gestionar de manera general cómo se van completando las tareas.
  • Extreme programming – XP – Su objetivo principal es establecer las mejores prácticas de Ingeniería de Software en el desarrollo de proyectos. Así como mejorar la productividad de los proyectos y garantizar la calidad del software desarrollado, haciendo que este supere las expectativas del cliente.
  • Crystal: Se trata de un conjunto de metodologías para el desarrollo de software caracterizadas por estar centradas en las personas que componen el equipo (de ellas depende el éxito del proyecto) y la reducción al máximo del número de artefactos producidos. El equipo de desarrollo es un factor clave, por lo que se deben invertir esfuerzos en mejorar sus habilidades y destrezas, así como tener políticas de trabajo en equipo definidas.
  • Dynamic Systems Development Method (DSDM): Su objetivo es crear una metodología RAD unificada. Sus principales características son: proceso iterativo e incremental y el equipo de desarrollo y el usuario trabajan juntos. Propone cinco fases: estudio viabilidad, estudio del negocio, modelado funcional, diseño y construcción y finalmente implementación. Las tres últimas son iterativas, además de existir realimentación a todas las fases.
  • Feature-Driven Development (FDD): Define un proceso iterativo que consta de 5 pasos. Las iteraciones son cortas (hasta 2 semanas). Se centra en las fases de diseño e implementación del sistema, partiendo de una lista de características que debe reunir el software. Sus impulsores son Jeff De Luca y Peter Coad.

Cuáles son los Beneficios de incorporar metodologías agiles a los proyectos:

  • Mejoran la satisfacción del cliente o los usuarios finales ya que en cada etapa del desarrollo se informará al cliente sobre los progresos del mismo.
  • Mejora la motivación e implicación del equipo de desarrollo ya que las metodologías ágiles permiten a todos los miembros del equipo conocer el estado del proyecto en cualquier momento.
  • Ahorran tanto tiempo como costes
  • Mayor velocidad y eficiencia
  • Mejorar la calidad del producto. La continua interacción entre los desarrolladores y los clientes tiene como objetivo asegurar que el producto final sea exactamente lo que los usuarios finales desean

Referencias