Sobre trabalhar remotamente

Quando comecei a escolhi minha própria aventuraQuando o senhor me viu, eu não sabia como seria trabalhar remotamente de casa. Nunca tinha feito isso antes. Como programadores O senhor sabe que eu sou bastante sociável. O que ainda significa que sou um sociopata limítrofe pelos padrões normais. Mesmo assim, eu estava preocupado com a possibilidade de enlouquecer se não houvesse divisão entre minha vida profissional e minha vida doméstica.

Bem, ainda não enlouqueci. Acho que sim. Mas, ao criar o Stack Overflow, aprendi algumas coisas sobre o que significa trabalhar remotamente, pelo menos quando se trata de programação. Nossa equipe atual é composta por 5 pessoas, distribuídas por todos os EUA, juntamente com a equipe de Nova York.

Usa-stack-overflow-team-map

Meu primeiro erro foi tentar programar sozinho. Eu tinha ligações semanais com meu parceiro de negócios, Joel Spolsky, que foram bastante produtivas em termos de descobrir o que estávamos tentando fazer juntos – mas ele não estava escrevendo código. Eu estava codificando sozinho. Realmente sozinho. Um cara trabalhando sozinho. Isso não funcionou de forma alguma para mim. Eu estava sem rumo, sem direção, sofrendo de paralisia de análise e mal conseguia me motivar o suficiente para escrever até mesmo algumas linhas de código. Rapidamente percebi que havia cometido um grande erro ao não ter um colega de programação para trabalhar com o senhor.

Essa situação se corrigiu rapidamente, pois tive a sorte de descobrir que um dos meus antigos amigos favoritos de codificação estava disponível. Embora Jarrod estivesse na Carolina do Norte e eu na Califórnia, o código-fonte compartilhado foi a cola mútua que nos uniu, motivou e nos fez seguir em frente. Para ser justo, também tínhamos a vantagem considerável do histórico anterior, pois havíamos trabalhado juntos em um emprego anterior. Mas a condição mínima para trabalhar remotamente é encontrar alguém que goste de código tanto quanto o senhor. Isso é … suficiente. Qualquer outra coisa além disso – velhas amizades, novas amizades, uma boa relação de trabalho – é a cereja do bolo que torna o trabalho em conjunto ainda mais doce. Por fim, expandi a equipe da mesma forma, adicionando outro velho amigo de programação, Geoff, que mora em Oregon. E, novamente, adicionando Kevin, que eu não conhecia, mas que havia criado coisas incríveis para nós sem nem mesmo ser solicitado., do Texas. E, mais uma vez, acrescentando Robert, na Flórida, que eu também não conhecia, mas que passou tanto tempo em cada parte de nossos sites que senti que ele esteve ao lado de nossa equipe durante todo o caminho, o tempo todo.

O motivo pelo qual o desenvolvimento remoto funcionou para nós, em retrospecto, não foi apenas o amor compartilhado pelo código. Eu escolhi desenvolvedores que eu conhecia – eu tinha um conhecimento incontestável do prova – eram programadores incríveis. Não estou dizendo que eles são perfeitos, longe disso, apenas que eram os melhores programadores segundo qualquer métrica que o senhor queira medir. Isso é por isso eles conseguiram trabalhar remotamente. Os programadores novatos ou os programadores competentes que estão trabalhando por telefone não terão, de forma alguma, a coragem necessária para fazer as coisas remotamente – pelo menos, não sem um gerente de cabelo pontudo ou um líder de equipe velho e mal-humorado respirando em seu pescoço. Nem mesmo pense sobre trabalhar remotamente com qualquer pessoa que não sangramento e tem um histórico comprovado de realização de tarefas.

Embora Joel certamente tenha contribuído muito para o que o Stack Overflow acabou se tornando, eu só falava com ele uma vez por semana, na melhor das hipóteses (essas ligações eram a gênese da nossa série de podcasts semanais). Eu tinha uma visão forte e clara do que queria que o Stack Overflow fosse e de como queria que ele funcionasse. Sempre que havia uma dúvida sobre funcionalidade ou implementação, minha equipe conseguia se reunir em torno de mim e tomar decisões coletivas que nos agradavam e que, pessoalmente, eu achava que estavam em sintonia com essa visão. E se o senhor me conhece minimamente, sabe que não tenho vergonha de dizer não. Conseguimos construir exatamente o que queríamos, exatamente como queríamos.

Resumindo, éramos em uma missão de Deus. E ainda estamos.

Portanto, existem algumas regras básicas para o desenvolvimento remoto, pelo menos da forma como eu o vi funcionar:

  • O tamanho mínimo da equipe remota é de duas pessoas. Sempre tenha um colega, mesmo que ele esteja em outro continente, do outro lado do mundo.
  • Somente veteranos experientes que absolutamente amam que gostam de programar precisam se candidatar a cargos de desenvolvimento remoto. A orientação de programadores iniciantes ou casuais simplesmente não funciona remotamente.
  • Para serem eficazes, as equipes remotas precisam de total autonomia e de um líder (PM, se preferir) que tenha uma visão sólida e o poder de executar plenamente essa visão.

Isso é muito bom quando o senhor tem uma equipe remota de três, como fizemos com a maior parte do desenvolvimento do Stack Overflow. E tudo no mesmo país. Agora precisamos fazer a empresa crescere eu gostaria de fazê-la crescer de forma distribuída, contratando outros desenvolvedores incríveis de todo o mundo, muitos dos quais conheci por meio do próprio Stack Overflow.
Mas como o senhor dimensiona o desenvolvimento remoto? Joel tinha algumas preocupações profundas sobre isso, então entrei em contato com um dos meus heróis, Miguel de Icaza – que, orgulhosamente, está no nosso conselho consultivo de estrelas – e ele foi generoso o suficiente para nos dar alguns conselhos pessoais com base em sua experiência na administração da projeto Monoque conta com dezenas de desenvolvedores distribuídos em todo o mundo.

Diferenças de fuso horário

Correndo o risco de resumir impiedosamente (e talvez até demais), vou resumir o conselho de Miguel da melhor forma possível. Há três ferramentas que o senhor precisará ter se planeja desenvolver uma equipe remota grande e ainda funcional:

  • Bate-papo em tempo real

    Quando o membro da sua equipe mora no Brasil, o senhor não pode exatamente passar pela mesa dele para fazer uma pergunta rápida ou incomodá-lo sobre algo no check-in recente. Não. O senhor precisa de uma maneira de casualmente fazer um ping para os outros membros da equipe remota e obter uma resposta rapidamente. Isso deve ser de baixo atrito e estar disponível para todos os desenvolvedores remotos o tempo todo. IM, IRC, alguma ferramenta baseada na Web, raios laser, sinais de fumaça, pombo-correio, duas latas e uma corda: o que for. Desde que todos realmente use .

    Atualmente, estamos fazendo experiências com Fogueiramas o que quer que seja que lhe agrade e que o senhor consiga fazer com que sua equipe use de forma consistente use, funcionará. O bate-papo é a forma de comunicação mais essencial e onipresente que você tem ao trabalhar remotamente, portanto, é preciso ter certeza absoluta de que ele está funcionando antes de prosseguir.

  • Lista de discussão Persistent

    Claro, sua equipe remota pode saber os detalhes de seus mas e quanto a todos os outros trabalhos em andamento? Como eles ficam sabendo sobre essas coisas ou até mesmo sabem que elas existem? O senhor precisa de um quadro de avisos virtual: um local para anúncios, relatórios semanais da equipe e resumos de reuniões. É aqui que uma lista de e-mails clássica e antiga é útil.

    Estamos usando o Grupos do Google e, apesar de ser antigo, funciona muito bem para isso. O senhor pode receber os e-mails à medida que eles chegam ou visualizar a lista arquivada por meio da interface da Web. No entanto, há uma palavra de cautela. Toda vez que o senhor vir algo da lista de discussão chegar à sua caixa de entrada, é bom que acredite, do fundo do coração, que contém informações úteis. No momento em que a lista de discussão se tornar apenas mais um mecanismo de ruído ou distração do trabalho “sempre que eu tiver tempo para ler essas coisas”… o senhor deixou alguém gritar lobo demais e estragou tudo. Portanto, tenha muito cuidado. Coisas barulhentas, argumentativas ou inúteis postadas na lista de discussão deveriam ser punidas com a morte. Ou noogies.

  • Bate-papo por voz e vídeo

    Por mais que eu goste de ASCII, às vezes os caracteres ASCII sem rosto simplesmente não são suficientes para capturar todas as intenções e sentimentos do ser humano por trás deles. Quando o senhor se vê enviando kilobytes de ASCII para lá e para cá e ainda assim não se sente satisfeito por estar se comunicandoo senhor deve incutir em sua equipe o hábito reflexivo de “dar voz”.

    Nunca subestime o poder de realmente falar com outro ser humano. Eu sei, eu sei, a razão pela qual entramos nessa coisa de programação foi para evitar falar com outras pessoas, mas o senhor tem paciência comigo. Não é possível estar cara a cara com uma equipe remota sem voar mais de 6 horas, e quem tem esse tempo? Eu tenho trabalho que preciso fazer! Bem, a próxima melhor coisa a entrar em um avião é ligar o Skype e ter um pequeno bate-papo por voz. Fácil assim. Toda aquela nuance humana que se perde totalmente em caracteres ASCII sem rosto (sim, mesmo com nosso velho amigo *<:-)) voltará com força total se o senhor regularmente agende bate-papos por voz. Recomendo pelo menos uma vez por semana, no mínimo; não precisam ser reuniões longas, mas com certeza ajudam a entender o ser humano por trás de todos aqueles check-ins incríveis.

Ninguém odeia reuniões e processos mais do que eu, mas há uma certa quantidade de processos que o senhor precisará para manter um grupo de equipes remotas e desenvolvedores pouco conectados em sincronia.

  1. Relatórios de status da equipe na segunda-feira

Toda segunda-feira, como em alguém-tem-um-caso-docada equipe deve produzir um resumo breve e resumido de:

  • O que fizemos semana passada
  • O que estamos planejando fazer esta semana
  • Qualquer coisa que seja bloqueando nós ou estamos em questão sobre

Isso não precisa ser (e de fato não deve ser ser) um relatório longo. Quanto mais breve, melhor, mas tente capturar todos os destaques úteis. Envie-o para a lista de discussão toda segunda-feira, como um relógio. Agora, quantas “equipes” você tem depende de você; não acho que isso precise ser feito no nível do desenvolvedor individual, mas você poderia.

  • Atas da reunião

    Sempre que o senhor realizar o que considera ser uma “reunião” com outra pessoa, faça uma ata! Ou seja, escreva o que aconteceu em forma de tópicos, para que os membros remotos da equipe que não puderam estar presentes possam se beneficiar ou, pelo menos, ouvir sobre o que aconteceu.

    Mais uma vez, isso não precisa ser longo e, se o senhor acha que fazer as atas das reuniões é oneroso, provavelmente está fazendo isso errado. Uma simples lista de frases com marcadores deve ser suficiente. Não precisamos saber todos os pequenos detalhes, apenas o quadro geral: que estava lá? O que o senhor acha? tópicos foram discutidos? Quais decisões foram tomadas? Quais são as próximos passos?

Os dois itens acima devem, é claro, ser enviados para a lista de discussão à medida que forem concluídos, para que todos possam ser notificados. O senhor tem uma lista de discussão, certo? Claro que sim!

Se isso parece um monte de jibba-jabba, bem, é porque o o desenvolvimento remoto é difícil. É preciso disciplina para fazer com que tudo funcione, certamente mais disciplina do que amontoar um grupo de programadores em um mesmo cubículo. Mas quando se imagina como será esse tipo de trabalho intelectual – não apenas programação, mas qualquer coisa em que se trabalhe principalmente com material de pensamento – daqui a dez, vinte ou até trinta anos… o senhor não acha que será muito parecido com o que acontece todos os dias? agora mesmo no Stack Overflow? Ou seja, um programador no Brasil ajudando um programador em Nova Jersey a resolver um problema?

Se aprendi alguma coisa com o Stack Overflow é que o mundo da programação é verdadeiramente global. Tenho a honra de conhecer esses programadores brilhantes de todos os cantos do mundo, mesmo que seja de uma forma pequena, por meio de um site. Nada é mais empolgante para mim do que a perspectiva de adicionar membros internacionais à equipe do Stack Overflow. O desenvolvimento do Stack Overflow deve ser um reflexo do que o Stack Overflow é: um esforço internacional de pessoas com a mesma opinião – e ouso dizer totalmente incrível – programadores. Gostaria de poder contratar cada um dos senhores. OK, talvez eu seja um pouco tendencioso. Mas, para mim, a comunidade do Stack Overflow é incrível.

Acredito que o desenvolvimento remoto representa o futuro do trabalho. Se tivermos que gastar um pouco de tempo para descobrir como esse material funciona e talvez até cometer alguns erros ao longo do caminho, vale a pena. No que me diz respeito, o futuro é agora. Por que esperar?