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
Buscar tópicos

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.

Dica profissional:

Na Atlassian, cada novo funcionário publica um "blog de introdução" na instância interna do Confluence, a ferramenta de colaboração de conteúdo da Atlassian. O blog apresenta o novo funcionário do ponto de vista profissional e pessoal (hobbies, interesses, família etc.), o que de fato ajuda a aproximar os escritórios. Quanto mais a gente sabe uns sobre os outros, mais forte fica a equipe.

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.

Ferramentas de videoconferência, como o Zoom ajudam a diminuir a distância entre as equipes, ainda mais para aquelas equipes distribuídas e ágeis. No entanto, as equipes que usam o Zoom devem estar cientes de certas limitações.

  • A videoconferência permite apenas um período muito curto de comunicação, enquanto trabalhar no mesmo escritório dá visibilidade significativa sobre as pessoas: oportunidades, desafios e sucessos.
  • O Zoom está tendo bons resultados ao lidar com falhas de conexão. Ainda assim, podem acontecer problemas de rede entre escritórios que podem deixar o vídeo e o áudio cortados ou difíceis de entender.
  • A maioria das pessoas ainda pensa nas videoconferências do Zoom como algo com horário agendado. Criar uma cultura de usar o chat por vídeo para conversa informal e espontânea leva tempo. Use também ferramentas de mensagens instantâneas, como o Slack, para questões rápidas.

Para ajudar a atenuar alguns problemas de videoconferência, encoraje os membros da equipe a fazerem sessões semanais de videochat. Estas sessões podem ser menos formais e facilitam o compartilhamento casual de conhecimento. 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?

Como fazemos isso

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.

Em primeiro lugar, ir de um escritório local para uma cultura distribuída dificulta bastante a comunicação. O primeiro desafio é o treinamento da equipe para que entendam que, quando as decisões são tomadas, elas precisam ser comunicadas. Pode parecer óbvio, mas é fácil de esquecer! Muitas vezes, decisões importantes são tomadas em conversas de corredor, reuniões informais da 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, de preferência, 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 para facilitar a busca por atualizações de toda a equipe (e o recebimento de notificações de atualizações por e-mail ou pela ferramenta de chat em grupo do Slack). Você também pode usar o Slack para criar canais para comunicação e notificação de pessoas ou equipes.Atrasos causados por membros da equipe trabalhando com informações desatualizadas, que precisam fazer perguntas ao encontrarem um obstáculo, custam muito 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 o alinhamento entre as equipes. Uma definição clara de "concluído" elimina a ambiguidade no trabalho. Por exemplo, ao lançar uma versão que envolve várias equipes, esclareça o que significa "concluído": código escrito, solicitação pull criada ou código revisado, testado e mesclado na ramificação apropriada.

E, finalmente, distribuir desenvolvimento significa que nem todo mundo está on-line quando surgem problemas. Ter diretrizes claras para relatórios de bugs e conhecimento de solução de problemas facilitam o rastreamento de um item 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 tiver efeitos colaterais inesperados. Assim, nenhuma equipe se torna um bloqueador.

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.

Para as equipes que compartilham o trabalho entre fusos horários, a reunião rápida é um ótimo momento para passar o bastão, para que a equipe que está entrando on-line possa continuar de onde a outra parou. Fazer uma reunião rápida via videoconferência facilita perguntas e agiliza o processo para que todos possam começar a agir assim que ela terminar.

Às vezes os escritórios estão tão distantes que as reuniões podem ser complicadas para uma das equipes. (Acordar às 5h para uma reunião rápida com outra equipe? Não, obrigado.) Alterne os horários das reuniões em vez de deixar sempre a equipe remota trabalhando em horários ruins, para que não fique pesado só para uma equipe (o que é um grande desincentivo). 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 participantes vão parar de prestar atenção, de ouvir ou de compartilhar. A reunião rápida não precisa ser diária. Faça reuniões com a equipe remota algumas vezes por semana e use os outros dias para reuniões rápidas locais. A reunião rápida também não precisa ser feita apenas durante as manhãs. A melhor hora para isso é o horário que for mais conveniente para todos.

Todas as equipes são distribuídas

Em uma empresa distribuída, a realidade é que cada equipe é remota. Todas as equipes precisam se adaptar que aprender como compartilhar trabalho entre escritórios, se comunicar com eficácia e desenvolver uma cultura consistente em diferentes localidades. As equipes mais eficazes não fazem o escritório remoto se adequar à cultura da sede, porque entendem que todos os escritórios podem aprender uns com os outros. Elas buscam encontrar e compartilhar práticas bem-sucedidas em todos os locais, além de adotar a cultura do "nós" em vez de "nós versus eles".

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