Bueno, aquí sigo con la serie de posts sobre equipos de trabajo ágiles. Me voy a meter en un terreno más especulativo que en los posts anteriores. En éste y en los siguientes posts intentaré investigar y razonar como debemos configurar un equipo desde el punto de vista de su estructura o topología. El razonamiento lo haré desde la perspectiva de la toma de decisiones y la difusión de la información.
Partamos de la estructura más sencilla: un equipo sin estructura, en el que todos los miembros sean iguales, tomen las mismas decisiones y estén igual de informados que los demás. Llamaremos a esta estructura un equipo plano. La idea es que todos los miembros del equipo se comunican entre si de forma libre y van tomando decisiones individuales sobre la marcha. En la siguiente figura se muestra un esquema de como sería un equipo de este tipo con 5 miembros:
Los nodos representan miembros del equipo y los arcos líneas de comunicación posibles. Como se aprecia cada miembro del equipo tiene acceso directo a cualquier otro miembro, y no existen intermediarios innecesarios. Existen distintos modos de comunicación posibles:
- Peer to peer. Existe un único emisor y un único receptor. Es la más simple. Un ejemplo sería una conversación privada o una llamada de teléfono.
- Multicast. Se produce cuando la comunicación alcanza simultáneamente a un grupo escogido de miembros del equipo. Un ejemplo típico es cuando varios miembros se juntan y hacen una reunión, tal vez informal junto a la máquina de café.
- Broadcast. La recepción de la información es global entre todos los miembros del equipo. Puede ser por ejemplo una comunicación general o un mail masivo. Un ejemplo de broadcast es la difusión de información mediante ósmosis. Ésta se produce cuando tenemos a todos los miembros del equipo en la misma sala, y la información se difunde simplemente interceptando los comentarios de la gente que te rodea, o sea, lo que siempre se ha llamado «enterarte de lo que se cuece».
Otro punto importante es que parte de la comunicación se realiza mediante señales no verbales, tales como gestos y expresiones faciales. Además el compartir un mismo contexto y entorno agiliza la transmisión de información. Es por esto que se recomienda como buena práctica ágil el tener a todos los miembros del equipo en la misma sala. Ésto va a facilitar la transmisión de información y la toma de decisiones. De hecho existe alguna buena práctica en este sentido como el radiador de información que consiste en tener un tablero o pantalla, bien visible, con información importante del proyecto (estado del build, grado de avance del proyecto, retrasos, etc). La ventaja de la comunicación broadcast es su rapidez y que evita que se formen grupos de gente que no tengan información importante.
El punto de vista tradicional del agilismo, en lo que respecta a estructuración de equipos, consiste en tener un equipo de gente colocado en la misma sala, que aproveche los modos broadcast de comunicación tales como la ósmosis de información, reuniones diarias y usar técnicas como los radiadores de información. Hasta este punto todo parece sentido común, sin embargo la cosa no es siempre tan bonita como lo pintan. De hecho yo siempre me hago la misma pregunta, ¿cómo de grande puede ser un equipo con estructura plana? En la literatura ágil se suele dar una cifra de un máximo entre 9 o 12 personas. Pero, ¿por qué esto es así? ¿Cómo escala la productividad de un equipo plano en función de su tamaño?¿Qué pasa si realmente necesito un equipo de más de 12 personas debido al tamaño y tiempos de entrega de mi proyecto?¿Tendré que renunciar al agilismo en este último caso? Intentaré explorar estos temas.
Partamos de un modelo sobre como tomamos decisiones. No pretendo que sea un modelo exacto, pero si aproximado, y aunque no tengo datos cuantitativos reales, al menos puedo basarme en mi experiencia. Suponemos que tenemos un tiempo máximo para tomar una decisión, pasado ese tiempo la utilidad de la decisión se desvanece. Este tiempo máximo puede depender del tipo de decisión al que nos enfrentemos. Por ejemplo, si es una decisión de diseño de software podemos tener un par de horas de tope, o si es una decisión sobre como llamar a la siguiente clase que vamos a codificar podemos tener un tope de unos minutos. Para tomar decisiones necesitamos un flujo de datos entrantes que nos informen del estado del mundo. De ese flujo de datos debemos descartar lo que es irrelevante, la información duplicada, valorar posibles falsedades y errores en la información, etc. Esta tarea de filtrado normalmente la hacemos inconscientemente y no la percibimos. Mi idea es que cuanto más flujo de datos tengamos más tardaremos en tomar una decisión acertada. Veamos el siguiente gráfico:
Como vemos al principio nos llega poca cantidad de información, por lo que podemos filtrarla rápidamente, de hecho podemos filtrar y tomar la decisión antes de que nos lleguen más mensajes del exterior. A esta zona le he asignado un tiempo de toma de decisión constante, ya que no se nos «atasca» la información entrante. Si aumentamos el flujo de información vemos que cada vez nos cuesta más filtrar y separar lo que es importante de lo que no lo es, por eso el tiempo va aumentando. Tal vez no aumente linealmente como en la figura, pero aumentará. Sin embargo todavía podemos tomar la decisión antes de que el plazo expire. Finalmente llegamos a una zona donde simplemente no nos da tiempo de analizar todo ya que expira el plazo, en estos casos nos forzamos a tomar una decisión porque «no tenemos tiempo», decisión que tiene mayor riesgo de ser equivocada. Como siempre todo esto depende de la persona en cuestión que tome las decisiones, en función de experiencia y capacidad algunas personas podrán procesar la información más rápidamente que otras. De nuevos nos encontramos con una de las máximas del agilismo: los miembros de tu equipo deben tener talento, poténcialos.
Os estaréis preguntando que tiene todo esto que ver con la organización de un equipo. Muy sencillo, la forma en la que esté organizado el equipo impacta en como crece este flujo de información en función del tamaño del equipo. En el caso de un equipo con estructura plana, cada miembro recibe un flujo de mensajes de todos los demás miembros, por lo tanto el flujo de información entrante aumenta al menos linealmente con el tamaño del equipo. Si juntamos este hecho con el modelo presentado anteriormente nos damos cuenta que los equipos con estructura plana pierden eficiencia rápidamente conforme aumenta el tamaño de éste. En la siguiente figura podemos ver un esquema de como sería:
Conforme el tamaño aumenta, el flujo entrante de información aumenta igual de rápido, esto hace que el tiempo de filtrado de información aumente aún más rápido hasta alcanzar el límite de tiempo de decisión, a partir del cual la calidad de las decisiones degenera debido a las «prisas» y «sobrecarga» y la productividad del equipo disminuye. Cuando estamos todavía en la zona de carga baja añadir un miembro al equipo incrementa la productividad linealmente ya que el tiempo de filtrado sigue siendo constante. Cuando entramos en la zona intermedia, la productividad todavía aumenta pero menos, ya que el tiempo de filtrado de información va aumentando. Cuando alcanzamos la zona límite, donde no cumplimos con el tope máximo de tiempo, añadir un miembro más al equipo sólo empeora las cosas. Como vemos los equipos con estructura plana no escalan bien con el tamaño. Una forma sencilla de arreglar esto es poner personas con más capacidad en el equipo, pero esta medida tiene sus límites.
Otro tema a tener en cuenta es que si bien muchas decisiones son individuales otras conciernen al equipo y al proyecto en su conjunto. Las formas más básicas de tomar decisiones de equipo son las siguientes:
- El jefe. Existe una persona con la responsabilidad y autoridad para tomar decisiones globales.
- Comité de sabios. Un subconjunto pequeño de los miembros más expertos del equipo toma las decisiones.
- Democracia. Se vota y gana la mayoría, ya sea simple o absoluta.
- Consenso. Todo el mundo debe estar de acuerdo con la decisión.
Los modelos de democracia y consenso escalan mal con el tamaño del equipo. En un modelo de decisión democrático se genera un debate de cara a la votación, si el tamaño del grupo es grande se vuelve a producir la sobrecarga de información o bien el voto «desinformado». El modelo de consenso escala aun peor ya que cuanto más grande sea el equipo más dificultad existirá para poner de acuerdo a todos. Por otro lado en equipos pequeños estos modelos funcionan bien ya que aumentan la calidad de las decisiones y la moral del grupo.
El modelo del jefe puede minar la moral del equipo y puede ocurrir que la persona a cargo no tenga la capacidad necesaria para tomar las decisiones. También puede desembocar en dinámicas viciosas como la explicada en un post anterior. Es mejor escoger a alguien de mucha confianza y muy respetado para este rol.
En cualquier caso siempre es necesario, tanto para tomar decisiones individuales, como de equipo, que los miembros de éste tengan responsabilidad e iniciativa. Por otro lado, el tener especialistas, en vez de personas multidisciplinares en tu equipo, crea la dinámica de que cada uno toma decisiones para optimizar su «trozo de responsabilidad» y no el conjunto global. De hecho al ser especialistas y no entender el trabajo de los demás, son incapaces de tomar decisiones globales. Esto es especialmente importante si usas el modelo del jefe o de comité de sabios. Éstos deben ser responsables, multidisciplinares y tener iniciativa.
Con todo esto podemos empezar a entrever algunas guías para montar equipos con estructura plana:
- Si puedes, coloca a tu equipo en la misma sala, aprovecha la ósmosis de información y usa radiadores de información.
- Tu equipo no debe ser muy grande ya que sobrecargarás de información a los miembros de éste, y su eficiencia tomando decisiones disminuirá.
- Contrata gente con talento para tu equipo, no solo serán más productivos, sino que admitirán mayor flujo de entrada de información, lo que permitirá que tu equipo escale mejor, pudiendo tener equipos grandes.
- Los miembros del equipo deben ser responsables ya que sobre ellos recae el tener que tomar decisiones.
- Monta equipos multidisciplinares, y si es posible que los miembros de éste también sean multidisciplinares. Ésto evita errores y habilita a más gente participar en la toma de decisiones globales al equipo.
- Si el equipo es pequeño usa consenso o democracia, si ya tiene cierto tamaño es mejor un comité de sabios.
En la otra cara de la moneda, no deberías montar un equipo con estructura plana si:
- Tienes un equipo distribuido en distintos lugares de trabajo.
- El proyecto es grande y por lo tanto necesitas un equipo con un tamaño mayor al soportable por una estructuración plana.
- Los miembros de tu equipo no tienen mucha experiencia o quizás les falta un poco de talento o responsabilidad.
Pero todos sabemos que a veces los proyectos son grandes, la gente no está en la misma sala o simplemente no tienen el nivel de responsabilidad o capacitación. ¿Qué hacemos? Si es un problema únicamente de responsabilidad y capacitación ve pensando en cambiar de miembros de equipo. Si es un tema de tamaño y localización piensa en cambiar la estructura de tu equipo. Este último aspecto lo exploraremos en futuros posts.