Dois desenvolvedores, um teclado, código melhor. Aprenda quando e como fazer pair programming de forma eficaz.
Programação em par significa dois desenvolvedores trabalhando juntos em uma estação de trabalho. Um digita (o driver); o outro observa, pensa e navega (o navigator).
Isso parece ineficiente. Você está pagando duas pessoas para fazer o trabalho de uma. Mas a matemática funciona de forma diferente do que você esperaria:
Estudos mostram que pares produzem código com 15% menos defeitos enquanto levam apenas 15% mais tempo. Isso não é o dobro do custo para melhor qualidade—é um investimento de 15% para resultados dramaticamente melhores.
A linha de código mais cara é aquela que causa um incidente de produção às 3 da manhã. A programação em par detecta essas linhas antes de serem escritas.
O modelo clássico de pair programming tem dois papéis:
O Driver segura o teclado. Ele:
O Navigator observa e pensa. Ele:
Troque de papéis regularmente. A cada 15-30 minutos, alternem. Isso mantém ambos os parceiros engajados e evita que uma pessoa domine.
O navigator não é passivo. Se você está navegando e vê algo errado, fale imediatamente. Não espere. O valor do pair programming vem do feedback contínuo.
Existem vários estilos eficazes de pair programming:
Ping-Pong Pairing (funciona muito bem com TDD):
Isso mantém ambas as pessoas codificando ativamente e mantém a disciplina do TDD.
Strong-Style Pairing: "Para uma ideia ir da sua cabeça para o computador, ela deve passar pelas mãos de outra pessoa."
O navigator diz ao driver o que digitar. O driver apenas digita; ele não toma decisões. Isso é ótimo para ensinar—o junior digita enquanto o senior navega, forçando a transferência de conhecimento.
Tour Guide Pairing: Uma pessoa conhece a base de código; a outra está aprendendo. O especialista dirige e explica, dando um tour pelo código. Depois eles trocam, com o aprendiz tentando tarefas sob orientação.
Escolha o estilo que se encaixa na situação. Ping-pong para TDD. Strong-style para mentoria. Tour guide para onboarding.
Pair programming funciona remotamente também. Você precisa de:
Dicas para pair programming remoto:
Algumas equipes descobrem que o pair programming remoto funciona ainda melhor que presencialmente porque não há a tentação de "se inclinar e pegar o teclado". Cada pessoa permanece em seu papel.
Faça pair programming em:
Considere trabalho solo para:
XP não exige 100% de pair programming, apesar da crença comum. O XP original especificava pair programming para código de produção, mas o XP moderno reconhece que equipes eficazes misturam trabalho solo e em par baseado no contexto.
O ponto-chave: nunca deixe código ir para produção sem revisão. Se você não fez pair programming, revise. Pair programming é apenas revisão de código em tempo real.
Comece fazendo pair programming nos problemas mais difíceis. Quando você ver os benefícios lá, expanda para mais do seu trabalho.
"Nossos desenvolvedores não querem fazer pair programming." Comece devagar. Faça pair programming apenas em problemas difíceis. Deixe as pessoas experimentarem os benefícios. Não force 100% de pair programming no primeiro dia.
"Não podemos pagar duas pessoas em uma tarefa." Você também não pode pagar bugs de produção. A economia favorece o pair programming quando você considera bugs reduzidos, conhecimento compartilhado e qualidade de código melhorada.
"Desenvolvedores seniores serão desacelerados." Às vezes. Mas seniores fazendo pair programming com juniores aceleram a equipe toda. O conhecimento do senior se espalha. O junior evolui. É um investimento na capacidade da equipe.
"Introvertidos odeiam pair programming." Alguns introvertidos amam pair programming porque é interação estruturada com um propósito claro. Outros precisam de tempo solo para recarregar. Respeite necessidades individuais, mas não assuma que introversão significa anti-pair programming.
"Programação em par é exaustiva." É mais intensa que trabalho solo. Faça pausas. Não faça pair programming por 8 horas seguidas. Misture pair programming com trabalho solo, revisão de código ou trabalho de design.