Visão geral sobre Pair Programming

Dennys Barros
Liferay Engineering Brazil
4 min readOct 9, 2019

Apesar de ser uma prática bastante conhecida (e até um pouco polêmica), é sempre interessante relembrar o que essa atividade encoraja e como ela pode ser benéfica no que se refere à qualidade.

Pair Programming é uma técnica de desenvolvimento ágil que consiste em dois desenvolvedores compartilharem o mesmo equipamento (um monitor, um teclado e um mouse).

Essa técnica muitas vezes é comparada a duas pessoas em um mesmo carro. O “motorista” — a pessoa realmente dirigindo o carro — , e o “navegador” — uma pessoa com um mapa na mão, direcionando o motorista. Trazendo essa alusão para o desenvolvimento de software, o “motorista” é o desenvolvedor que está ativamente programando, está realmente utilizando o teclado e o mouse para exercer essa atividade. Já o “navegador” está também envolvido no mesmo problema no qual o “motorista” está tentando solucionar, mas está mais focado na direção geral na qual o código está tomando.

A origem exata dessa técnica é até hoje desconhecida, mas ela ganhou bastante popularidade pelo Extreme Programming (XP). Segundo a página de XP do Agile Alliance, a ideia por trás dessa prática é que dois cérebros e quatro olhos são melhores do que um cérebro e dois olhos.

Mas quais são as vantagens em utilizar essa prática? Talvez você pense:

“Por que danado eu pagaria duas pessoas para fazer o trabalho de uma?”

Isso talvez faça até sentido para atividades manuais ou corriqueiras, onde pensamos mais na produção do que na qualidade. Mas desenvolver software não é uma questão de produção. Desenvolvedores de software não são contratados por quantidade de linhas que eles conseguem escrever. Muito menos são contratados por quantidade de linhas por hora. Desenvolver software envolve mais pensar do que escrever linhas. E duas pessoas pensam melhor do que uma. Além disso, aplicar Pair Programming custa, geralmente, apenas 15% a mais de tempo de desenvolvimento (https://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF).

As vantagens esperadas ao aplicar o Pair Programming são as seguintes:

  • Aumentar a qualidade do código: explicar para outra pessoa o que está fazendo tende a resolver situações complexas e descobrir detalhes escondidos, reduzindo o risco de cometer erros
  • Melhorar a disseminação de conhecimento entre o time, em particular quando um desenvolvedor que não é muito familiar com o componente sendo desenvolvido, está pareando com um desenvolvedor mais experiente
  • Melhorar a transferência de habilidades, já que desenvolvedores iniciantes conseguem perceber e aprender técnicas utilizadas por desenvolvedores mais experientes
  • Reduzir de esforço gerencial, já que vão existir N/2 pares para gerenciar em vez de N desenvolvedores individuais.
  • Menor interrupção de trabalho: quando um dos membros do par precisa atender a alguma atividade externa, o outro pode continuar focado na atividade e pode ajudar a recuperar o foco do primeiro desenvolvedor quando ele voltar.
  • Melhorar as habilidades interpessoais: colaborar com outros ajuda o time a apreciar o valor da comunicação e do trabalho em equipe.

Mas como em tudo na vida, nem tudo são flores. Alguns desafios observados quando falamos de Pair Programming podem incluir:

  • Se os membros de um par não estiverem igualmente engajados e participativos na atividade, nenhum dos benefícios citados acima serão atingidos
  • Pessoas que nunca tentaram Pair Programming podem ficar reticentes e acharem que estão duplicando esforços. O conceito e os benefícios do Pair Programming precisam estar bem claros na mente dos desenvolvedores
  • Falta de comunicação entre os pares
  • Pair Programming é algo que não pode ser forçado. É uma atividade que exige muita interação, então problemas de afinidade entre os membros de um par devem ser detectados.

Tudo sempre parece muito bonito no papel, mas como fazer isso na prática? A maneira mais eficaz de se trabalhar com Pair Programming é parear desenvolvedores com as mesmas habilidades e experiência. Porém, parear um desenvolvedor mais experiente com um novato pode ser usado para propósitos de treinamento.

Para ajudar na aplicação do Pair Programming, tente seguir o seguinte checklist:

Antes de começar:

  • O espaço deve estar arrumado e o equipamento deve estar presente
  • O que vai ser trabalhado e quem será o motorista e o navegador já deve estar definido

Motorista:

  • Deve ser o único codificando
  • À medida que vai desenvolvendo, o motorista deve expressar vocalmente o que está fazendo
  • Deve aceitar feedback e assistência do navegador

Navegador:

  • Está focado na visão geral do que está sendo desenvolvido
  • Pensa estrategicamente — está sempre atento e alerta ao que o motorista está fazendo
  • Faz perguntas ao motorista

Ambos os desenvolvedores:

  • Ambos estão escutando e respondendo um ao outro
  • Nenhum dos desenvolvedores deve limitar as perguntas ou opiniões do outro
  • Sugestões e críticas devem ser construtivas
  • Os dois são donos do que está sendo criado

A prática de Pair Programming, se bem aplicada, pode trazer muitos benefícios para um time ágil. Experimente essa técnica. Adapte-a de um jeito que vai beneficiar, principalmente, o seu time.

Referências:

--

--