En las dos últimas décadas el desarrollo de software con metodologías ágiles ha ido en ascenso. El mercado de la ingeniería de software cada vez está más apremiado de soluciones eficientes para impulsar las tecnologías disruptivas.
Como es habitual donde la diversidad aflora (XP, SCRUM, Crystal, DSDM, Adaptative, FDD, Lean) las comparaciones son inevitables.
Por eso, he decidido crear este artículo donde comparo en breve las metodologías agile con las que trabajamos en AgilePlan.
Desde mi punto de vista, las mejores metodologías agile son las que permiten:
Bajo estos parámetros, si me preguntas cuál de las metodologías de desarrollo de software es la mejor, te diría: “depende”.
Mi respuesta es relativa y si sigues leyendo entenderás mi posición.
Todas las metodologías agile funcionan bien. Cada una hace énfasis en uno u otro aspecto del proceso de desarrollo: el factor humano, las tareas, los artefactos, etc.
La mejor metodología agile en el desarrollo de software
En mi empresa nos hemos dado cuenta de cómo una elección correcta de la metodología de desarrollo es vital para conducir hacia el éxito un proyecto.
En Cibernos hemos creado un modelo propio que incluye elementos de las tres más conocidas metodologías agile: SCRUM, XP y Kanban.
Somos conscientes de que los entornos actuales son tan volátiles y cambiantes, que las metodologías tradicionales se quedan cortas. Funcionan bien cuando son proyectos colosales y con muchos recursos disponibles; pero, son ineficientes en proyectos de mediana envergadura donde cada minuto es dinero.
Las soluciones agile dan una mejor respuesta por su versatilidad, poca documentación, flexibilidad y fácil encaje en diversos proyectos.
Veamos algunas de las características de las metodologías agile con relación a cuatro criterios:
El método Scrum
Con el método Scrum se agrupan las tareas en bloques de tiempo que duran 30 días generalmente y que proporcionan un incremento completo del producto.
Como documentación principal se utiliza una lista de requisitos prioritarios que el cliente valora como importantes según el coste. En cada entrega, se desarrollan uno o más requisitos.
Los equipos hacen estimaciones de forma conjunta de los tiempos que demoran en cada iteración; y trabajan coordinados en reuniones diarias, muy breves y solo de sincronización.
En el caso del Scrum su mayor fortaleza reside en que la lista de requisitos mínimos facilita el trabajo. Se entregan aquellos que aporten más valor al cliente. Quizás su principal limitación es que mientras se desarrolla una iteración, por lo general no se pueden cambiar sus requisitos.
Por otro lado, se hacen con el cliente reuniones demostrativas para que valore cómo han sido desarrollados los requisitos que proporcionó. Además puede añadir cambios y nuevos tiempos de entrega según sus objetivos de negocio.
Las herramientas principales de esta metodología son:
El método Extreme Programming o XP
Este método trabaja con 10 a 15 iteraciones. Cada iteración o ciclo se divide en etapas:
La fase de análisis y exploración dura dos semanas y en ella se define el alcance general del proyecto. El cliente redacta historias de usuarios que explican lo que se necesita.
En la fase de planificación se acuerda el orden en el que deben implementarse las historias, que a su vez se traducen en tareas específicas. Además se genera una estimación aproximada de los tiempos de entregas (cronograma de entregas).
En la fase de iteraciones se desarrollan las funcionalidades que se solicitan en las historias. El cliente participa activamente en esta fase del ciclo entregando más información detallada de sus sueños. Cada iteración concluida con éxito es un paso más hacia la puesta del sistema en producción.
Durante la fase de puesta en producción se desarrollan tareas de ajuste mientras el usuario utiliza el software desarrollado en pruebas unitarias. Igual que en el método SCRUM también los equipos se reúnen a diario para analizar los fallos y prever que no se repitan.
La metodología XP destaca por el diseño sencillo, un lenguaje fácil de entender y sin tecnicismos en la comunicación con el cliente, es lo que se conoce como metáforas.
Además se aíslan los problemas concretos para su análisis y se admite la recodificación de los programas en busca siempre de claridad y eficiencia.
Como otras metodologías agile el ritmo de trabajo es constante pero sin sobrecargar al equipo.
El método Kanban
Como probablemente sabes, el Kanban nació en Japón en las fábricas de la multinacional Toyota en el contexto del trabajo Just in Time. Se caracteriza por ser una metodología visual. Emplean post-its o tarjetas sobre un muro, de desarrollo incremental. Se subdivide el trabajo en partes, con tarjetas que evolucionan de una fase a otra en líneas horizontales imaginarias.
Como puedes ver en la figura, los post-its contienen información variada. El muro lleva varias columnas que identifican los estados por los que transita la tarea:
Cada proyecto puede generar sus propias columnas con los estados ya que el método Kanban es muy flexible en este sentido.
Su rasgo distintivo es la facilidad con que permite identificar el avance de los proyectos solo de una ojeada. Para un mejor progreso, el trabajo en curso debe estar limitado a equis tareas según el tamaño del equipo y su capacidad de realización, sin sacrificar calidad o eficiencia.
El tiempo que se demora en el desarrollo de cada tarea se debe medir, es lo que se conoce como lead time.
Todas estas metodologías agile según el contexto en que se utilicen y las características de cada proyecto pueden ser útiles.
Su agilidad, flexibilidad y estilos de mejoras continuas hacen más fácil el desarrollo de software y reducen los tiempos.
Por tanto, la pregunta correcta no sería: ¿cuál es la mejor metodología agile?, sino ¿cuál es la más adecuada para cada proyecto?
En nuestra empresa, como antes comentaba, hemos creado un método de trabajo propio que hace más énfasis en un modelo u otro; y nace en el trabajo con prototipos adaptables, bajo el concepto de factoría de software: just in time, rápido y personalizado.
Por otro lado, las metodologías agile y la herramienta de desarrollo que utilizamos en AgilePlan van de la mano. Funcionan de forma adecuada para la programación de procesos de negocio donde participan varios departamentos.
Espero que coincidas conmigo en que la velocidad, desde hace varios años es un factor clave del éxito de las organizaciones para reducir costes y aumentar beneficios.
Mientras el tiempo se pueda traducir en dinero, el desarrollo rápido de software continuará marcando pautas en el mercado.
¿Aún confías en los sistemas de desarrollo tradicionales?