Boa comunicação em equipes de software

Igor Marques da Silva
5 min readMay 9, 2016

--

You can read an english version of this post here

A grande maioria dos desenvolvedores de software atuais passa uma boa parte do seu dia-a-dia se comunicando, seja com colegas de trabalho ou até mesmo clientes.

Essa comunicação por muitas vezes é feita através de texto, o que em certos caso pode gerar uma série de desentendimentos até mesmo entre bons comunicadores.

GitHub, chats, videoconferência/chamadas (é, videoconferência se escreve assim agora…) e e-mail são alguns dos meios que utilizamos para comunicação. O que as vezes se esquece é que cada um tem vantagens e propósitos específicos e que, se utilizados de maneira errada, tendem a produzir muito "ruído": conversa inútil e que pode prejudicar a concentração do desenvolvedor em atividades que realmente importam.

Este post fala sobre algumas dicas para melhorar a comunicação entre os membros de uma equipe de desenvolvimento, com foco em quando utilizar cada meio para cada objetivo e, sobretudo, de maneira eficiente.

Chats (Slack, Hipchat, Campfire, etc)

Em geral, ferramentas de chat são onde a maior parte da comunicação entre a equipe ocorre.

Divididos entre canais públicos (com vários membros) e privados (com apenas dois indivíduos), é também um dos meios de comunicação que pode apresentar mais "ruído", devido ao seu uso intenso.

A regra de ouro aqui é simples: procure interromper o mínimo possível de pessoas sempre que você se comunicar. Nosso trabalho exige muita concentração e receber interrupções no nosso processo de pensamento tende a nos deixar menos produtivos.

Seguem algumas dicas sobre como fazer bom uso das plataformas de chat.

  • Faça uma boa divisão de assuntos por canal. Não misture um projeto com outro, por exemplo.
  • Separe diversão de papo sério. É importante ter um canal "válvula de escape" pra galera poder postar besteira e manter o assunto sério nos canais apropriados.
  • Evite mencionar @todo_mundo o @tempo_todo. Em geral todos os chats possuem uma tag que, quando usada, notifica todos os presentes em determinado canal (ex: o "@channel" do Slack). Use essa tag com muita prudência, pois geralmente você não precisa que TODO MUNDO no chat seja interrompido pra ouvir o que você está falando no momento.
  • "Mute" (ou saia de) canais que não importam. Se alguém te incluiu em algum canal "só por incluir" e nada nele te interessa, não perca seu tempo e atenção com isso.
  • Evite muitos bots. A maioria dos chats hoje em dia permite que você adicione bots que enviam notificações de outros serviços (o GitHub fornece bots que informam quando certas ações que ocorrem em determinado repositório, por exemplo). O que a princípio parece uma boa, pode se tornar caótico caso o número de postagens seja constante. Exemplo: geralmente todos os usuários recebem um e-mail quando alguma ação ocorre num repositório. Agora imagine você recebendo a mesma notificação TAMBÉM no seu chat. Muitas vezes essa duplicação de notificações mais distrai e aborrece do que ajuda.
  • Se o assunto for só entre duas pessoas, procure um chat privado. Isso é apenas mais um reforço para a regra do "procure interromper o mínimo de pessoas possível sempre que você se comunicar".

GitHub

Caso sua organização utiliza o processo "open source" (com pull-requests, revisão, etc) em seus projetos (e se não usa, muito provavelmente deveria) constantemente há feedback trocado entre os membros da sua equipe.

Nesse quesito, é importante que a comunicação seja feita sempre de maneira clara e objetiva (afinal estamos falando de código que será entregue para o cliente).

Aqui vão algumas dicas sobre como fazer uma boa comunicação nos comentários de um pull-request:

  • Seja direto ao ponto. Você não deve ter que contar uma história de 3 parágrafos para deixar claro o que você precisa.
  • Deixe claro o que é ironia e o que não é. O uso de ironia muitas vezes dificulta para o leitor entender a real intenção do que foi escrito.
  • Se atenha ao contexto do pull-request. Se você encontrou algo que não acha legal e que não é crítico para o que foi implementado no pull-request em questão, deixe pra comentar em outro lugar.
  • Deixe claro quais pontos comentados são pontos bloqueantes e quais são apenas recomendações. Muitos comentários são apenas relacionados a quesitos superficiais (geralmente relacionados a estilo ou preferências pessoais) não devem impedir que um pull-request seja merjado. Deixar claro essa distinção é sempre importante.
  • Caso o assunto esteja se prolongando demais, procure um meio de comunicação mais “instantâneo” (como chats ou chamadas, por exemplo). Isso facilita uma resolução mais rápida do assunto.

Esse post tem algumas boas dicas relacionadas a como se comunicar (em termos de tom e linguagem) durante a revisão de pull-requests e vale ser conferido.

E-mail

Esse é o meio de comunicação virtual mais "pré-histórico" e subestimado dos comentados aqui, mas que ainda tem sua utilidade no nosso dia-a-dia.

E-mails tem duas características muito importantes: comunicação assíncrona (que não exige respostas de imediato) e "permanente" (caso você não apague um determinado e-mail, ele sempre estará lá para você recuperar no futuro). Comentários no GitHub também tem essa característica, mas sua recuperação é bastante precária.

Se você vai trocar com a sua equipe alguma informação importantíssima como decisões críticas de clientes, documentos ou qualquer coisa que você certamente vai consultar no futuro, o e-mail é, dentre todos os meios abordados aqui, o com mais chances de você poder recuperá-las. Todos os clientes de e-mail atualmente possuem um sistema de busca bastante eficiente.

Chats em geral possuem um volume muito grande de informação trocada constantemente, o que dificulta sua recuperação. Além disso, muitos limitam a quantidade de mensagens disponível para recuperação, o que é mais um problema.

Claro, usar o e-mail para o registro de informações importantes não seria necessário no caso de pessoas extremamente organizadas e com um Dropbox (ou Google Drive, ou Evernote) bem organizado. Se você é uma pessoa assim, ótimo! Se não, aproveite que você tem um sistema de e-mail muito bem indexado pra fazer essa organização por você ;)

VideoConferência (Hangouts, Skype, ScreenHero, etc)

Quando qualquer conversa não estiver clara o suficiente ou estiver se prolongando demais nos meios mencionados até agora, o jeito é fazer uma vídeo chamada (ou apenas áudio) com os envolvidos na conversa.

Essas chamadas são em geral bastante custosas pois demandam de bastante atenção dos participantes, muitas vezes impedindo que estes possam ser "multi-tarefa" enquanto participantes. Idealmente deve ser utilizado pouco, mas de maneira efetiva para poupar o tempo de todos.

Para discussões a respeito de código, compartilhamento da tela é fundamental. Ferramentas como o Google Hangouts, Zoom e o ScreenHero (particularmente o meu favorito para esta função) desempenham esta tarefa muito bem.

Dessa forma, esse meio tende a resolver discussões de maneira mais rápida e efetiva que os demais, compensando o seu "custo" na maioria das vezes.

TL;DR

  • Use seu chat de modo a perturbar o mínimo de gente possível, sempre separado assuntos específicos em canais específicos.
  • Use o GitHub para comentários pontuais no código. Muitos comentários num lugar só? Melhor usar outro meio pra esclarecer tudo.
  • Use seu e-mail para salvar informações importantes e necessárias a longo prazo.
  • Use uma ferramenta de víde-conferência para esclarecer assuntos que não estão tão claros ou se prolongam demais no meios textuais.

Lembre-se:

Bom senso é a chave e procure sempre se colocar no lugar dos seus companheiros de equipe. Ninguém gosta de ser perturbado por besteira :)

Tem alguma outra dica ou sugestão? Manda aí nos comentários!

--

--