Piensa globalmente, programa localmente: El secreto de los equipos remotos

Los equipos distribuidos y las oficinas remotas no van a desaparecer. La cuestión es si pueden formar parte de una cultura ágil creciente. Nosotros creemos que sí.

Dan Radigan Dan Radigan

El desarrollo ágil se pensó originalmente para equipos agrupados, o equipos ubicados físicamente juntos en la misma oficina. Siguiendo la idea de que "el método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara", los primeros equipos ágiles estaban orientados a trabajar juntos en proximidad.

Pero, hoy en día, la mayoría de empresas tienen algunos, o varios, equipos distribuidos. No se trata de una simple tendencia: es de sentido común. Los equipos distribuidos pueden trabajar sin descanso en proyectos, y los buenos talentos se pueden encontrar en mercados menos competitivos. (Por no mencionar que el talento se conserva fácilmente si no exige un traslado no deseado). Sin embargo, las ventajas de los equipos distribuidos presentan algunas concesiones. A muchos equipos distribuidos les cuesta adoptar la práctica ágil de las interacciones cara a cara.

Estos son otros retos para los equipos de software distribuidos:

  • Coordinación en varias zonas horarias
  • Crear confianza cuando no todo el mundo se encuentra en la misma oficina
  • Colaborar entre varias culturas de desarrollo diferentes
  • Planificar reuniones o conversaciones informales cuando ambos equipos están conectados al mismo tiempo únicamente durante unas horas (o menos)

Estos son problemas reales, pero no irresolubles. Veamos algunas estrategias para reducir la distancia entre las oficinas locales y remotas, e ideas para mitigar otros posibles problemas.

Cómo estructurar equipos globales

Una buena arquitectura de software dicta el diseño modular, así que estructura tus equipos del mismo modo. Las oficinas deberían ser autosuficientes en el desarrollo de una sola pieza de tecnología, lo cual reduce la cantidad de colaboración necesaria con los equipos de otros husos horarios y les da una mayor autonomía en general. Cuando un proyecto requiere la colaboración de equipos de distintos lugares, se pueden centrar en sus puntos de integración y sus API.

El papel de las revisiones del código también es importante. Dado que las personas están conectadas a horas diferentes, la distribución del conocimiento del código entre oficinas simplifica la asistencia y el mantenimiento. Si surge un tique de producción cuando el equipo no está conectado, otra oficina puede entrar en juego para ayudar y resolver el tique, gracias al conocimiento obtenido en las revisiones del código entre equipos o entre ubicaciones.

Crear confianza

Es importante en cualquier programa, sobre todo en programas ágiles, para que haya un buen entendimiento en el equipo. Las relaciones personales generan confianza, minimizan las expectativas fallidas, facilitan la autoorganización y suben la moral. En la oficina, dedica un tiempo a conocer a todos los miembros del equipo. Y, en la mayor medida posible, haz lo propio con las personas de oficinas remotas con las que trabajas. Las relaciones personales son importantes. Cuanto más se fortalecen, más posibilidades hay de ver a esos compañeros como iguales, en lugar de como a trabajadores lejanos de no sé dónde, sin una buena relación.

Pro Tip:

En Atlassian, todos los nuevos empleados escriben un blog de introducción en nuestra instancia interna de Confluence, la herramienta de colaboración de contenidos de Atlassian. El blog introduce al nuevo empleado profesional y personalmente (aficiones, intereses, familia, etc.), lo cual ayuda a acortar la distancia entre oficinas. Cuanto más nos conozcamos como personas, más sólidamente trabajaremos como equipo. 

Por encima de todo, nada sustituye a una reunión cara a cara. Los miembros del equipo de cada oficina sacarán provecho de estas conversaciones, ya sea mediante videoconferencias o visitas a las oficinas remotas.

Las videoconferencias tienden un gran puente entre los equipos, sobre todo los equipos ágiles distribuidos. Sin embargo, los equipos que recurren a este sistema deben ser conscientes de sus limitaciones.

  • Las videoconferencias solo permiten abrir una pequeña ventana de comunicación, mientras que trabajar en la misma oficina da mucha visibilidad del mundo de los demás: dificultades, logros y oportunidades.
  • Se pueden dar incidencias de red entre oficinas con un vídeo o audio entrecortados o difíciles de entender.
  • La mayoría de gente sigue pensando en las videoconferencias como momentos programados. Lleva tiempo instaurar una mentalidad de utilizar las videollamadas para conversaciones informales espontáneas.

Para paliar algunas incidencias de las videoconferencias, anima a los miembros del equipo a que mantengan sesiones semanales de videollamada de tú a tú. Pueden ser menos formales y ayudan a compartir conocimientos fácilmente de manera informal. Los compañeros de equipo pueden usar estas oportunidades para afianzar relaciones y trabajar mejor juntos. 

Recuerda: el tono, la voz y los gestos son una parte importante de la comunicación. El tiempo dedicado al cara a cara ayuda al equipo a conocer más fielmente a sus colegas remotos, lo cual en el futuro hace que las videoconferencias sean más eficaces.

Ya sea una casa o un producto, tienes que definir la visión y perfilar los temas estratégicos. Piensa en los temas como áreas prioritarias para toda la organización. ¿En qué quieres centrarte el próximo trimestre, los próximos 6 meses y el próximo año? ¿Dónde quieres dedicar tiempo y emplear recursos? ¿Rendimiento, experiencia del usuario, seguridad, nuevas funcionalidades competitivas —¿jacuzzi alguien?— o en una combinación de todo ello?

How we do it:

Los traslados son misiones temporales en un cargo o ubicación nuevos que duran desde unas semanas hasta un año. No solo son una forma efectiva de afianzar relaciones y transmitir el espíritu en el equipo, sino también de conseguir que los empleados conozcan otra cultura. 

Crea una cultura de desarrollo unida

Hay cuatro maneras sencillas con las que los equipos pueden trabajar en varias zonas geográficas más fácilmente y compartir una cultura de desarrollo conjunto:

  • Sobrecomunicar decisiones en todas las zonas geográficas
  • Minimizar la fricción para configurar un entorno de desarrollo
  • Definir claramente qué se considera finalizado
  • Crear directrices para rellenar informes eficaces de bugs

Entremos en detalle.

En primer lugar, al pasar de una oficina en una misma ubicación a una cultura distribuida, la comunicación es mucho más difícil. El primer reto es formar al equipo para entender que, cuando se toman decisiones, hay que comunicarlas. Parece obvio, pero es fácil olvidarse de ello. A menudo, se toman decisiones importantes en conversaciones en el pasillo, reuniones informales del equipo local o de manera personal. Además, puede ser fácil desechar las decisiones pequeñas como poco importantes. 

Comunica incluso los detalles más insignificantes hasta que ambas oficinas encuentren un clima saludable.

Cuando se tomen decisiones, todo el mundo en cada oficina necesita entender la decisión e, idealmente, por qué se ha tomado. No uses el correo electrónico. En ese medio es fácil perder información importante. Usa un sistema de gestión de contenido, como una wiki, donde los miembros del equipo pueden buscar actualizaciones de todo el equipo fácilmente (y recibir notificaciones de actualizaciones por correo electrónico o en su herramienta de chat de grupo). Los retrasos debidos a que los miembros del equipo trabajan con información desfasada, hasta que se encuentran con un callejón sin salida y empiezan a preguntar, cuesta al equipo mucho más tiempo que compartir la información proactivamente.

En segundo lugar, los entornos de desarrollo coherentes para todo el equipo simplifican el trabajo conjunto y el seguimiento de incidencias. Dedica tiempo a crear una sencilla guía de introducción y evita las fricciones del primer día automatizando la configuración todo lo posible.

En tercer lugar, cuando se trabaja entre oficinas, tener unos criterios claros en torno a la definición de "hecho" facilita la gestión de las expectativas y afianza las relaciones entre equipos. Una definición precisa de "hecho" suprime la ambigüedad en el trabajo. Por ejemplo, cuando se lanza una versión en la que participan varios equipos, deja claro qué significa que esté "completa": el código escrito, la solicitud "pull request" creada, y el código revisado, probado y combinado en la rama adecuada.

Por último, un desarrollo distribuido significa que no todo el mundo está conectado cuando surgen problemas. Tener directrices claras para los informes de bugs y la solución de problemas logra que el seguimiento de incidencias sea fácil para cualquier miembro del equipo. La revisión del código y buenas pruebas automatizadas también comparten conocimiento sobre la base de código y permiten al equipo implicado realizar la corrección y comprobar que el cambio no tiene efectos inesperados. Por ello, ningún equipo se convierte en un bloqueador. 

Maximiza las horas doradas

Todos los fotógrafos saben que las horas doradas (justo antes y después del amanecer y del anochecer) son unas de las mejores horas para fotografiar el paisaje. Las horas doradas de los equipos de software distribuido son cuando los equipos local y remoto están en sus respectivas oficinas al mismo tiempo. Cuando todos los equipos se encuentran en la oficina, es un buen momento para las reuniones rápidas.

For teams that share work between time zones, stand-up is a great time to pass the baton so the team just coming online can pick up where the other team left off. And holding stand-up via video conference makes it easy to ask questions and get up to speed so everyone is off and running as soon as the meeting is done.

En algunas oficinas que se encuentren a mucha distancia, estas reuniones causan algún tipo de dificultad para uno de los equipos. (¿Levantarse a las cinco de la mañana para reunirse con el otro equipo? No, gracias). Alterna las horas de la reunión para que sea una carga compartida en lugar de someter continuamente al mismo equipo a unas horas intempestivas, lo cual sería un método seguro para minar su moral. Supervisa atentamente la interacción de todo el equipo en las reuniones rápidas. Si hay presión innecesaria o no está siendo muy útil para el equipo, los miembros empezarán a desconectar hasta dejar de escuchar y participar. Una reunión rápida no tiene que ser una reunión diaria en absoluto. Reúnete con el equipo remoto unas cuantas veces a la semana y usa el resto de los días para una reunión rápida local. Asimismo, las reuniones rápidas tampoco tienen que ser una rutina matutina. La hora que sea más conveniente para todos los implicados es la mejor hora del día. 

Todos los equipos están distribuidos

In a distributed organization, the reality is that every team is remote. All teams need to adapt and learn how to share work between offices, communicate effectively, and grow a consistent culture across geographies. The most effective teams don't just make the remote office conform to the headquarter's culture because they understand that every office can learn something from the others. They seek to find and share successful practices across all locations. They also embrace "we" rather than an "us vs. them" culture.

De hecho, la realidad es que se encontrarán distribuidos de vez en cuando. Los viajes de trabajo sacan a miembros del equipo de la oficina y trabajar en casa ocasionalmente puede ayudar a los empleados a conciliar mejor la vida laboral y personal. Los equipos que adoptan estructura y transparencia se escalan más eficazmente. Cuando tus proyectos se escalan más allá de la oficina, la cultura estará preparada para actuar adecuadamente de manera natural, es decir,