lunes, 8 de septiembre de 2014

Un punto de encuentro entre Agile y GTD

Tal vez se trate sólo de una ocurrencia. Tal vez los puristas o mayores conocedores de ambos conceptos puedan poner objeciones a mi reflexión, pero hace un par de días se me vino a la mente una conexión inesperada, una explicación común a la eficacia de ambas técnicas.

Agile es una filosofía, y un conjunto de metodologías, de Ingeniería Software que, siguiendo los principios del Agile manifesto, pone el foco en ciclos muy cortos de especificación, desarrollo y prueba de software, en permanente contacto con el cliente y con amplia libertad por parte de los programadores que son más bien liderados que dirigidos en el proceso de conseguir el sistema.

Entre las técnicas de actuar típicas de estas metodologías, y aún existiendo diferencias y variantes entre las diferentes implementaciones como Scrum, eXtreme Programming, Crystal Clear, etc se encuentran:
  • Interacción continua con el cliente/usuario

  • Requisitos recogidos en forma de 'user stories'

  • Alcance global del sistema expresado como un conjunto de 'user stories' (el backlog)

  • Iteraciones muy cortas (Sprints, en terminología Scrum)

  • Coordinación diaría mediante reuniones cortas, al inicio del día, de una duración de unos 15 minutos y generalmente de pie

  • La figura del jefe de proyecto se convierte más en un facilitador o coach que un auténtico mando
GTD (Getting Things Done) es, por el contrario, una metodología orientada a la productividad personal en cualquier tipo de ámbito. Una metodología que permite registrar y seguir tareas y proyectos personales, planificarlos y negociar esa planificación con uno mismo. Entre los elementos caracterizadores de GTD se encuentran:
  • Recopilación y registro de todas 'las cosas' (tareas) por hacer

  • Agenda con las tareas planificadas

  • Definición de proyectos para los casos en que conseguir un objetivo precisa un conjunto de acciones, en lugar de una sola

  • Revisión semanal de todos los temas
Aparentemente, son temas completamente diferentes pero, preguntándome acerca de por qué ambos conceptos son efectivos en sus campos respectivos, y utilizando en la reflexión mi experiencia en la aplicación personal que hago de una versión, cierto que algo descafeinada, de la metodología GTD para mi propia organización personal, he creído identificar un factor común y esencial, que justifica la productividad de ambas técnicas.

Ese factor, ese punto de encuentro, es el registro exhaustivo, la revisión periódica y la toma de decisión sobre lo que se debe hacer en el corto plazo.

Como se puede observar, hablo de un punto de encuentro, pero en realidad este punto de encuentro tiene tres elementos comunes

  • Registro exhaustivo: en el caso de 'agile' hablamos del backlog, el repositorio de 'user stories'. En el caso de GTD se trata del censo de tareas, especialmente lo que se denomina el 'archivo de seguimiento', pero también los proyectos y el 'archivo de consulta'. Cada uno en su campo, en ambos casos recogemos 'todo' lo que sabemos que tenemos que hacer.

  • Revisiones periódicas: en el caso de 'agile' nos referiríamos sobre todo a las reuniones diarias donde se repasa lo que se ha hecho el día anterior, lo que se tiene que hacer en el día actual y las dificultades actuales y, en menor medida, a la definición y seguimiento sprints. En el caso de GTD hablaríamos de la revisión típicamente diaria del 'archivo de seguimiento' y la revisión semanal del conjunto.

  • Corto plazo: en 'agile' las decisiones se toman de forma muy rápida, en las reuniones diarias pero tambiñen por la autonomía y capacidad de decisión que se otorga a los programadores. En el caso de GTD durante las revisiones frecuentes del Archivo de seguimiento y en las revisiones semanales. En ambos casos, se realiza el agendado o re-agendado de tareas, se ejecutan algunas sobre la marcha, etc.
Y ¿dónde está la virtud de estos tres elementos¿ ¿Por qué conducen a la productividad?

El registro evita el olvido. La revisión periódica sirve también de recordatorio e impulsa la decisión y el corto plazo lleva a la concreción y refuerza la decisión.

En resumen: consciencia y decisión/acción. Por un lado somos conscientes de todo lo que tenemos pendiente y, por otro, se impulsa a la acción inmediata, en el corto plazo, en acciones pequeñas y concretas.

En el caso de agile tenemos la visión completa en el 'backlog' pero, por otra parte esa visión completa se estructura en sprints y user stories. Las user stories son de tamaño relativamente reducido. Además, al existir reuniones diarias en que se repasan las tareas de un solo día, de lo que se habla son de temas de pequeño alcance y acción inmediata, programadas para el propio día o para un espacio de tiempo corto.

En GTD tenemos un conjunto de tareas. Cuando el objetivo se va haciendo grande toma la forma de proyecto, pero cada proyecto se descompone en tareas o, al menos, sabemos las siguientes tareas que tenemos que hacer para continuar con el proyecto. Y las decisiones se toman diariamente o, como mucho, en la revisión semanal. Además, las tareas se agendas,no son inconcretas, no son cuando 'me apetezca' sino en un instante concreto.

Esa consciencia de lo que hay que hacer y cuándo, y esa concreción e impulso a la decisión y a la acción, ejecutando acciones pequeñas, definidas, planificadas y en corto plazo, creo que constituyen la base de la productividad y realismo de ambas disciplinas.

Ambas son vacunas efectivas contra la ambiguedad, la divagación y la procastrinación.

¿Tiene sentido para el lector esta ocurrencia?