Pense globalmente, codifique localmente: o segredo de equipes remotas

Equipes distribuídas e escritórios remotos não estão desaparecendo. Mas eles podem fazer parte de uma crescente cultura ágil? Achamos que sim.

Dan Radigan Dan Radigan

O desenvolvimento ágil foi, originalmente, imaginado para equipes agrupadas ou equipes fisicamente localizadas no mesmo escritório. Ao manter a ideia de que "o método mais eficiente e eficaz de transmitir informações para e em uma equipe de desenvolvimento é a conversa feita pessoalmente", as primeirasequipes ágeisforam reunidas para trabalhar juntas e próximas.

Mas, hoje, a maioria das empresas tem poucas – ou várias – equipes distribuídas. Isto não é apenas uma tendência; faz sentido. Equipes distribuídas podem trabalhar em projetos o dia todo, e ótimos talentos podem ser encontrados em mercados menos competitivos. (Sem mencionar que o talento é facilmente mantido por não exigir uma realocação indesejável.) Mas os benefícios de equipes distribuídas também apresentam algumas desvantagens. Para muitas equipes distribuídas, é difícil adotar a prática ágil de interações face a face.

Outros desafios que surgem para as equipes de software distribuídas:

  • Coordenar fusos horários
  • Criar um relacionamento quando as pessoas não estão no mesmo escritório
  • Colaboração entre culturas de desenvolvimento diferentes
  • Agendar reuniões ou conversas informais quando as equipes estão online ao mesmo tempo por apenas algumas horas (ou menos)

Estes são problemas reais. Mas não sem solução. Vamos repassar algumas estratégias para ajudar a diminuir a distância entre escritórios locais remotos e forneceremos também algumas ideias para ajudar a atenuar outros potenciais problemas.

Como estruturar equipes globais

Uma boa arquitetura de software dita o design modular, então estruture suas equipes da mesma maneira. Cada escritório deve ser autossuficiente no desenvolvimento de uma única peça de tecnologia, o que minimiza a quantidade de colaboração necessária com equipes em outros fusos, e, geralmente, tornando as equipes autônomas. Quando um projeto exige equipes em diferentes locais, elas podem se focar em seus pontos de integração e APIs.

As revisões de código também têm uma função importante. Como as pessoas estão on-line em horários diferentes, distribuir o conhecimento do código entre escritórios torna o suporte e a manutenção mais fáceis. Se surgir um problema de produção enquanto uma equipe não está on-line, outro escritório pode dar suporte facilmente e resolver o problema, graças ao conhecimento obtido entre as equipes ou com as revisões de código entre os locais.

Criação de um relacionamento

É importante em qualquer programa, especialmente em programas ágil, ter um relacionamento sólido em toda a equipe. A conexão pessoal constrói confiança, minimiza as expectativas não atendidas, facilita a auto-organização e impulsiona o incentivo. Em seu escritório, reserve um tempo para conhecer todos da sua equipe. E, sempre que possível, faça o mesmo com as pessoas com as quais trabalha em escritórios remotos. Conexões pessoais são importantes. Quanto mais forte as conexões se tornam, maior a chance de ver estes colegas como pessoas, em vez de colegas de trabalho distantes de lugares desconhecidos, sem bons relacionamentos.

Pro Tip:

Na Atlassian, cada novo funcionário publica um "blog de introdução" em nossa instância interna do Confluence, a ferramenta de colaboração de conteúdo da Atlassian. O blog apresenta o novo funcionário profissionalmente, bem como pessoalmente (hobbies, interesses, família, etc.), o que realmente ajuda a aproximar os escritórios. Quanto mais sabemos uns sobre os outros, formamos uma equipe mais forte. 

Acima de tudo, nada substitui o encontro face a face. Os membros da equipe em cada escritório serão beneficiados com reuniões regulares, e isso inclui videoconferência, assim como visitas a escritórios remotos.

A videoconferência é importante para diminuir a distância entre as equipes, especialmente para aquelas equipes distribuídas e ágeis. No entanto, as equipes que dependem de videoconferência devem estar cientes de certas limitações.

  • A videoconferência permite apenas uma janela muito curta de comunicação, enquanto trabalhar no mesmo escritório dá visibilidade significativa sobre as pessoas: oportunidades, desafios e sucessos.
  • Podem acontecer problemas de rede entre escritórios que podem deixar o vídeo e o áudio entrecortados ou difíceis de entender.
  • A maioria das pessoas ainda pensa na videoconferência como algo com horário agendado. Criar uma cultura do uso de vídeo-chat para conversa informal espontânea leva tempo.

Para ajudar a atenuar alguns problemas de videoconferência, encoraje os membros da equipe a fazerem sessões semanais de vídeo-chat. Estas sessões podem ser menos formais e facilitam o compartilhamento de conhecimento de modo casual. Companheiros de equipe podem usar estas oportunidades para criar um ambiente amigável e trabalhar melhor em conjunto. 

Lembre-se: tom, voz e postura desempenham um papel significativo na comunicação. Reuniões face a face ajudam a equipe a conhecer seus colegas remotos com mais confiança, o que, por sua vez, torna as futuras videoconferências mais eficazes.

Seja uma casa ou um produto, você precisa definir a visão e delinear os temas estratégicos. Pense nos temas como áreas de foco de toda a organização. Em que você deseja se focar no próximo trimestre, nos próximos seis meses, em um ano? Onde deseja gastar tempo e recursos? Desempenho, experiência do usuário, segurança, novos recursos competitivos (banheira?) ou uma combinação de tudo?

How we do it:

Transferências são atribuições temporárias de um novo local ou função, podendo ser em qualquer local de algumas semanas a um ano. Não é apenas um modo efetivo de criar relacionamento e expandir a cultura na equipe, como também é um ótimo modo de os funcionários conhecerem culturas diferentes. 

Criar uma cultura de desenvolvimento unida

Existem quatro maneiras simples para as equipes trabalharem de diferentes locais e compartilharem uma cultura comum do desenvolvedor:

  • Comunicar as decisões em todas as regiões geográficas
  • Minimizar o atrito ao definir o ambiente de desenvolvimento
  • Definir claramente o que significa estar concluído
  • Criar diretrizes para relatórios eficazes sobre erros

Vamos explicar isso de um modo melhor.

Primeiramente, ao ir de um escritório co-localizado para uma cultura distribuída, a comunicação torna-se significativamente mais difícil. O primeiro desafio é o treinamento da equipe para que entendam que, quando as decisões são tomadas, elas precisam ser comunicadas. Parece que algo bobo, mas é fácil esquecer! Muitas vezes, decisões importantes são tomadas em conversas de corredor, reuniões informais de equipe ou por indivíduos. Além disso, pode ser fácil julgar pequenas decisões como sem importância. 

Comunique até os mínimos detalhes até todos os escritórios encontrem um ritmo saudável.

Quando as decisões são tomadas, todos, de todos os escritórios, precisam entender a decisão e, idealmente, por que ela foi tomada. Não use e-mail. É muito fácil perder informações importantes assim. Use um sistema de gerenciamento de conteúdo, como uma wiki, na qual os membros da equipe podem facilmente procurar por atualizações em toda a equipe (e ser notificados de atualizações via e-mail ou ferramenta de bate-papo do grupo). Atrasos causados por membros da equipe trabalhando em informações desatualizadas, que precisam fazer perguntas ao encontrarem um obstáculo, custam significativamente mais tempo para a equipe do que o compartilhamento proativo de informações.

Em segundo lugar, ambientes de desenvolvimento consistentes em toda a equipe facilitam o trabalho em equipe e o rastreamento de problemas. Passe tempo criando um guia de introdução simples e melhore os atritos do primeiro dia automatizando a instalação tanto quanto possível.

Em terceiro lugar, ao trabalhar entre escritórios, padrões claros sobre a definição de "concluído" facilitam o gerenciamento de expectativas e a criação de relacionamento entre as equipes. Uma definição clara de "concluído" elimina a ambiguidade no trabalho. Por exemplo, ao enviar uma liberação que envolve várias equipes, fica claro o que significa "concluído": código escrito, solicitação pull criada, código revisado, testado e mesclado na ramificação apropriada.

E, finalmente, distribuir desenvolvimento significa que nem todo mundo está online quando surgem problemas. Ter diretrizes claras para relatórios de erros e conhecimento de solução de problemas facilitam o rastreamento de um problema por qualquer pessoa da equipe. A revisão de código e bons testes automatizados também compartilham o conhecimento sobre a base de código e capacitam a equipe afetada a fazer a correção e validar se a mudança não tem efeitos colaterais inesperados. Assim, nenhuma equipe se torna um obstáculo. 

Maximizar os melhores horários

Os fotógrafos sabem o que são os "melhores horários" – antes e depois do nascer e pôr do sol – são o momento ideal para tirar fotos de paisagem. Os melhores horários para as equipes de software distribuídas são quando as equipes locais e remotas estão trabalhando ao mesmo tempo. Quando todas as equipes estão no escritório, é o momento ideal para reuniões 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.

Às vezes os escritórios estão tão distantes que as reuniões poderão ser complicadas para uma equipe. (Levantar-se às 5h para uma reunião rápida com outra equipe? Não, obrigado.) Mude sempre o horário da reunião para que isso seja um fardo compartilhado, em vez de, continuamente, sujeitar a equipe remota horários ruins – o que, com certeza, é um modo de acabar com o incentivo. Acompanhe de perto o envolvimento de toda a equipe na reunião rápida. Se houver uma tensão indevida, ou se a equipe não estiver aproveitando muito a reunião, os funcionários começarão a parar de prestar atenção e a parar de ouvir ou compartilhar. A reunião rápida não precisa ser diária. Reúna-se com a equipe remota algumas vezes por semana e use os outros dias para uma reunião rápida local. Da mesma forma, a reunião rápida também não precisa ser feita apenas durante as manhãs. O horário mais conveniente para todos é a melhor hora do dia. 

Todas as equipes são distribuídas

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.

Porque outra realidade é que as equipes se tornam distribuídas ocasionalmente. Viagens de negócios fazem com que membros da equipe fiquem fora do escritório e trabalhar de casa pode, ocasionalmente, ajudar os funcionários a gerenciar melhor seus horários de trabalho/pessoais. As equipes com adotam estrutura e transparência são muito mais eficientes. Quando o projeto vai para além do escritório, a cultura será definida para fazer o certo naturalmente.