viernes, 4 de mayo de 2007

De XP, Scrum, RUP, CMM(I), Crystal Clear y otras yerbas



En la búsqueda de cómo optimizar nuestra forma de trabajo, nos encontramos frecuentemente ante la duda de "qué metodología aplicamos". Para dar respuesta a esa pregunta, y sabiendo de antemano que queremos movernos dentro de prácticas ágiles, nos fue útil tratar de conocer, evaluar y en algunos casos, ensayar, distintas alternativas.

Por el momento optamos por seguir algunas de las directivas propuestas por Crystal Clear, pero entendemos que el proceso de decidir qué metodología implementar es un trabajo constante y debe responder a las necesidades del negocio y al crecimiento del equipo.

Sin ser especialistas en el tema, describimos brevemente algunas comparaciones entre Crystal Clear (http://ideas3p.blogspot.com/2007/02/ms-all-de-las-capacidades-tcnicas-que.html) y otras metodologías.

eXtreme Programming (XP)

Crystal Clear comparte algunas características con XP (iteraciones cortas, entregas frecuentes, contacto directo con usuarios) pero es un poco menos demandante, es un buen punto de comienzo antes de lanzarse a abordar XP.

  • Las iteraciones en XP deben ser más cortas: de 1 día a 1 mes y no propone reglas sobre la duración de cada ciclo, a diferencia de CC que requiere que las entregas no se extiendan más allá de 3 meses, pero permite que la iteración pueda ser tan larga como el entregable.
  • XP requiere pair programming, CC no. Esto es porque XP apunta reducir el grado de libertad en las elecciones técnicas de los miembros del equipo para hacer las decisiones más efectivas. CC es más tolerante y flexible permitiendo al equipo adecuar sus propias convenciones a cada proyecto.
  • XP requiere tests automatizados con un gran conjunto de unit tests e integraciones varias veces al día. CC sólo recomienda lo primero y el período de integración puede variar según la complejidad de cada proyecto.
  • XP requiere un usuario como miembro del equipo, mientras que CC sólo promueve el “fácil acceso a los usuarios clave” con un mínimo de 1 hora a 1 semana de tiempo. Se busca el tiempo mínimo que permita satisfacer la seguridad del proyecto.
  • XP habla explícitamente de “simplicidad en el diseño y refactoring” como parte del largo término del desarrollo (a lo largo de todo el proceso). CC lo recomienda en las estrategias “Walking Skeleton” y “Rearquitectura Incremental”. Si bien CC aboga por diseños simples y refactoring, la duda es si esto tiene que ser un estándar de la metodología.
  • XP no requiere casi documentación, CC si. En términos de los 2 objetivos principales del “modelo de juegos cooperativos”

Scrum

Scrum se focaliza en 3 prácticas (además de tener a la comunicación como uno de sus pilares).

  • Time-Boxing: el subconjunto de requerimientos a ser desarrollados durante cada iteración se “congela” al principio de las mismas. Esto permite al equipo trabajar concentrados en los temas sabiendo que los mismos no van a cambiar.
  • Dynamic backlog: para compensar este “congelamiento” de requerimientos durante cada iteración, se lleva una lista de todo lo que resta por hacer. Esta lista puede cambiar cada vez que sea necesario. Al inicio de cada período el equipo revisa la lista, reprioriza los requerimientos, selecciona los que se van a desarrollar en esa iteración y los “congela” nuevamente.
  • Reuniones diarias: el equipo se reune cada día en una reunión muy rápida para comentar qué hizo el día anterior, qué va a hacer ese día y qué le resta por hacer.


Estas tres técnicas serían el paralelo de las tres principales prácticas de Crystal (entregas frecuentes, comunicación, reuniones de reflexión).


RUP (Rational Unified Process)

RUP es similar a Crystal en cuanto a su estructura. Ambos son “generadores de metodologías”
Los dos coinciden en que no hay un único proceso a aplicar en todos los proyectos.

Ambos recomiendan un crecimiento incremental de la aplicación usando desarrollo por iteraciones, buenas prácticas de testing, contacto cercano y feedback con los usuarios y manejo de riesgos.


Pero las diferencias de base se encuentran en los siguientes puntos:

  • RUP requiere definir una arquitectura, modelaje visual y uso de herramientas como puntos fundamentales. Crystal considera la arquitectura como propia de cada proyecto. Para el caso del modelaje visual, Crystal propone que el grado de detalle de la documentación es propio de cada proyecto y la documentación debe ser considerada como soporte y no como guía. Además, Crystal no cree en la necesidad de basarse en herramientas, sobre todo cuando éstas se usan para modelar.
  • Así como Crystal sostiene que cada metodología que se genere debe ser lo más simple, llana y eficiente que sea posible, RUP no declara la necesidad de características como estas.

CMM(I) - Capability Maturity Model Integration

Partiendo de la base que Crystal Clear no fue pensado para cumplir los requerimientos de CMM(I), muchas de las actividades que propone también son invocadas desde CMM(I), teniendo en cuenta que una de las principales diferencias es que Crystal se focaliza en proyectos mientras que CMM(I) apunta a organizaciones.

Por otro lado, pensar que una organización que certifica en CMM(I) pueda incorporar algunos puntos impulsados por Crystal es altamente probable, y puede ayudar a incrementar su eficiencia

Por ejemplo, ubicar al equipo en un espacio que permita una fuerte comunicación o adoptar las reuniones de reflexión no violan ninguna de las reglas de CMM(I). Tampoco lo hacen el apuntar a lograr seguridad personal, el tener fácil acceso a los usuarios expertos, el lograr un entorno tecnológico con testing automatizado o la práctica de integraciones frecuentes. Algunos puntos pueden llevar más trabajo, pero son totalmente aplicables.

Evidentemente una de las mayores diferencias reside en que CMM(I) está soportado por una organización que capacita y actúa como evaluadora, cosa que no ocurre con Crystal.

Y qué hacemos con todo esto ?

En nuestra experiencia de pequeña empresa "con inquietudes de hacer las cosas mejor", por el momento nos volcamos a tomar ciertos aspectos de algunas de estas metodologías ágiles, sin ajustarnos estrictamente a una en particular y siguiendo fundamentalmente la regla principal de Crystal Clear de evaluar en cada momento y para cada proyecto, qué herramientas conviene aplicar.

Suponemos que una evolución natural de la empresa y del equipo nos irá orientando a la adopción de prácticas más formales, como puede ser CMM(I), pero seguramente al momento de elegir cómo encarar nuestros trabajos seguiremos valorando la posibilidad de flexibilidad por encima de otras capacidades.

Para consultar a los que saben:

XP: http://www.salias.com.ar/articles.asp ; http://www.agilealliance.org/

Scrum: http://www.scrumalliance.org/

RUP: http://www-306.ibm.com/software/rational/

“Crystal Clear – A human powered methodology for small teams”, de Alistair Cockburn http://alistair.cockburn.us/index.php/Crystal_methodologies_main_foyer