Se puede decir que soy un veterano del desarrollo de software, de hecho desde hace 20 años que salí de la carrera mucho ha cambiado. Las metodologías de desarrollo que aprendí en ese entonces se habían diseñado en los sesentas, lo más efectivo era el modelo en espiral donde se iteraba por cada uno de las etapas del cilo de vida del desarrollo, pero lo más usual era el modelo de cascada, aunque era sencillo de entender, no se apegaba a la realidad cambiante y a los requerimientos de los clientes.
En los noventas hubo una revolución en la ingeniería del software, aparecieron las llamadas metodologías ágiles. Éstas surgieron como una respuesta a los modelos tradicionales, pesados, burocráticos y poco flexibles, en la era del web y de los dispositivos móviles, la velocidad para reaccionar al cambio es clave.
Recuerdo que en ese entonces traté de integrar en mi equipo de desarrollo el Xtreme Programming (XP), aunque adoptamos algunas de las prácticas, no logré ver el fruto de la metodología en mayor efectividad. Aunque se aparentemente se veía sencilla la metodología, hay muchas reglas que seguir, particularmente el punto de la programación en pareja (pair programming), la cual es controversial ya que cuando tienes recursos limitados, se percibe un desperdicio, pero para que un programador junior aprenda técnicas, creo que es buena idea.
De las metodologías ágiles la que tuvo más éxito fue Scrum. Y es que su fortaleza está en la simplicidad y al mismo tiempo disciplina que fomenta entre el equipo. Ha tenido gran popularidad por su efectividad y porque creo que tanto los administradores como el equipo de desarrollo ven buenos ojos las prácticas de Scrum.
Scrum se basa en 3 pilares: Transparencia, Inspección y Adaptación. Requiere que el equipo de desarrollo se organice por sí solo y haga visible el avance, promoviendo el compañerismo para solucionar problemas. Gracias a las reuniones diarias, el líder técnico del equipo (Scrum Master) se puede enterar con todo el equipo de los avances del día anterior y saber en lo que se trabajará en el día actual; las decisiones se pueden tomar rápido para la soluciones de los problemas.
El proyecto se subdivide en sprints que pueden ser de entre 2 y 4 semanas, durante este periodo se planean las objetivos (backlog) que se crearán. Cada tarea del backlog se asignan a los desarrolladores y en un tablero que puede ser electrónico o manual, se registrarán los avances visibles para todos, esto por sí solo motiva al equipo para no quedarse atrás.
Una vez terminado el sprint, todo el equpo de Scrum se reune para ver avances y tomar decisiones sobre el rumbo del proyecto. Los sprints son importantes porque dan un sentido de urgencia, es naturaleza humana el no echarle todas las ganas a un proyecto largo hasta que esté cerca del fin, con esto se evita este problema.
En conclusión, Scrum es la metodología que los proyectos modernos requieren, aunque hay que decir que funciona bien con equipos pequeños, para proyectos grandes las metodologías tradicionales siguen siendo la mejor opción.