Dic 17 2008

Equipos de mantenimiento

Categoría: EquiposJuan @ 2:19 pm

Equipos de mantenimiento sí o no, esa es la cuestión.

Hablo de un escenario específico donde hay varios equipos en un proyecto y todos ellos trabajan por funcionalidades y no por componentes. Esto quiere decir que todos los equipos son capaces de trabajar en todas las áreas del proyecto y por tanto empezar y acabar la funcionalidad (o lo que es lo mismo, no hay equipos que sólo trabajan en la interfaz de usuario o sólo en la librería X, etc)

Antes de seguir, con mantenimiento me refiero a todos aquellos errores encontrados después de una iteración cuando la historia o al trabajo se le considera “hecho”. Si los errores se encuentran durante una iteración y están relacionados con el trabajo que se está llevando a cabo, éstos se arreglan de inmediato.

A los equipos que trabajan por funcionalidades se les asigna, como hemos visto, una funcionalidad entera (ya sabemos que ésta está dividida en puntos o historias en la pila de producto) que puede tocar todas los componentes del proyecto y, por tanto, esto nos lleva a que los equipos pueden tocar el mismo componente a la vez. Así que, si se descubre un bug, ¿qué equipo debe arreglarlo si los dos han cambiado el código?

La situación ideal es que cualquiera de los equipos se pidan voluntarios para hacerlo o áquel que lo haya encontrado, claro. Sin embargo, una situación más realista y frecuente, por desgracia, es que todos los equipos digan que cualquier otro tiene que arreglar el error (tirar balones fuera, vamos) Así que, ¿cómo podemos evitar esto?

La primera solución sería coordinar quién arregla los errores en una reunión donde haya representantes de cada equipo. En esta reunión se revisarían los errores encontrados y se asignarían (si no hay voluntarios) al equipo que mejor le venga dependiendo en su disponibilidad y su trabajo en ese área. El scrum de scrums suena como un buen candidato, ¿no? El punto negativo es que esta discusión puede llevar mucho tiempo dependiendo de la actitud de los equipos. Si no hay voluntarios la asignación a dedo puede ser acertada o no e incluso algún equipo puede negarse a coger algún error a pesar de ser el mejor candidato. No parece la mejor solución si los equipos no son muy colaborativos.

Otra solución sería establecer de antemano quién va a arreglar los errores que se encuentren, es decir, crear un equipo de mantenimiento que, por cierto, debe rotarse después de cierto tiempo (uno o varias iteraciones). De esta manera siempre hay un equipo que se hará cargo de los errores ya que es su única función en la iteración y se evita que los equipos no lleguen a un acuerdo sobre quién va a arreglar cierto bug.

Etiquetas: ,