Muchas veces cuando hablamos de “desarrollar software de manera ágil” las personas creen que nos referimos a velocidad, a que el desarrollo será más rápido. Sin embargo, la metodología ágil en realidad es un forma de estructurar el trabajo en pequeños equipos organizados de desarrolladores y representantes empresariales para lograr resultados óptimos y de gran calidad, mediante un enfoque flexible que permita realizar cambios y mejoras continuas permanentemente durante las diferentes etapas del ciclo de un proyecto.
Ser ágiles en el desarrollo de software es empírico. Son metodologías que nos permiten entender, construir y aprender sobre el producto que queremos entregar. Gracias a eso podemos conocer más nuestro “target”, podemos mejorar la calidad de nuestro producto y por último crear una relación entre desarrolladores y negocio.
Con esta metodología, desarrollar productos ágiles se convierte en responsabilidad de todos. Del lado del cliente o negocio, deben poder transmitir sus objetivos y participar en el desarrollo. Del lado de los coordinadores, deben de poder entender los objetivos que el negocio quiere conseguir para crear criterios entendibles para los desarrolladores, de esta manera, ellos pueden traducir la lógica del producto a código. Por su parte, el equipo de desarrollo debe analizar, estimar y coordinar su tiempo para poder entregar un producto de calidad y mantenible.
Con el pasar del tiempo han nacido diferentes metodologías que nos permiten organizar y coordinar el desarrollo de software. Existen metodologías como: Scrum, RUP, XP, FLIGHT y mucho más.
Sin embargo, el simple hecho de entender las reglas del juego de cada metodología no te hace ágil … aún. A diferencia de otras metodologías, la ágil no marca pautas de cómo deberían hacerse las cosas, sino que se sustenta en estos 4 postulados fundamentales:
4 valores fundamentales del desarrollo ágil:
- Individuos e interacciones sobre procesos y herramientas
- La comunicación, retroalimentación y entrar en retrospectiva sobre desarrollar y mejorar los procesos para un producto de calidad es uno de los mejores pasos para ser ágiles.
- Dichos procesos deben ser consensuados en equipo.
- Agilidad no entiende de jerarquía, más bien entiende de trabajo en equipo y todos son responsables de poder sacar el producto adelante.
- Software funcionando en vez documentación exhaustiva
- Ya no es necesario crear un documento largo que explique todo el producto para que luego al cabo de un mes quede obsoleto por que cambia las metas.
- Codificar tiene que ser explícito.
- Un buen desarrollador de software no es aquel que pueda hacer un producto funcional. Opino que en realidad es aquel que pueda codificar el producto a un nivel abstracto, explícito y que se pueda traducir con la vida real.
“Cualquier idiota puede escribir código que un ordenador entienda, los buenos programadores escriben código que los humanos pueden entender”.
Martin Fowler.
- Colaboración con el cliente
- Agilidad no entiende de contratos, de poner cláusulas por el número de líneas de código o por el número de horas que dedicaste en desarrollar una funcionalidad.
- Desarrollar software con agilidad es responsabilidad de todos. Todos debemos sentir que formamos parte del producto. Es decir, cuando trabajas con agilidad, el cliente o negocio tiene que ver el equipo de desarrollo como socios del producto.
- Respuesta ante el cambio
- Cada meta tiene una serie de procesos y herramientas que siempre pueden variar con el tiempo.
- Agilidad es aquel que se adapta y responde ante cambios de procesos, equipos, código o hasta herramientas.
- Por eso es que es empírico. Agilidad es un desarrollo enfocado en ensayo y error.
De estos cuatro valores, surgen 12 principios del Manifiesto Ágil, mismos que son importantes si deseas comenzar e utilizar esta metodología.
12 principios del manifiesto ágil:
1.- Satisfacer al cliente con soluciones de software continuamente y a tiempo, acorde a su prioridad.
2.-Son bienvenidos los requisitos cambiantes, los cambios son implementados incluso si llegan tarde al desarrollo, esto puede convertirse en una ventaja competitiva para el cliente.
3.-Interacciones constantes. Estar permanentemente en contacto con el equipo y realizar entregas periódicas de software funcional.
4.-Trabajo colaborativo. Las personas del negocio y los desarrolladores deben trabajar de manera coordinada y cotidiana en el proyecto.
5.-Motivación del equipo. Contar con un equipo motivado, generar oportunidades y confianza.
6.- Contacto directo con los clientes. El cliente debe estar permanentemente informado sobre las etapas y procedimientos del desarrollo.
7.-Medida de progreso. El software que funciona es la principal medida del avance.
8.-Desarrollo sostenido. Los procesos ágiles promueven el desarrollo sostenido.
9.- Búsqueda de la excelencia. La atención continua a la excelencia técnica enaltece la agilidad.
10.-La simplicidad, como arte de maximizar la cantidad de trabajo que se hace, es esencial.
11.- Autorregulación. Reorganización constante del equipo. Las mejores arquitecturas, requisitos y diseños emergen de equipos que se autoorganizan.
12.- Revisión permanente. En intervalos regulares, el equipo reflexiona sobre la forma de ser más efectivo y ajusta su conducta en consecuencia.
Si estás empezando a conocer metodologías para hacer de tu producto más ágil, lo mejor que puedes hacer es comenzar por estos principios :), te dejo el link para que puedas verlos con mayor detalle: agilemanifesto.org