¿Qué es la Agilidad?

Era muy extraño hace unos años atrás cuando veía la palabra agile en muchos lados. Claramente, con el "clásico inglés 🧐" que uno cree tener, deduje que se refería a agilidad.

Inmediatamente pensé:

  • Ahora quieren que trabajemos más rápido...
  • Esperan que seamos más ágiles con nuestro código...
  • Nos quieren 24/7 y sin descanso, metidos desarrollando...

No creo que todas las personas, ni menos quienes trabajan en desarrollo hayan pensando igual a mi jeje, no obstante, es algo que pensé sobre la agilidad.

No esperes encontrar un estudio acabado ni menos grandes postulados de mi parte sobre este tema tan importante hoy en día (y bastante de moda en algunas empresas), pero si me interesa que juntos podamos abordarlo superficialmente, con la intención que luego si quieres seguir profundizando, lo hagas 😬.

Todo comienza por la historia.

Había una vez, un grupo de personas, 17 para ser exactos, que se reunieron en el 2001, convocados por un tipo bastante conocido en el medio de desarrollo de software.

Esa persona conocida es Kent Beck, quien tiempo antes de esta "reunión", había escrito un libro llamado Extreme Programming Explained, en el cual presentaba una nueva metodología de desarrollo llamada Extreme Programming (sí, nuevamente con los nombres que con este "clásico inglés 🧐" nos puede hacer pensar muchas cosas, además que tiene nombre de videojuego).

En esta reunión, me imagino, que debe de haber sido "ágil" (😆), discutieron sobre técnicas y procesos de cómo se estaba desarrollando softwares en ese momento. En ella, se llegó a un concepto que acuñaron ese día: "Metodologías Ágiles". Esto, en comparación a las metodologías convencionales y bastante rígidas que existian en ese momento.

Bueno, finalmente se creo lo que se llama: Manifiesto Ágil, el cual mencionaba 4 valores muy importantes.

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, valoramos más los de la izquierda.

Si alguna vez tú no has tenido la oportunidad de trabajar bajo metodologías ágiles, puede que te parezca bastante interesante estos 4 valores, en especial, si tus experiencias han sido bastante rígidas.

La Agilidad, es un enfoque de gestión de proyectos y de desarrollo de software que ayuda a los equipos a entregar valor a sus clientes más rápido y con menos dolores de cabeza. A diferencia de buscar lanzar todo de "una", los equipos ágiles entregan el trabajo en incrementos pequeños, pero funcionales. De esta manera, se puede evaluar en cada "incremento" de forma continua y constante, para que estos equipos sigan mejorando en el tiempo y así, poder responder mejor al cambio.

Otra cosa importante, es que a medida que se incrementa el desarrollo, el entorno del negocio podría cambiar, y el producto que se está desarrollando, también puede cambiar. A través de estos incrementos pequeños, el cambio, si bien es un gran desafío, se puede afrontar de mejor manera. Y lo más importante (algo que en lo personal, me gusta mucho), es que es COLABORATIVO.

Si bien, me estoy refiriendo exclusivamente al área del desarrollo de software, la agilidad ha cruzado fronteras. Ya no es solo el desarrollo, sino también otras áreas como la salud, recursos humanos, escuelas, etc.

Entonces, podríamos decir que la Agilidad, es la capacidad de crear y responder al cambio. Es una forma de lidiar con la incertidumbre.

Los autores del Manifiesto Ágil, usaron esta palabra como etiqueta para todo esto, porque representa la capacidad de adaptación y respuesta al cambio (que era muy importante para este enfoque).

En más simples palabras:

La agilidad, se trata de pensar en cómo puedes comprender lo que está sucediendo en el entorno, identificar la incertidumbre y descubrir cómo adaptarse.

Hoy estamos llenos de metodologías, marcos y herramientas, que ayudan a implementar esta mentalidad ágil en el desarrollo de software, y puede que estas las hayas leído o escuchado algunas por ahí. Podemos encontrar entre ellas a Scrum y Kanban. Hay bastante más, pero estas son particularmente bien conocidas en Chile.

Por ende también encontrarás ciertos papeles como: Agile Coach, Scrum Master, Product Owner, Developer Team. O también conceptos como: MVP (Mínimo Producto Viable), entre otros.

Hablar de estas herramientas lo dejaré para otra ocasión, pero me parece bastante importante volver al inicio de este post. Sobre la rapidez que pensé hace años.

No!, la agilidad no quiere decir que sea rápido.

Ni tampoco que seamos más "ágiles" con nuestro código.

Ni menos trabajar 24/7.

Ir rápido puede aumentar la incertidumbre, cometer errores y crear obstáculos.

Si bien, más arriba, dije:

...ayuda a los equipos a entregar valor a sus clientes más rápido...

No se refiere a hacer todo más rápido, sino que esta forma de trabajar, permite entregar valor más rápido a los clientes.

Desarrollar en entornos ágiles es trabajar en equipo, es autogestión, mejora continua, enfrentar la incertidumbre, es adaptarse, y repito de otra manera, es COLABORACIÓN.

Si no habías leído sobre agilidad, me gustaría invitarte a seguir explorando estos conceptos.

Quizás trabajas como desarrollador en un empresa bastante rígida, o eres un líder de desarrollo que se enfrenta a muchas dificultades con tu equipo, o puede ser que trabajas en una empresa que utiliza todas las metodologías que hayan, aún así, lo importante que quiero dejar en tu mente.

TRABAJO EN EQUIPO - COLABORACIÓN.

Para terminar, te dejo los principios del manifiesto ágil:

  • 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.