Programação em pares - Pair programming

Programação de dois colegas de trabalho, 2007

A programação em pares é uma técnica ágil de desenvolvimento de software na qual dois programadores trabalham juntos em uma estação de trabalho. Um, o driver , escreve o código enquanto o outro, o observador ou navegador , revisa cada linha do código à medida que é digitada. Os dois programadores trocam de função com frequência.

Durante a revisão, o observador também considera a direção "estratégica" do trabalho, apresentando ideias para melhorias e prováveis ​​problemas futuros a serem resolvidos. O objetivo é liberar o motorista para concentrar toda a sua atenção nos aspectos "táticos" da conclusão da tarefa atual, usando o observador como uma rede de segurança e um guia.

Economia

A programação em pares aumenta as horas-pessoa necessárias para entregar o código em comparação com os programadores que trabalham individualmente. No entanto, o código resultante tem menos defeitos. Junto com o tempo de desenvolvimento do código, outros fatores como custos de suporte de campo e garantia de qualidade também contribuem para o retorno do investimento. A programação em pares pode teoricamente compensar essas despesas, reduzindo defeitos nos programas.

Além de evitar erros à medida que são cometidos, outros benefícios intangíveis podem existir. Por exemplo, a cortesia de rejeitar ligações ou outras distrações enquanto trabalham juntos, fazer menos pausas em intervalos combinados ou pausas compartilhadas para retornar ligações (mas voltando ao trabalho rapidamente porque alguém está esperando). Um membro da equipe pode ter mais foco e ajudar a impulsionar ou despertar o outro se eles perderem o foco, e essa função pode mudar periodicamente. Um membro pode ter conhecimento de um tópico ou técnica que o outro não tem, o que pode eliminar atrasos para encontrar ou testar uma solução, ou permitir uma solução melhor, expandindo assim efetivamente o conjunto de habilidades, conhecimento e experiência de um programador em comparação para trabalhar sozinho. Cada um desses benefícios intangíveis, e muitos mais, pode ser um desafio para medir com precisão, mas pode contribuir para horários de trabalho mais eficientes.

Qualidade de design

Um sistema com dois programadores possui maior potencial para a geração de soluções mais diversas para problemas por três motivos:

  1. os programadores trazem diferentes experiências anteriores para a tarefa;
  2. eles podem avaliar as informações relevantes para a tarefa de diferentes maneiras;
  3. eles mantêm relacionamentos diferentes com o problema em virtude de seus papéis funcionais.

Na tentativa de compartilhar metas e planos, os programadores devem negociar abertamente um curso de ação compartilhado quando surge um conflito entre eles. Ao fazer isso, eles consideram um número maior de maneiras de resolver o problema do que um único programador sozinho. Isso melhora significativamente a qualidade do design do programa, pois reduz as chances de selecionar um método ruim.

Satisfação

Em uma pesquisa online com programadores em pares de 2000, 96% dos programadores afirmaram que gostavam mais de trabalhar enquanto programavam em pares do que programando sozinho. Além disso, 95% disseram que ficavam mais confiantes em seu trabalho quando programavam os pares.

Aprendendo

O conhecimento é constantemente compartilhado entre os programadores de pares, seja na indústria ou em uma sala de aula. Muitas fontes sugerem que os alunos mostram maior confiança ao programar em pares, e muitos aprendem se é a partir de dicas sobre regras de linguagem de programação ou habilidade geral de design. No "emparelhamento promíscuo", cada programador se comunica e trabalha com todos os outros programadores da equipe ao invés de emparelhar apenas com um parceiro, o que faz com que o conhecimento do sistema se espalhe por toda a equipe. A programação em pares permite que os programadores examinem o código de seus parceiros e forneçam feedback, o que é necessário para aumentar sua própria capacidade de desenvolver mecanismos de monitoramento para suas próprias atividades de aprendizagem.

Formação de equipes e comunicação

A programação em pares permite que os membros da equipe compartilhem rapidamente, tornando-os menos propensos a esconder as agendas uns dos outros. Isso ajuda os programadores de pares a aprender a se comunicar com mais facilidade. "Isso aumenta a largura de banda e a frequência de comunicação dentro do projeto, aumentando o fluxo geral de informações dentro da equipe."

Estudos

Existem estudos empíricos e meta-análises de programação em pares. Os estudos empíricos tendem a examinar o nível de produtividade e a qualidade do código, enquanto as metanálises podem se concentrar em vieses introduzidos pelo processo de teste e publicação.

Uma meta-análise encontrada pares normalmente considera mais alternativas de design do que programadores trabalhando sozinhos, chegam a designs mais simples e mais sustentáveis ​​e detectam defeitos de design mais cedo. No entanto, levantou preocupações de que suas descobertas podem ter sido influenciadas por "sinais de viés de publicação entre os estudos publicados sobre programação em pares". Concluiu que "a programação em pares não é uniformemente benéfica ou eficaz".

Embora os programadores em pares possam concluir uma tarefa mais rápido do que um programador solo, o número total de horas-pessoa aumenta. Um gerente teria que equilibrar a conclusão mais rápida do trabalho e o tempo de teste e depuração reduzido em relação ao custo mais alto de codificação. O peso relativo desses fatores pode variar por projeto e tarefa.

O benefício do emparelhamento é maior em tarefas que os programadores não entendem totalmente antes de começar: ou seja, tarefas desafiadoras que exigem criatividade e sofisticação e para novatos em comparação com especialistas. A programação em pares pode ser útil para obter alta qualidade e correção em tarefas de programação complexas, mas também aumentaria significativamente o esforço (custo) de desenvolvimento.

Em tarefas simples, que a dupla já entende perfeitamente, o emparelhamento resulta em uma queda líquida na produtividade. Isso pode reduzir o tempo de desenvolvimento do código, mas também pode reduzir a qualidade do programa. A produtividade também pode cair quando o emparelhamento novato-novato é usado sem disponibilidade suficiente de um mentor para treiná-los.

Indicadores de não desempenho

Existem indicadores de que um par não está tendo um bom desempenho:

  • O desligamento pode se apresentar quando um dos membros se afasta fisicamente do teclado, acessa o e-mail ou até adormece.
  • O fenômeno "Observe o Mestre" pode surgir se um membro for mais experiente do que o outro. Nessa situação, o membro júnior pode assumir o papel de observador, transferindo-se para o membro sênior do par durante a maior parte da atividade de codificação. Isso pode facilmente levar ao desligamento.

Variações de emparelhamento

Especialista - especialista
O emparelhamento especialista-especialista pode parecer a escolha óbvia para a maior produtividade e pode produzir ótimos resultados, mas muitas vezes produz poucos insights sobre novas maneiras de resolver problemas, já que ambas as partes provavelmente não questionarão as práticas estabelecidas.
Especialista - novato
O emparelhamento especialista-novato cria muitas oportunidades para o especialista ser o mentor do novato. Esse emparelhamento também pode introduzir novas ideias, pois o novato é mais propenso a questionar as práticas estabelecidas. O especialista, agora obrigado a explicar as práticas estabelecidas, também tem maior probabilidade de questioná-las. No entanto, neste emparelhamento, um novato intimidado pode "observar o mestre" passivamente e hesitar em participar de forma significativa. Além disso, alguns especialistas podem não ter a paciência necessária para permitir a participação construtiva de novatos.
Novato-novato
O par novato-novato pode produzir resultados significativamente melhores do que dois novatos trabalhando independentemente, embora essa prática seja geralmente desencorajada porque é mais difícil para os novatos desenvolverem bons hábitos sem um modelo adequado.

Programação de par remoto

A programação de par remoto , também conhecida como programação de par virtual ou programação de par distribuída , é a programação de par em que os dois programadores estão em locais diferentes, trabalhando por meio de um editor colaborativo em tempo real , área de trabalho compartilhada ou um plugin IDE de programação de par remoto . O emparelhamento remoto apresenta dificuldades não presentes no emparelhamento face a face, como atrasos extras para coordenação, dependendo mais de ferramentas de rastreamento de tarefas "pesadas" em vez de ferramentas "leves", como cartões de índice, e perda de comunicação verbal, resultando em confusão e conflitos sobre coisas como quem "tem o teclado".

O suporte da ferramenta pode ser fornecido por:

  • Software de compartilhamento de tela inteira
  • Multiplexadores de terminal
  • Ferramentas especializadas de edição distribuída
  • Programas de bate-papo com áudio ou software de VoIP podem ser úteis quando o software de compartilhamento de tela não fornece capacidade de áudio bidirecional. O uso de fones de ouvido mantém as mãos dos programadores livres
  • Ambientes de desenvolvimento em nuvem
  • Serviços de programação colaborativa em pares

Veja também

Referências

links externos