DSN_XP y los métodos ágiles

 ¿Metodologías ágiles realmente diferentes?


Documento de posición para el taller OOPSLA 2003
Jens Coldewey
Consultoría Coldewey
correo electrónico: jens_coldewey@acm.org 
http://www.coldewey.com

Enfoques de una metodología

Además de considerar los procesos que una metodología supone utilizar, otro tema de interés para estudios es el modelo que subyace a la metodología. Aunque esto está estrechamente relacionado con el valor del sistema, el modelo no soporta juicio ético, como lo hace un sistema de valores.

Hay dos modelos populares para proyectos: el modelo de control y el modelo sistémico.  El modelo de control asume que hay roles de dirección centralizados en un proyecto, individuos capacitados que planifican y gestionan el proyecto. Estos roles incluyen el gerente de proyecto, el arquitecto, el jefe de programación, etc. Con este enfoque, el éxito y el fracaso del proyecto depende principalmente del desempeño de estos roles de control. Me referiré a estos roles como los "gerentes", aunque esto incluye todo tipo de gestión y control. 

Metodologías que utilizan este enfoque usualmente se concentran en los elementos que apoyan esta estructura:
  • Mejorar la comunicación entre los gerentes y los miembros del equipo operativo, como programadores.
  • Proporcionar estructuras de control y presentación de informes para permitir que los gerentes obtengan una buena imagen del estado del proyecto.
  • Asegurar que el trabajo operativo se realice de la manera más uniforme posible para facilitar la planificación, la predicción y control. Se supone que los miembros del equipo desempeñan determinados roles y se intercambian "recursos" capaces.
  • Clara separación de responsabilidades.
El último extremo de esta apreciación es Frederick Taylors, Scientific Management que estableció el terreno para el impulso económico del siglo pasado. La mayoría de los procesos tradicionales siguen este modelo.

Un enfoque alternativo es ver un proyecto como un sistema complejo. Los sistemas complejos tienen algunas características que las estructuras de comando y control no tienen: Su comportamiento es difícil de predecir y son muy flexibles. Controlar un sistema complejo no significa predecir y controlar cada acción única en él. Más bien significa comprender la estructura y las interrelaciones del sistema y configurarlos para que el sistema se adapte a las necesidades. 

El pensamiento sistémico proporciona el conjunto de herramientas apropiado para este tipo de enfoque.
Metodologías basadas en el pensamiento sistémico, ya sea de forma consciente o no, muestran algunas propiedades típicas:
  • Pocas reglas. La mayoría de las reglas establecen circuitos de retroalimentación y comunicación para asegurar que todas las partes del proyecto todavía se dirigen hacia el objetivo del proyecto.
  • La retroalimentación y la comunicación están diseñadas para ser lo más eficientes posible, en lugar de ser rastreable o controlable.
  • Pocos o ningún rol centralizado o jerárquico. Se asume que los miembros del equipo están bien capacitados, personas responsables que sean capaces de organizarse.

Comparación de los enfoques de las metodologías ágiles

La siguiente lista comprueba a qué enfoque pertenecen las diferentes metodologías ágiles:

Desarrollo de software adaptativo: ASD 

Es la única metodología que se basa explícitamente en la teoría de los sistemas adaptativos complejos, se limita a establecer un circuito de retroalimentación. ("Especular, colaborar, aprender") y configurar el entorno para un trabajo de proyecto eficiente. Un representante clásico del enfoque sistémico.

Metodologías Crystal:

El principal punto en común de todas las metodologías Crystal es un taller de verificación de los procesos al menos dos veces por incremento. Además, Cockburn ofrece siete principios a observar en un proyecto. Los roles y las organizaciones solo se proporcionan como sugerencias. Otro ejemplo de enfoque de sistemas

Método de desarrollo de software dinámico: DSDM

Define roles y responsabilidades explícitos como núcleo de la metodología. Se provocan bucles de retroalimentación para la entrega (entrega frecuente, todos los cambios son reversibles) pero no a nivel de proceso. Por tanto, DSMD utiliza un sistema de enfoque para dejar crecer el software pero un modelo de control para gestionar el proyecto.

Programación extrema: XP

Usa solo unas pocas reglas para configurar un entorno en el que el software puede crecer. Por tanto, la parte técnica utiliza claramente un enfoque de sistemas. En cuanto a la metodología XP mostró un desarrollo interesante en los últimos años. Aunque la metáfora de Kent Beck de "Aprender a conducir" apuntaba hacia un modelo de sistemas, declaraciones iniciales como "O haces todo como está escrito o no haces XP" a menudo se interpretaba como una señal para un modelo de control. Al darse cuenta de que estas declaraciones llevaron a XP en una dirección no deseada, la comunidad ahora acuerda la adaptación regular del proceso. Por lo tanto, XP puede ser considerada una metodología de sistemas en la actualidad.

Desarrollo impulsado por Funcionalidades: FDD 

Instala el rol de programador jefe y utiliza diseños basados en actualizaciones de frente al usario. Por lo tanto, FDD en mi percepción claramente utiliza un enfoque de control en lugar de utilizar una visión sistémica, aunque definitivamente es un proceso ligero.

Desarrollo Lean: 

La mayoría de las prácticas técnicas de LD son similares a lo que XP encontró útil, así que técnicamente LD también se basa en un modelo de sistemas. La gestión está muy centrada en auto organización y retroalimentación: indicadores para un modelo de sistema también.

Scrum: 

Define un ciclo de retroalimentación central como instrumento de control principal  que identifica a Scrum como metodología sistémica. Esto se suma al hecho de que scrum define pocos roles con el papel central del "Scrum Master" quien tiene la responsabilidad principalmente de facilitar el proceso en lugar del entregable.

Una conclusión sugerente

Sugiero definir el desarrollo ágil como una metodología basada en una visión sistémica del desarrollo de software. Esta visión conduce a los principios ágiles, así como a muchas metodologías ágiles.

Usar esta definición significaría reevaluar la comprensión actual de qué las metodologías son ágiles y las que no lo son. Según la lista anterior, esto reduciría el "completamente ágil" a metodologías como ASD, Crystal, XP en su forma actual, Lean Development y Scrum. DSDM se considerarían una metodología "técnicamente ágil" y la FDD se consideraría un proceso tradicional pesado.

No hay comentarios: