Tal vez de las principales discusiones que hay en el inconsciente colectivo de los ingenieros de software es ¿
qué significa ser ágil?, algunos creen que es:
- no planear
- no cumplir horarios
- no cumplir compromisos
- no hacer ni ingeniería, ni arquitectura
- no documentar
- desarrollar a "la maldita sea", (como caiga el código con tal de entregar rápido).
- no tener un proceso ordenado
- y creer que la propiedad colectiva del código les solucionará sus malas prácticas.
Para mí ser ágil completamente diferente, :
- es estar centrado en las personas y los equipos, su motivación y capacidad de auto-critica para buscar la mejora en todos los aspectos (personas, software, procesos y herramientas).
- es ser disciplinado
- es enfocarse en entregar software funcionando, de forma temprana, rápida, frecuente y de valor para el cliente
- es trabajar de forma colaborativa y transparente con nuestros clientes
- es planear constantemente (no solo al inicio), para lograr el objetivo (visión) y estar afinando y mejorando la estrategia. Es tener un plan adaptable centrado en el valor.
- es cumplir los compromisos
- es tener en el centro una buena arquitectura, pero tener el valor para cuestionarla y reemplazarla si es necesario.
- es tener buenas prácticas de ingeniería (integración continua, tdd, atdd, refactoring, etc)
- es respetar los procesos, pero estar repensando cada retrospectiva como hacerlos mejor o como hacerlos más livianos de forma que sea más fácil convivir con ellos, entreguen más valor al software y a nuestros clientes.
- es poner a disposición de nuestros clientes nuestra capacidad y equipos que le permita enfocarse en sus prioridades de negocio.
- es tener un equipo que no le tiene aversión al cambio, y que recibe el cambio con facilidad y lo plasma fácilmente en el software
- es tener la capacidad de moverse con flexibilidad y rapidez para responder de forma efectiva a las necesidades del cliente
- es hacer solo la documentación que agrega valor
- es buscar ser liviano, práctico y excelente en todos los aspectos que tocamos o involucramos para construir software de valor en nuestros clientes.
- es tener capacidad de responder al cambio y liberarnos de la sicorigidez de los planes, cascada y RUP.
- ser ágil es trabajar con foco y coraje, buscando en hacer cada vez más con los recursos que tenemos pero sin llevar nuestras fuerzas al límite.
- es estar trabajando en la inspección y adaptación del equipo, proceso y producto, cuestionando de forma transparente para mejorar el ecosistema en el que construimos las soluciones de software.
- es estar enfocado en la felicidad y motivación del equipo para lograr resultados sorprendentes.
- es estar abiertos a que la mejora emerja de cualquiera, no solo de los proclamados líderes: gerentes de proyecto, o analista líder, o líder de procesos.
- ser ágil es estar abierto a intentar, a fallar rápido para aprender, pero no es una alabanza al error, pero es ver en los errores que se cometen una oportunidad de oro corregir el camino, para hacerlo mejor
- Ser ágil es una forma de vida más comprometida, que no es sico-rigida, es organizada, más consciente , y tiene claro que hacer software es complejo y no es predecible (según nuestro actual estado del arte), por lo que se deben proporcionar entornos donde se logre la mayor eficacia y eficiencia.