En los orígenes, el desarrollo de software era caótico debido a su enfoque “code and fix”. Por esto se utiliza una Metodología, que aporta organización al Proyecto de Software. Luego, descubrimos que metodologías pesadas como el Proceso Unificado de Desarrollo de Software generaban demasiada burocracia y documentación.
En el desarrollo de software hay un ecosistema cambiante donde las necesidades del cliente constantemente cambian, por lo que se necesita un proceso que pueda evolucionar a lo largo del tiempo. Para flexibilizar el desarrollo, surgen las metodologías ágiles o de peso ligero. Nota: algunos autores prefieren el término “métodos” o “prácticas” ágiles en lugar de metodologías.
Errores que se cometieron:
- Separar el diseño de la construcción: recién en la la codificación, se revelan problemas en el diseño. Pero el diseño es un proceso creativo difícil de predecir difícil de planear.
- Los requisitos se pueden fijar en piedra: en realidad son impredecibles.
- Mito de la metodología única: distintos proyectos manejan distintos Requisitos de Software, necesidades, y estándares, por lo que les serviría tener distintas prácticas.
Las metodologías ágiles no son dogmáticas, sino que responden a un conjunto de principios y valores establecidos en el manifiesto ágil, y busca alcanzarlos mediante prácticas como eXtreme Programing o Scrum.
Una filosofía separada pero similar es la Cultura Lean.
Las metodologías ágiles permiten a las organizaciones lograr un cambio gradual, orgánico, integral, y holístico, para adaptarse a la actualidad de los entornos VUCA (Volátil, Incierto, Complejo, y Ambiguo).
Se fomenta una cultura organizacional de mejora continua, con equipos auto-organizados, que promueven la experimentación, y están centrados en aportar valor al cliente.
Manifiesto Ágil
En 2001 se acuerdan los valores de las metodologías ágiles que ya existían hace algunos años:
- Individuos y sus interacciones por sobre procesos y herramientas.
- Software funcionando por sobre documentación exhaustiva.
- Colaboración con el cliente por sobre negociación contractual.
- Respuesta al cambio por sobre planificación estricta.
A partir de estos 4 valores surgen 12 principios:
- 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.
Antes de documentar, se deben responder las siguientes preguntas clave:
- ¿Por qué? Solo si la documentación es necesaria o tiene un propósito.
- ¿Para quién? Definir una audiencia objetiva.
- ¿Qué? No se debe documentar todo, solo lo que sirve.
- ¿Cuándo? Antes, durante, o después.
- ¿Cómo? Documentación virtual es más fácil de acceder que documentación física.
La gestión ágil conviene cuando tenemos:
- Profesionales independientes (seniors).
- Una organización horizontal y flexible.
- Un desarrollo enfocado en personas.
- Un ambiente cambiante.
- Un producto innovador.