Blog

¿Qué es Agile?

Antecedentes

Anteriormente, los proyectos solían extenderse considerablemente, especialmente en el proceso de entrega. En ese entonces, predominaban metodologías tradicionales provenientes de otras industrias, como la metodología en cascada. Esta modalidad implicaba la planificación del proyecto en una etapa inicial, seguida por su desarrollo, pruebas, despliegue, y otras fases de manera secuencial. Este enfoque generaba un extenso lapso entre la solicitud del requerimiento del producto y su entrega final. Lamentablemente, esto no permitía que el equipo o el producto respondiera de manera ágil a cambios en el mercado o competencia. Estas metodologías no tomaban en cuenta la necesidad de flexibilidad, ya que normalmente se establecían un presupuesto fijo, un plazo determinado, un equipo inmutable y entregas específicas en fechas inflexibles.

En febrero de 2001, 17 expertos en programación, entre ellos los creadores de Scrum, se reunieron para ver cómo podían atender mejor las necesidades de sus clientes, reducir los tiempos de entrega y evitar la rigidez ante los cambios. Fue así como nació el Manifiesto Ágil (o Agile)

 

Manifiesto Ágil

Estamos descubriendo formas mejores de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. A través de este trabajo hemos aprendido a valorar:

  • 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

Esto es, aunque valoramos los elementos de la derecha (texto en negrita), valoramos más los de la izquierda.

 

¿Que es Agile?

El enfoque Agile no se limita a ser una metodología, un framework o un proceso específico para el desarrollo de software; más bien, constituye un conjunto dinámico de principios y valores que fundamentan su filosofía. A diferencia de las estructuras rígidas y predefinidas, Agile abraza la flexibilidad y la adaptabilidad como pilares fundamentales. En lugar de imponer reglas estrictas, Agile fomenta la colaboración, la comunicación efectiva y la entrega iterativa de productos de calidad. Al adherirse a sus principios, los equipos pueden responder de manera ágil a los cambios en los requisitos del cliente y las condiciones del mercado. Este enfoque holístico trasciende el ámbito del desarrollo de software y se extiende a diversos contextos empresariales, promoviendo una mentalidad ágil que busca la mejora continua y la satisfacción del cliente en el centro de cualquier proceso. En resumen, Agile se presenta como un marco conceptual que impulsa la agilidad y la innovación en todas las facetas de la gestión y el desarrollo.

 

12 Principios Ágiles

  1.  Satisfacer al cliente
    • Principio: nuestra principal prioridad es satisfacer al cliente mediante la entrega temprana y continuada de software con valor.
      • Con el propósito de fidelizar al cliente se busca satisfacerlo con el producto o servicio entregado, en este sentido nos enfocamos en dar valor desde el primer momento, tomando en cuenta sus necesidades, en cada una de las etapas del proyecto, mediante una oportuna comunicación.

        Todo cambio o adaptación se realiza si el resultado beneficia al cliente, aunque en muchas ocasiones no resulte tan sencillo llevar a cabo dichos cambios y sin dejar de cumplir con los plazos de entrega ya establecidos; los cuales cabe mencionar, serán continuos y en lapsos de tiempos cortos pudiendo detectar, ajustar o rectificar la perspectiva del cliente.

        Ejemplificando:

        Supongamos que un cliente desea contar con un medio de transporte. En una aproximación no ágil, se construiría un automóvil y, en cada iteración, se entregaría una parte del vehículo: una rueda en la primera, dos ruedas en la segunda, y así sucesivamente hasta completar el coche. Sin embargo, esta metodología no refleja la agilidad, ya que el cliente no puede utilizar el medio de transporte hasta que se haya ensamblado por completo.

        Contrastándolo con un enfoque ágil, en la primera iteración se le proporcionaría una patineta, en la segunda un scooter, y gradualmente, en sucesivas iteraciones, se avanzaría hacia la construcción de un automóvil. En cada fase, el cliente experimenta mejoras tangibles en su capacidad de transporte. Este método ágil permite una entrega continua de soluciones funcionales, adaptándose a las necesidades y preferencias del cliente en cada paso, en lugar de esperar hasta que el producto final esté completamente desarrollado.

  2. Estar abiertos al cambio
    • Principio: aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente.
      • Por experiencia sabemos que los requisitos pueden ser modificados, independientemente que el proyecto este bastante avanzado, usar una metodología adaptativa conlleva a revisar y reaccionar de forma rápida ante los cambios; en ocasiones hasta el diseño inicial es modificado, la clave es aprovechar el cambio para proporcionar una ventaja competitiva a nuestro cliente.

        Es importante resaltar que, el hecho que soliciten un cambio nos da la tranquilidad que la comunicación está fluyendo, pudiendo entender la real necesidad el cliente y realizar las adaptaciones necesarias a tiempo.

        Ejemplo:

        En la práctica de realizar entregas de pequeñas funcionalidades, se observa la flexibilidad de ajustar el producto según las necesidades. Si, por ejemplo, inicialmente se proporciona una patineta y se identifica que un scooter sería más beneficioso, se realiza una iteración para mejorar el producto. Este enfoque responde a la premisa de mantener la usabilidad óptima para los usuarios finales y garantizar la satisfacción continua de los clientes. A diferencia de metodologías en cascada, donde la planificación se lleva a cabo en una fase inicial, aquí el proceso de planificación se desarrolla de manera gradual. A medida que avanzamos en el proyecto, se adquiere un mayor conocimiento sobre nuestros usuarios, clientes y el modelo de negocio, permitiendo ajustes continuos y asegurando una adaptación constante a las demandas del entorno, lo que contribuye a mejorar la calidad del producto y la experiencia del usuario.

  3.  Entregas frecuentes
    • Principio: entregamos software funcional frecuentemente, entre dos semanas y dos meses, dependiendo de los Sprint del proyecto, siempre es positivo tener más iteraciones en menos tiempo.
      • El proceso se ejecuta gradualmente, dividiendo el proyecto en pequeñas partes consiguiendo efectuar las entregas en pocas semanas, de este modo el cliente recibe paso a paso el código del software, pudiendo cerciorarse de su funcionalidad de manera continua, de esta forma podemos percibir si el producto o servicio cumple con el propósito para el cual fue diseñado, el feedback en cada sprint nos dan la oportunidad de adaptar o seguir adelante con el proyecto.
  4. Trabajo colaborativo
    • Principio: Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto.
      • En un entorno ágil se requiere que todos los involucrados interactúen diariamente, aunque las actividades se gestionen de forma independiente, además que cada quien este al tanto de sus labores, sin que una figura autoritaria dirija la gestión.

        Lo recomendado es la división del trabajo, realizando reuniones frecuentes de seguimiento, permitiendo coordinar esfuerzos y organizar mejor el trabajo.

  5. Motivar al equipo
    • Principio: 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.
      • Aquí juega un papel importante la comunicación y la selección del equipo, en los entornos ágiles la información debe fluir de forma rápida y aunque todos los miembros del equipo se auto gestionen, las reuniones cortas pero frecuentes, servirán para conocer sus habilidades, escucharlos y motivarlos.
  6. Comunicación abierta y directa
    • Principio: 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.
      • Los miembros del proyecto deben estar en continua comunicación por diferentes canales, sin embargo, algunas veces es necesaria la conversación cara a cara y aunque estén en diferentes departamentos, niveles en la organización o trabajen de forma remota se requiere tener un contacto de forma intermitente, por si surgen dudas o se necesitan comunicar alguna información.
  7. Lenguaje sencillo
    • Principio: El software funcionando es la principal medida progreso.
      • Nos interesa que cliente esté involucrado en todas las fases del proyecto para que se sienta comprometido y satisfecho, evitando retrasos o el estancamiento del desarrollo, aquí es crucial el lenguaje, debemos expresarnos de forma sencilla, evitando detalles técnicos ya que en su mayoría no son informáticos. Evitemos los tecnicismos para obtener el feedback que necesitamos, ya que pueden perder el hilo de la conversación, haciendo que el mensaje no se entienda o no llegue.
  8. Mantener un ritmo sostenible
    • Principio: los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida.
      • La metodología se basa en mantener un ritmo sostenido a lo largo del tiempo, donde el software o servicio se va desarrollando y en cada etapa se analiza con la finalidad de hacer mejoras, buscando un resultado excelente.

        Un factor clave en el aumento de la productividad, es determinar las tareas que aportan más valor y terminarlas, sin embargo, no podemos confundirnos con gestionar el tiempo, por ejemplo: hacer horas extras para acelerar un proceso, ya que podemos afectar la calidad y recordemos que el objetivo es alcanzar un producto o servicio de calidad que satisfaga al cliente.

  9. Buscar la excelencia
    • Principio: la atención continua a la excelencia técnica y al buen diseño mejora la Agilidad.
      • El diseño y a la excelencia técnica son importantes en los proyectos ágiles, por ello se revisa y ajusta en cada iteración, mientras el software se va desarrollando, se realizan mejoras increméntales para garantizar su correcta funcionalidad y alcanzar la excelencia.

        El enfoque es proactivo, los miembros del equipo están en contante búsqueda de la excelencia del producto o servicio, por consiguiente, la integración, comprobación y mejora continua de las características del software mejoran en gran medida el resultado final.

  10. Lo simple y lo breve
    • Principio: la simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial.
      • El cliente se sentirá satisfecho y cómodo si los entregable están en el tiempo planificado y son simples de analizar, trayendo como resultado que su colaboración sea activa y continua.

        En un proyecto el tiempo es escaso, por esta razón hay que aprovecharlo y gestionarlo de manera practica y sencilla.

  11. Equipos autónomos
    • Principio: las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados.
      • La idea fundamental es crear equipos auto organizados para que proyecto tenga éxito, donde el líder cumple la función de facilitador que distribuye las tareas y comparte la responsabilidad. En un entorno ágil todos los miembros del equipo son responsables del proyecto, cada integrante debe sentirse respetado y con libertad para decidir cómo es más cómodo realizar sus labores, sin olvidar que debe mantener el contacto, ya que ninguno puede trabajar de forma aislada.
  12. Retroalimentación
    • Principio: 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 retroalimentación obtenida de los Stakeholders a lo largo del proceso de desarrollo es crucial porque siempre se buscar mejorar en cada iteración e implementar las mejoras, aunque en ocasiones pensemos que son pequeñas o no son lo suficientemente significativas, a veces estos ajustes marcan la diferencia.

En conclusión, los 12 principios de agilidad constituyen un marco sólido y adaptable para el desarrollo de software y, más ampliamente, para la gestión de proyectos en diversos contextos. Estos principios se centran en la flexibilidad, la colaboración, y la entrega de valor constante al cliente. La esencia de la agilidad reside en responder a los cambios de manera efectiva, priorizando la satisfacción del cliente, fomentando la comunicación y la colaboración dentro del equipo, y buscando continuamente la excelencia técnica. Adoptar estos principios implica un enfoque iterativo e incremental, permitiendo ajustes a medida que se obtiene un mejor entendimiento del proyecto y sus usuarios. En última instancia, la agilidad se presenta como un camino dinámico hacia el éxito, donde la adaptabilidad y la mejora continua son fundamentales para enfrentar los desafíos cambiantes del desarrollo de software y la gestión de proyectos.