Actualmente estoy disponible para trabajos freelance.
Si estas interesado en colaborar juntos, no dudes en ponerte en contacto conmigo.
Una parte importante de este artículo está inspirado por los contenidos del libro The Agile Samurai: How Agile Masters Deliver Great Software
¿Qué sería necesario para desarrollar algo de valor cada semana?
Ésa es la pregunta a la que intenta dar respuesta el desarrollo ágil. Este tipo de desarrollo se fundamenta en una actitud/filosofía que intenta aportar velocidad, orden y utilidad a las diferentes etapas de desarrollo de una aplicación.
Un ejemplo: Imagina que te pones a dieta. Puedes optar por plantearte el objetivo de perder 15 kilos en un tiempo indeterminado, u optar por perder un kilo a la semana siguiendo una dieta equilibrada y haciendo ejercicio de manera regular.
El desarrollo ágil es esa segunda opción. Vamos a ver algunos “pilares” en los que se fundamenta el desarrollo ágil.
Buscamos ser capaces de obtener pequeñas partes (iteraciones) de un total, de manera fluida y fiable. Si por el contrario quisiéramos abarcar la totalidad de un desarrollo de golpe, nos supondría muchos más problemas tanto en calidad, como en usabilidad y verificación de errores.
Si empezamos a plantear todas las posibilidades que puede haber en un desarrollo, cambios futuros de usabilidad o funcionalidad, o nos detenemos en los detalles accesorios, como el color de un botón, estaremos frenando un desarrollo que se debe centrar en qué hace el botón al pulsarlo, independientemente del color que tenga.
Ya que nos vamos a centrar en lo que desarrollamos cada semana, vamos a dar lo mejor de nosotros en ese trabajo semanal. Asegurarnos de comprobar la funcionalidad de lo que hacemos y corregir posibles errores. No podemos colocar un ladrillo defectuoso en la base del muro. Acabará dándonos problemas.
Ya que el desarrollo de la aplicación está modulado en iteraciones semanales, el cliente puede confirmar o corregir nuestro trabajo de manera casi inmediata, con lo que los posibles cambios y correcciones resultan muy poco traumáticas. Esas entregas semanales serán funcionales, libres de errores y con la garantía de que el cliente no te va a cambiar nada ya que se está haciendo de manera correcta y fluida. Y el cliente es consciente de ello.
Seguro que a lo largo del desarrollo va a haber cambios. Lo que era muy importante una semana, deja de serlo la siguiente, con lo que la planificación debe ser importante, pero tampoco debe seguirse ciegamente. Lo único a tener en cuenta es que cambiar el plan supone un desarrollo mejor.
El desarrollo ágil nos invita a segmentar las diversas etapas de un desarrollo complejo en muchas piezas pequeñas funcionales, escalables y asumibles.
Además, al entregar semanalmente esas iteraciones funcionales, libres de errores, tanto el cliente como nosotros tenemos la certeza que el desarrollo se está haciendo de manera correcta. Esa comunicación fluida con el cliente nos asegura evitar muchos cambios que suelen ser el principal problema de tiempo y presupuesto en un desarrollo.
La finalidad, entonces, es obtener lo que se conoce como Minimum Viable Product (MVP), o lo que es lo mismo, un producto con las características mínimas necesarias para ser funcional, obviando elementos decorativos y accesorios que no restan funcionalidad a la aplicación, y que se pueden implementar a posteriori.
Por último, es importante resaltar que algunas empresas han hecho del desarrollo ágil su “modus operandi”, consiguiendo generar una productividad altísima con una calidad fuera de duda en sus productos y desarrollos. El máximo exponente de este “movimiento” es 37signals, una empresa de desarrollo de aplicaciones web colaborativas. Su filosofía de trabajo queda claramente reflejada en el libro Rework (cuya lectura recomiendo a todo el mundo) y en charlas y ponencias como la impartida por Jason Fried en TED sobre productividad en el trabajo. En este enlace tenéis la charla.
Si quereis saber más sobre el desarrollo ágil:
http://agilemanifesto.org
http://www.allaboutagile.com/
Scalability Rules: 50 Principles for Scaling Web Sites
Individuals and Interactions: An Agile Guide
The Agile Samurai: How Agile Masters Deliver Great Software