Crystal Clear, una forma de trabajo

miércoles, 14 de febrero de 2007

Más allá de las capacidades técnicas que tenga un equipo, el desafío más importante es encontrar una dinámica de trabajo que lo haga más eficiente. La experiencia, en nuestro caso, nos llevó a adoptar decididamente Metodologías Agiles en el proceso de desarrollo, para lo cual, fuimos (y continuamos) experimentando distintas posibilidades.
Una de las guías que nos ha dado buenos resultados fue Crystal Clear, que descubrimos hace un par de años en el libro “Crystal Clear – A human powered methodology for small teams, de Alistair Cockburn.

Aquí, algunas de sus características:


Qué es Crystal Clear ?

Crystal Clear no es una metodología en si misma sino una familia de metodologías con un “código genético” común.
La idea es poder armar distintas metodologías para distintos tipos de proyectos. Cada proyecto y organización usará este código genético para generar su propia metodología.
El nombre Crystal deriva de la caracterización de los proyectos según 2 dimensiones, tamaño y complejidad (como en los minerales, color y dureza).
Por ejemplo, Clear es para equipos de hasta 8 personas, Amarillo para equipos entre 10 – 20 miembros, Naranja para 20 a 25 personas, etc.



El Código Genético


El código genético consiste en:

1. Un “modelo de juegos cooperativos

Este modelo ve al desarrollo de software como una serie de partidos que consisten en inventar y comunicar. Cada partido es diferente y tiene como objetivo entregar software y prepararse para el siguiente juego. Esto permite al equipo trabajar concentrado y en forma efectiva con un objetivo claro cada vez.


2. Prioridades

Crystal Clear establece un conjunto de prioridades y principios que sirven de guía para la toma de decisiones


  • Eficiencia en el desarrollo: para hacer que los proyectos sean económicamente rentables
  • Seguridad en lo que se entrega
  • Habitabilidad: hacer que todos los miembros del equipo adopten y sigan las convenciones de trabajo establecidas por el equipo mismo.



3. Propiedades

  • Frecuencia en las entregas: entregar al usuario funcionalidad "usable" con una frecuencia de entre 2 semanas y no más de un mes.
  • Comunicación: Crystal Clear toma como uno de sus pilares a la comunicación. Promueve prácticas como el uso de pizarrones, pizarras y espacios destinados a que todos (miembros del equipo y visitas) puedan ver claramente el progreso del trabajo
  • Crecimiento reflexivo : es necesario que el equipo lleve a cabo reuniones periódicas de reflexión que permitan crecer y hacernos más eficientes.

    Estas tres propiedades son "obligatorias" para Crystal Clear, las siguientes pueden agregarse en la medida de las necesidades de cada grupo y proyecto

  • Seguridad personal: lograr que cada miembro del team pueda sentirse cómodo con el trabajo y el entorno
  • Concentración: las entregas frecuentes permiten que cada desarrollador puede enfocar de a un problema por vez evitando dispersiones.
  • Fácil acceso a usuarios clave: tratar de hacer que el usuario sea una parte más del equipo es fundamental para ir depurando errores de manera temprana.
  • Entorno técnico con: i - Testing automatizado (incorporación, por ejemplo, de UnitTest) - ii. Integración frecuente (uso de herramientas específicas como Cruise Control)

4. Principios

  • El grado de detalle necesario en documentar requerimientos, diseño, planeamiento, etc, varía según el proyecto
  • Es imposible eliminar toda documentación pero puede ser reducida logrando un modo de comunicación más accesible, informal y preciso que pueda ser accedido por todos los miembros del equipo.
  • El equipo ajusta constamente su forma de trabajo para lograr que cada personalidad encaje con los otros miembros, con el entorno y las particularidades de cada asignación


5. Estrategias

Ni las estrategias ni las técnicas son mandatorias para Crystal Clear. Pero es bueno tener en cuenta algunas de ellas al momento de empezar a trabajar.

Tres de las estrategias que están más relacionadas son las de apuntar a tener "Victorias Tempranas", arrancar el desarrollo de lo que se denomina un "Esqueleto que Camine" y pensar siempre en hacer "Rearquitectura Incremental" van de la mano.
El poder arrancar el proceso a partir de un esqueleto sobre el cual se irá agregando funcionalidad en cada una de las entregas ayuda a que se vean los avances desde el comienzo (aunque sea una simple pantalla de ABM que se conecta con la base de datos y muestra un solo dato). A medida que se avanza en el proceso, la rearquitectura permitirá ir agregando más "cuerpo" al esqueleto inicial.

Todas describen una forma de tomar ventaja del desarrollo incremental para establecer valor desde el principio.





6. Técnicas

Igual que con las estrategias, hay una lista de técnicas propuestas por Crystal Clear, de las cuales se pueden ir tomando las más convenientes según el momento en que se encuentra el proceso de desarrollo del proyecto.

Las reuniones diarias (introducidas por la metodología Scrum) acompañan el seguimiento y mantienen el foco en el próximo paso a seguir, y también permiten la discusión productiva de líneas a seguir.

Las reuniones de reflexión periódicas son fundamentales para que los miembros del equipo se expresen abiertamente, para revisar el trabajo hecho y evaluar qué cosas dan resultado y cuáles no o de empezar a trabajar.

Todo esto permite ir armando una metodología de trabajo que se adecue al equipo, el proyecto y los tiempos que se manejen.



En Resumen


La guía de trabajo que presenta Crystal Clear es altamente recomendable para equipos pequeños. Da flexibilidad y prioriza la parte humana (como todas las Metodologías Agiles), apuntando a lograr eficiencia, habitabilidad y confianza en los miembros del equipo.
Presta especial importancia a la ubicación física del grupo, donde la comunicación cumple el principal rol. La entrega frecuente de código confiable y "funcionando" mantiene el foco y evita distracciones.

El equipo es el que elige qué técnicas aplicar según lo que consideren apropiado en cada proyecto.

Para ver más sobre Crystal Clear:

http://alistair.cockburn.us/index.php/Crystal_methodologies_main_foyer