Por Damián Buonamico
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:
- Don’t know what I want, but I know how to get it
- De la Teoría de Darwin y las Metodologías Ágiles de Desarrollo
- Historia de las Metodologías Ágiles en Contexto
- ¿Qué diferencia la planificación ágil de la tradicional?
Publicado originalmente en http://c0920343.ferozo.com/2014/11/01/que-es-en-esencia-la-agilidad/