Proyectos remotos: Confianza, libertad, respeto y colaboración

En los últimos días estuvimos inmersos en el desarrollo de un prototipo funcional, como parte del proceso de licitación de un importante proyecto para un cliente internacional (un documento de confidencialidad nos obliga a omitir nombres).

Nada sorprendente ahí; no estaría escribiendo acerca de esto si no fuera por los desafíos de la naturaleza del proyecto: el cliente era de una localidad muy remota, digamos que era de China (sí, así de lejos) y el equipo de desarrollo estuvo distribuido entre Santiago, Lima y Miami.

La comunicación directa —elemento clave para inyectar agilidad a cualquier proyecto— era limitada: nos separaban muchas horas de diferencia con el cliente. Entre el equipo de desarrollo también teníamos la limitación de no estar sentados programando codo a codo. Lo que sigue es una retrospectiva de cómo lo hicimos, y es un buen reflejo de cómo hacemos las cosas en Continuum en general.

Reuniones con el cliente

A pesar de que el cliente nos hizo saber que estaría disponible, el problema era la diferencia horaria: cuando ellos trabajaban, nosotros “dormíamos”, y viceversa. Entonces tuvimos que definir un horario para las reuniones que nos acomodara relativamente a todos: Lima, por ejemplo, tuvo que entrar a Skype a las 6:00 AM. Por suerte la última semana el cliente viajó a Santiago, lo que facilitó las cosas. Al final hicimos cuatro reuniones de una hora, dos via Skype y dos presenciales en nuestras oficinas en Santiago.

Estrategia

Tal como un director de cine reúne al equipo y los actores para leer el guión y tomar decisiones, cada uno de nosotros leyó los documentos, tomó sus propias conclusiones y luego nos reunimos en Google Hangout a conversar. Decidimos que el tiempo no alcanzaba para hacer todo, así que implementaríamos solo una porción que sirviera para cumplir las expectativas del cliente.

Dado que estábamos distribuidos en diferentes locaciones, para que todos estuviéramos en la misma página y para tener feedback lo más temprano posible se usó un mockup, que evolucionó en las dos primeras reuniones con el cliente, y que sirvió a cada uno para saber qué componentes construir e imaginar como se *integraría/comunicaría* con el resto del sistema.

Ambiente remoto colaborativo

Acá no hubo que hacer nada especial. Como parte del día a día, en Continuum usamos un conjunto de herramientas que nos permiten colaborar remotamente. No está de más mencionarlas:

HipChat es la herramienta que usamos para comunicación entre los integrantes de un equipo dentro de un proyecto. El proyecto es creado como sala (la mayoría de las veces pública) y el equipo es invitado. HipChat trae clientes para la mayoría de las plataformas (desktop y mobile), lo cual vuelve posible estar offline y recibir notificaciones para estar presente cuando se te necesite. Otra buena alternativa a HipChat es, por ejemplo, Slack.

Yammer es nuestro Facebook privado y plataforma de comunicación multiuso. Sirve tanto para preguntar/validar temas técnicos, como para enterarnos de lo último en noticias o relajarnos y lanzar bromas. También para hacer saber al resto del equipo Continuum a que horas llegamos a la oficina o si estaremos o no disponibles y a través de qué canales.

BitBucket o Github. Usamos Git para compartir y versionar el código. Tenemos nuestra cuenta gratuita en GitHub para los proyectos Open Source (como ActiveImporter) y una cuenta pagada en Bitbucket para los proyectos privados, que incluyen a la mayoría de clientes (aunque también proyectos propios como Get On Board o BeautifulLogs están hosteados allí).

Google Hangouts. A veces conversar o vernos las caras acelera la comunicación, así que usamos Hangout, aunque también hemos estado probando con las llamadas de video de HipChat (aún en beta). Si hay algo que mostrar, tanto Hangout como HipChat permiten compartir una porción de la pantalla. Hangout o Skype es usado para las reuniones frecuentes con los clientes cuando éstos no pueden pasar a la oficina.

Ambientes de desarrollo e IDEs

No hay una regla general; sin embargo, casi todos usamos lo mismo. Creo que lo que sucede acá —y que supongo pasa en otros lados— es que cuando tienes un equipo equilibrado técnicamente y con la frecuencia de comunicación que tenemos en Continuum, las herramientas y procesos se tienden a nivelar, pasando de uno para otro y evolucionando. Por ende todos terminan usando aquello que por consenso se ve como la mejor herramienta. Por otro lado compartir código (Git) y cambiar los equipos entre proyecto también obliga en forma natural a que igualemos los ambientes.

Cultura

Todo lo anterior forma parte de nuestro día a día en Continuum, y son habilidades duras del equipo. Sin embargo hay algo que suele pasar desapercibido, y que a mi parecer es lo que hace al equipo y a la empresa *especial*. Es aquello que hace que lo que parece difícil termine siendo fácil y lo que parece imposible se haga realizable.

Me refiero a habilidades como la confianza, la libertad y el respeto. Estos son conceptos abstractos, así que los voy a intentar materializar en el contexto de este proyecto, que personalmente me sirvió para ver a donde habíamos llegado como equipo en el transcurso de estos casi seis años.

Una vez que estuvimos de acuerdo sobre lo que haría cada uno, pusimos manos a la obra. En Miami se construyó la arquitectura MVC, en Lima se hizo todo el diseño UX / UI y en Santiago se construyeron las componentes 2D y se mantuvo la coordinación del proyecto (mail y reuniones presenciales con el cliente). Sin embargo, y en retrospectiva, nunca se consideró el que fuera un proyecto 100% remoto como un problema: sencillamente nos pusimos a trabajar.

Nuestro Bitbucket está integrado con HipChat, así es que cada commit en el proyecto aparece en la respectiva sala de chat. En los ochos días que nos tocó desarrollar hubo exactamente 106 commits: muchos fueron independientes, algunos resolvían conflictos y otros cambiaban/refactorizaban código del resto del equipo. Mirar la entrada del commit en HipChat servía para saber que cambios se hacían, y entre commits conversábamos los cambios, discutíamos y tomábamos más decisiones en contexto.

Las partes se construyeron/probaron por separado y en cierto punto se hizo la integración: a partir de ese punto, todos trabajamos sobre el mismo código. Decidimos un plazo fijo con su respectivo deadline y todos nos ajustamos a él. Si quedaban cosas afuera, entonces ajustaríamos el alcance del prototipo: la idea era evitar el típico stress de hacerlo todo en plazos apretados. Los últimos commits fueron todos trabajando en el código de todos.

La compilación, empaquetado y envío del entregable fue exactamente a la hora acordada. Una hora antes tuvimos el último Hangout, donde resolvimos en conjunto pequeños problemas de último momento y nos pusimos todos de acuerdo en las limitaciones. Halagos y felicitaciones siguieron a la entrega.

Conclusiones

No es fácil encarar un desafío como este y cumplirlo, hace falta tener habilidades técnicas, hablar buen inglés, saber gestionar en forma ágil, etc. Pero creo que incluso eso es sólo una parte: hace falta tener valores como colaboración, respeto, confianza y libertad incorporados en la cultura de tu empresa; tan incorporados que se dan por sentados, de modo que uno simplemente llega y se pone a escribir código junto a tu co-worker, sin importar el país o la zona horaria donde esté.

Y con éste, a la fecha hemos realizado al menos tres proyectos con naturaleza 100% remota: todos diferentes, con distintos grados de complejidad, pero con un denominador común: la cultura de Continuum haciendo posible lo que a muchos les parece imposible.

4 comentarios en “Proyectos remotos: Confianza, libertad, respeto y colaboración

  1. Ignacio

    Muy buen articulo. Gracias por todos los tips y compartir dicha experiencia. En cierto sentido, los envidio en Continuum: no solo por esas cualidades abstractas dificil de encontrar en Chile, sino la evolucionada metodología que han logrado construir todos estos años, influyendo fuertemente a la industria nacional a seguir sus pasos, pero ademas, tienen una dedicación increible a lo que hacen, y eso, es quizas la pieza clave: el amor al arte.
    Felicitaciones!
    Saludos

    Ignacio R.

    Responder

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *