Metodologías Ágiles

Dentro de la industria del software, existe la creencia de que al usar Metodologías Ágiles se obtienen mayores y mejores resultados en el desarrollo de los proyectos en comparación con los métodos tradicionales. ¿Será esto cierto o solo es un pretexto para simplificar el trabajo de los desarrolladores que buscan mantenerse dentro de un círculo de confort?

Si observamos a detalle el concepto y dejamos de ver solo la superficie, probablemente nos sorprendamos. Haciendo referencia al Manifiesto Ágil, para que una metodología sea considerada como tal, debe apegarse a los siguientes valores.

  • Los individuos y su interacción están por encima de los procesos y las herramientas.
  • El software que funciona está por encima de la documentación exhaustiva.
  • La colaboración del cliente está por encima de la negociación contractual.
  • La respuesta al cambio está por encima del seguimiento al plan.

Como pueden ver, ninguno de estos valores confronta directamente a las metodologías tradicionales, por el contrario es demasiado arriesgado hacer declaraciones en ese sentido, crearía la idea de que los modelos tradicionales han sido diseñados para hacer del ciclo de vida de software un camino lleno de obstáculos que solo dificultan el trabajo de los desarrolladores.

Un proceso –por definición– se encuentra formado por una serie de pasos o tareas que indican la forma de realizar un trabajo. SCRUM, Canvan y XP (eXtreme Programming) poseen procesos propios que al ser seguidos confirman y certifican que están siendo aplicados de forma correcta.

“Los procesos son creados por las organizaciones como la memoria necesaria para repetir los buenos resultados de forma objetiva y si alguna tarea no aporta valor al producto de trabajo o servicio, el proceso se adecúa y ajusta con base en lineamientos también organizacionales”.

Así mismo, la programación de cualquier sistema en cualquier plataforma requiere del uso de herramientas o ambientes; los IDE (aplicaciones de Integrated Development Environment), compiladores y software de diseño son indispensables sin importar si usamos metodologías ágiles o tradicionales

Analicemos por lo tanto los valores anteriormente mencionados.

  1. Los individuos por encima de los procesos y las herramientas

La interacción de todos los involucrados relevantes de los proyectos de software es indispensable; son importantes durante el levantamiento de requerimientos, el análisis, el diseño y codificación, las inspecciones, revisiones y la ejecución de todo tipo de pruebas el involucramiento y participación de los clientes, usuarios e interesados es requerida para aumentar la probabilidad de éxito de los proyectos.

  1. Todo software tiene que funcionar

Es inimaginable un cliente pagando por software que no hace nada, es decir, este punto nunca podrá estar sujeto a discusión y la documentación no tiene por qué ser exhaustiva, pero si es necesaria; no realizar diseño formal es solo un mito difundido por quienes tienen el sentimiento de que el código es lo único que tiene valor, a muchos desarrolladores no les agrada la idea de documentar, pero sin importar las razones que expongan no se puede ignorar el hecho de que la memoria de las personas es limitada y en la mayoría de los casos falla. Entre mayor sea el tamaño (hablando de miles o cientos de miles de LOC), cantidad de componentes o complejidad  de los sistemas, mayor es la necesidad de crear documentación; dejar a la memoria de las personas la gran cantidad de datos que tienen que ser recordados en los proyectos resultará una mala idea, grave e irresponsable.

  1. Cualquier proyecto de desarrollo realizado con personal interno o mediante contratación de proveedores requiere regulación y compromisos.

Estos acuerdos y compromisos fincan y promueven la productividad y calidad de los productos o servicios que serán obtenidos. Iniciar proyectos de desarrollo con bases bien establecidas es entera responsabilidad de las áreas administrativas y operativas de las organizaciones (cliente y proveedor) no de quienes eligen la metodología o herramientas de desarrollo de software que los equipos de trabajo utilizan, a menos claro está, que estas sean estipuladas y formen parte de los clausulados.

  1. Todo plan debe ser actualizado conforme el proyecto evoluciona.

Asegurar que un plan es una herramienta estática inamovible demuestra desconocimiento de los diferentes modelos de calidad y de las mejores prácticas para administración de proyectos de la industria.

“Los planes tienden a cambiar y siempre existe la necesidad de que sean administrados; este cambio debe ser identificado y medido como una desviación. Es precisamente la documentación de estas desviaciones lo que lleva a las organizaciones a aprender y madurar mediante la recolección de datos históricos lo que hará factible su mejora continua”.

Así mismo, son la administración de la configuración y la gestión del cambio, las que permiten en todo momento a los equipos de desarrollo, mantener la consistencia entre los requerimientos y los entregables o productos de trabajo. Este conocimiento es adquirido durante el avance de los proyectos y perder la oportunidad de hacer registros oportunos y completos condena a las organizaciones a cometer repetidamente los mismos errores en la gestión de sus proyectos.

Ninguna metodología por sí misma garantizará los resultados de los proyectos de forma absoluta, por lo que será la correcta combinación de éstas y del uso adecuado de mejores prácticas lo que aumentará las probabilidades de éxito en los proyectos.

Los administradores e interesados en este sentido tienen la obligación de analizar y determinar partiendo de una adecuada descomposición WBS (Work Breakdown Structure) de elementos, componentes, sub-componentes o requerimientos, lo que en cada caso se requiere, tomando en cuenta:

  • Una apropiada mezcla de metodologías adecuadas para cada tipo de proyecto.
  • Procesos adecuados a cada tipo de proyecto, fase, ciclo o sprint (cualquiera que éste sea) con base en la arquitectura y tecnologías requeridas.
  • El uso de las herramientas de diseño, construcción y pruebas más apropiadas.
  • La gestión suficiente y apropiada sobre el grado de involucramiento de los interesados relevantes de acuerdo a la dificultad, complejidad o conocimiento de la solución propuesta.
  • La identificación y anticipación los cambios, riesgos, y acontecimientos importantes oportunamente.

 

“Las organizaciones y equipos de desarrollo deben estar capacitados para reconocer debidamente cuando deben seleccionar –inteligentemente– una u otra o la gestión de las metodologías de acuerdo al tamaño y características individuales de cada proyecto.”

 
Si has estado involucrado en algún proyecto de Metodologías Ágiles, ¿qué beneficios puedes destacar en comparación con las Metodologías Clásicas, o bien, cuál ha sido tu experiencia?
>_

¡Compártenos! -Blogging Together
Tal vez te interese:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

 Caracteres restantes