Ene 16 2009

Niveles de decisión

Categoría: Equipos, GestiónJuan @ 9:20 am

Cuando hablamos de organizaciones ágiles, métodos, etc., siempre suele haber distintos temas que aparecen regularmente en la conversación: integración continua, TDD, automatización, test unitarios… Sin embargo, cuando alguna metodología ágil es introducida en una organización normalmente hay confusión sobre que debería ser obligatorio y qué debería ser recomendado y quién debería promocionar o incluso exigir las nuevas prácticas o ideas. ¿Deberían ser la compañía per sé, los equipos, los gerentes (jefes de proyecto, dueños de producto…), etc.?

En mi opinión nada es blanco o negro y siempre hay muchos niveles de grises en el medio:

  1. Hay ciertas prácticas obligatorias que deberían ser decididas a nivel de compañía por alguien con suficiente poder de decisión al hablar de este nivel. Estas prácticas deberían ser seguidas por todo el mundo y los equipos o los individuos no deberían discutir sobre ellas. Por ejemplo, el uso de una herramienta de control de código (SVN, CVS, GIT, etc.) para cualquier proyecto de desarrollo de software. No creo que nadie esté en desacuerdo con la obligatoriedad de esta herramienta al desarrollar software. En mi opinión, lo mismo debería pasar con la integración continua, los test automáticos y un sistema de control de errores.
  2. Otras prácticas deberías ser decididas por el gerente de un producto aunque la idea pueda venir de abajo a arriba. En esta categoría, la decisión es tomada por el gerente ya que su decisión afecta a todo el producto (y no sólo un equipo si hay varios equipos trabajando para el producto) Esta persona debe decidir basándose en el esfuerzo que supondrá para los equipos, tiempo, coste, calidad, etc. En esta categoría se encontraría, por ejemplo, el configurar los equipos por componentes o por funcionalidades, la definición de aceptación, etc.
  3. Muchas otras son decididas por el equipo y no deberían ser impuestas por los gerentes o la empresa. Los gerentes puede pedir objetivos a más alto nivel (tener algo listo para producción al final de una iteración, ningún error abierto entre iteraciones, etc.) El equipo decide sus propias prácticas en base a estos requerimientos a lo que considera importante a la hora de producir software. El equipo decide la definición de hecho para sus tareas, si deben usar o no TDD. Si deben hacer UT para todo el código o sólo para las partes más importantes, trabajar por pares o no o cuando hacerlo, hacer revisiones de código sistemáticas, por relevancia o no hacerlas… El equipo debe darse cuenta por si mismo como llegar a ser (reflexionando sobre sus propios errores) un equipo excelente sin ser dirigido o impuesto en “como hacerlo” por el gerente.

Etiquetas: ,