¿Cómo surgió? Surgió de la necesidad de que los desarrollos de una aplicación se pudiera entregar en menos tiempo, con el menor margen de error, la necesidad de los cliente en tener una aplicación en menos tiempo y evitar las idas y vueltas en las aprobaciones.
¿De dónde vino? Este punto lo tuve que buscar en la red, debido a que desconozco de donde vino. Comparto lo que encontré en la red.
Aunque el término Agile se acuñó oficialmente en el año 2001 con el desarrollo del Manifiesto Ágil, durante muchos de los años precedentes, varios de los firmantes del Manifiesto buscaron soluciones que permitiesen reducir el tiempo de desarrollo y entrega del software, uno de los principales males que trajo consigo la crisis del software a principios de los 90s.
Pero para conocer las causas que dieron lugar a esta crisis del software debemos remontarnos a los años 70 y 80 cuando, en un intento de controlar el proceso de desarrollo del software, se intentaron aplicar prácticas tradicionales de gestión (metodologías predictivas) a proyectos dónde los requisitos carecen del nivel de estabilidad de los requisitos de los proyectos de ingeniería tradicionales.
El desarrollo en cascada (waterfall) de un producto software prescribía que el ciclo de vida del desarrollo de una aplicación debía ir avanzando a través de un conjunto de fases secuenciales dónde el final de una fase marcaba el inicio de la siguiente.
Los requisitos de un proyecto software rara vez se mantienen sin variación a lo largo del ciclo de vida del proyecto.
Con tiempos de entrega cada vez mayores y constantes cambios a los requisitos, la industria del software requería buscar nuevos modelos de gestión que facilitasen un modelo de desarrollo más centrado en dar respuesta a las necesidades de los clientes.
¿Por qué las personas lo empezaron a usar? Desde mi humilde observación, las personas lo comenzaron a usar por la rapidez en que se podía entregar una aplicación funcional a los clientes.
¿Por qué es diferente de Waterfall? Waterfall tiene la particularidad que el comienzo de una etapa comienza siempre y cuando la etapa anterior haya concluido. En el caso de Ágil, el desarrollo va surgiendo a medida que va transcurriendo el tiempo y no se necesitan aprobaciones para poder avanzar.