## O que é Pair Programming?**Pair Programming**, ou **Programação em Par**, é uma técnica de [[desenvolvimento](https://clubmartech.com.br/blog/desenvolvimento-software-[ia](https://clubmartech.com.br/blog/ia-marketing-vendas-inteligentes/)/) ágil](https://clubmartech.com.br/blog/[desenvolvimento](https://clubmartech.com.br/blog/desenvolvimento-software-[ia](https://clubmartech.com.br/blog/ia-marketing-vendas-inteligentes/)/)-agil-produtos-continua/) onde dois programadores trabalham juntos em uma mesma estação de trabalho. Enquanto um escreve o código (o “piloto”), o outro revisa e sugere melhorias em tempo real (o “navegador”). O objetivo é melhorar a qualidade do código, compartilhar conhecimento e acelerar a resolução de problemas.## Exemplos Práticos de Uso
- **Resolução de problemas complexos**: Dois desenvolvedores colaboram para encontrar a solução ideal para um algoritmo desafiador.
- **Treinamento em novas tecnologias**: Um programador experiente guia outro que está aprendendo uma nova linguagem ou framework.
- **Projetos críticos**: Programação em par é usada em tarefas que demandam alta precisão, como o desenvolvimento de sistemas de [segurança](https://clubmartech.com.br/blog/seguranca-[apis](https://clubmartech.com.br/significado/apis/)-acoes-acesso/) ou softwares de controle aeronáutico.
## Sinônimos e Antônimos Relevantes
- **Sinônimos**: Codificação em par, programação colaborativa.
- **Antônimos**: Programação individual, desenvolvimento isolado.
## Contexto e Áreas de AplicaçãoA técnica é amplamente adotada em [metodologias ágeis](https://clubmartech.com.br/blog/metodologias-ageis-alinhar-negocio/), como **Extreme Programming (XP)**, e encontra aplicação em:
- **Desenvolvimento de software**: Especialmente em startups e equipes que priorizam [inovação](https://clubmartech.com.br/blog/inovacao-disruptiva-90-dias/) e aprendizado rápido.
- **[Revisão de código](https://clubmartech.com.br/significado/revisao-de-codigo/) em tempo real**: Eliminando a necessidade de uma etapa separada de [code review](https://clubmartech.com.br/blog/code-review-pratica-software/).
- **Treinamento interno**: Promovendo o aprendizado por meio da interação entre membros da equipe.
### Benefícios de Pair Programming
- **Melhora na qualidade do código**: Dois pares de olhos reduzem a chance de erros.
- **Aceleração de aprendizado**: Compartilhamento constante de conhecimento entre os pares.
- **Redução de riscos**: O conhecimento do código é distribuído entre os desenvolvedores, mitigando dependências individuais.
### Desvantagens e Desafios
- **Custo de recursos**: Requer o dobro de desenvolvedores para uma tarefa.
- **Conflitos de [comunicação](https://clubmartech.com.br/blog/comunicacao-orientada-dados-eficiencia/)**: Diferenças no estilo de trabalho podem causar atritos.
- **Fadiga mental**: A colaboração intensa pode ser exaustiva em longas sessões.
## Referências e Termos Relacionados
- **Revisão de Código**: Pair programming frequentemente substitui ou complementa essa prática.
- **Mob Programming**: Versão expandida, onde toda a equipe trabalha em uma única tarefa.
- **Extreme Programming (XP)**: Metodologia que popularizou o uso do Pair Programming.
- **Driver-Navigator Pattern**: Modelo que define os papéis de “piloto” e “navegador”.
## Notas Adicionais### Melhores Práticas
- **Rotação de papéis**: Alterne frequentemente entre piloto e navegador para evitar monotonia e maximizar o aprendizado.
- **Sessões curtas e focadas**: Planeje intervalos regulares para evitar desgaste.
- **Ferramentas colaborativas**: Utilize editores de código compartilhados e videoconferência para programação remota.
### Ferramentas Úteis
- **Visual Studio Code Live Share**: Permite colaboração remota em tempo real.
- **Tuple**: Ferramenta dedicada a pair programming remoto.
- **Google Meet/Zoom**: Complemento para comunicação ao vivo durante a codificação.
## Ilustração: Fluxo Básico do Pair Programming
| **Etapa** | **Piloto (Driver)** | **Navegador (Navigator)** |
|---|---|---|
| Planejamento | Define o objetivo da tarefa | Analisa a abordagem proposta |
| Escrita do código | Escreve linhas de código | Identifica problemas e sugere melhorias |
| Testes e revisão | Implementa testes iniciais | Verifica a cobertura e resultados |
| Troca de papéis | Assume a navegação | Começa a codificar |
## Classificação Gramatical
- **Categoria**: Substantivo próprio técnico (termo em inglês).
- **Pronúncia**: /ˈper ˌproʊ.ɡræm.ɪŋ/
- **Origem**: Combinação das palavras *pair* (par) e *programming* (programação).
## Detalhes EtimológicosO Pair Programming ganhou destaque no início dos anos 2000 com a popularização do **Extreme Programming (XP)**, um dos pilares das metodologias ágeis. Embora práticas colaborativas existissem antes, foi XP que formalizou a técnica como parte de um conjunto de boas práticas.