¿Qué es -en esencia- la Agilidad?

Ser "ágil" está de moda entre las empresas de desarrollo de software. Los gerentes exigen a sus empleados ser "Ágiles". Las empresas, productos y procesos dicen ser "ágiles" como una estrategia de marketing para atraer clientes.

Muchas discusiones se generan en torno a la agilidad debido a diferentes interpretaciones de su significado.

Suelo escuchar la palabra ágil para referirse a trabajar de manera más eficiente, producir menos costos, moverse más rápido, aceptar más riesgos, completar en menos tiempo, producir sin análisis previo, etc, etc. ¿Qué de todo esto es así?

En este artículo defino el concepto clave de la Agilidad de manera concisa, clara y precisa.



Mi Definición:


La agilidad es la capacidad de diseñar los pasos a seguir en función del aprendizaje que surge de los resultados producidos por los pasos anteriores y de la habilidad de adaptarse a los cambios del contexto, con el fin de alcanzar los objetivos propuestos de manera efectiva.


Algunas conclusiones podemos obtener de la definición anterior:

Paso por Paso


Esta idea sugiere que debemos avanzar de a pasos, donde cada pequeño avance nos permita medir los resultados, verificar supuestos, sacar conclusiones y aprender de ello. Implica además trabajar de modo tal de obtener un producto funcional en cada paso, un producto cuya utilidad pueda ser comprobable.


Forma Ágil


Forma No Ágil



Cambios del Contexto


Asume que la realidad en la cual el proyecto fue concebido va a cambiar a lo largo del camino y habrá que adaptarse a ello.

Efectividad versus Eficiencia


Trabajar de esta manera nos va a permitir alcanzar los objetivos de manera más efectiva. Es decir, más capacidad de satisfacción de los objetivos. No necesariamente de la manera más eficiente.

Consideremos el siguiente ejemplo:



¿Cuál provee más satisfacción de la necesidad y cual más optimización en el uso de recursos? ¿En cuál tendremos más oportunidad de aprender cómo nuestro trabajo satisface la necesidad del usuario?


Además, el enfoque ágil reduce el riesgo de construir algo que nunca será utilizado o que no satisface la necesidad. Es el riesgo más importante en desarrollo de producto. Consideremos el caso hipotético donde el cliente solicitó un auto para satisfacer su problema de transporte y descubre que con la bicicleta su necesidad se encuentra completamente satisfecha. Al auto no sería construido.

Un Objetivo


Es fundamental tener un objetivo que provea clara dirección al proyecto y no cambie a lo largo del mismo: satisfacer una necesidad o resolver un problema.


Cuando se evalúan los resultados de los pasos anteriores, se los mide en función si nos acerca o no de este objetivo.


En el ejemplo del gráfico el objetivo no debería ser construir un auto, sino satisfacer la necesidad de transporte.

El Proceso también se Adapta


La capacidad de adaptación no solo se refiere al producto, sino también a proceso que se sigue para construirlo. El equipo debe analizarlo con frecuencia para medir la efectividad del mismo y ajustar lo que consideren necesario.

Rápido versus Ágil


Este concepto de agilidad nos permite llegar antes a la satisfacción de objetivos. Esto no implica ir rápido. La rapidez aumenta el riesgo de cometer errores, descuidar lo importante y de advertir tarde que nos alejamos del objetivo.

Como dice la frase: "Vísteme despacio que tengo prisa"


Agilidad en el Desarrollo de Software


Una descripción más destallada de qué implica trabajar de manera ágil en el desarrollo de software fue definida en el 2001 en el Manifiesto Ágil.

De esta manera, un equipo u organización ágil es aquella que guía sus decisiones en base a los cuatro valores ágiles y doce principios definidos en el Manifiesto Ágil

Cuatro Valores Ágiles


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

Doce Principios Ágiles


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.


Para seguir leyendo:

Entradas populares de este blog

Visual User Story Mapping Aplicado

Historia de las Metodologías Ágiles en Contexto

Los Bugs en Scrum