Testar grátis
8 min leitura Guide 103 of 877

Implementando Pair Programming Efetivo

Pair programming combina dois desenvolvedores trabalhando no mesmo código simultaneamente, com um dirigindo (digitando) e outro navegando (revisando e pensando à frente). As features de atribuição do GitScrum, time tracking, e ferramentas de colaboração ajudam times a coordenar sessões de pairing, rastrear o investimento, medir resultados, e incorporar pairing em seu fluxo de trabalho regular para melhorar qualidade de código, acelerar aprendizado, e reduzir silos de conhecimento.

Quando Fazer Pair Programming

Cenários de Alto Valor

MELHORES CASOS DE USO:
┌─────────────────────────────────────────────────────────────┐
│ QUANDO PAIRING ENTREGA MAIS VALOR                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ PROBLEMAS COMPLEXOS:                                        │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ✅ Decisões arquiteturais                                ││
│ │ ✅ Algoritmos complexos                                  ││
│ │ ✅ Desafios de integração                                ││
│ │ ✅ Otimização de performance                             ││
│ │ ✅ Código sensível a segurança                           ││
│ │                                                         ││
│ │ Valor: Duas mentes > uma para problemas difíceis        ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ TRANSFERÊNCIA CONHECIMENTO:                                 │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ✅ Onboarding novos membros time                        ││
│ │ ✅ Trabalhar em áreas desconhecidas do código           ││
│ │ ✅ Aprender novas tecnologias/frameworks                ││
│ │ ✅ Cross-training para reduzir fator bus                ││
│ │ ✅ Mentorear desenvolvedores junior                     ││
│ │                                                         ││
│ │ Valor: Conhecimento se espalha, silos diminuem          ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ QUALIDADE CRÍTICA:                                          │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ✅ Hotfixes produção sob pressão                        ││
│ │ ✅ Código de pagamentos/financeiro                      ││
│ │ ✅ Scripts migração dados                               ││
│ │ ✅ Mudanças infraestrutura core                         ││
│ │ ✅ Refactoring alto impacto                             ││
│ │                                                         ││
│ │ Valor: Review tempo real pega bugs custosos             ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ QUANDO NÃO PAREAR:                                          │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ❌ Tarefas simples, rotineiras (CRUD, config)           ││
│ │ ❌ Trabalho bem entendido em código familiar            ││
│ │ ❌ Pesquisa/exploração (melhor mob, ou solo)            ││
│ │ ❌ Quando qualquer pessoa está exausta                  ││
│ │ ❌ Tarefas administrativas                              ││
│ │                                                         ││
│ │ Desperdício: Duas pessoas para trabalho de uma          ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Rastreando no GitScrum

WORKFLOW PAIRING:
┌─────────────────────────────────────────────────────────────┐
│ CONFIGURANDO PARA PAIRING                                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ ATRIBUIÇÃO TAREFAS:                                         │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Atribuir AMBOS desenvolvedores à tarefa:                ││
│ │                                                         ││
│ │ Tarefa: "Implementar lógica retry pagamentos"           ││
│ │ Atribuídos: @maria, @carlos                             ││
│ │ Label: workflow/pairing                                 ││
│ │                                                         ││
│ │ Por que ambos nomes:                                    ││
│ │ • Ambos visíveis na carga trabalho                      ││
│ │ • Ambos creditados pela entrega                         ││
│ │ • Notificações vão para ambos                           ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ TIME TRACKING:                                              │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Ambos rastreiam tempo simultaneamente:                  ││
│ │                                                         ││
│ │ Maria: 3h em "Lógica retry pagamentos"                  ││
│ │ Carlos: 3h em "Lógica retry pagamentos"                 ││
│ │                                                         ││
│ │ Total: 6 pessoa-horas (preciso para planejamento)       ││
│ │                                                         ││
│ │ Alternativa: Um rastreia como "pair" com multiplicador  ││
│ │ 2x nos cálculos de estimativa                           ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ LABELS PARA VISIBILIDADE:                                   │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Criar labels dedicados:                                 ││
│ │                                                         ││
│ │ 🟢 workflow/pairing     - Destinado a pair programming  ││
│ │ 🔵 workflow/paired      - Completado como pair          ││
│ │ 🟣 workflow/mobbing     - Mob programming time          ││
│ │                                                         ││
│ │ Filtrar por labels para ver:                            ││
│ │ • Trabalho pairing atual                                ││
│ │ • Ratio pairing histórico                               ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Estilos de Pairing

Driver-Navigator

O MODELO CLÁSSICO:
┌─────────────────────────────────────────────────────────────┐
│ DINÂMICAS DRIVER-NAVIGATOR                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ DRIVER (Quem tem o teclado):                                │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Responsabilidades:                                      ││
│ │ • Digita o código                                       ││
│ │ • Foca em sintaxe e implementação imediata              ││
│ │ • Explica o que está fazendo                            ││
│ │ • Faz perguntas quando travado                          ││
│ │                                                         ││
│ │ Mindset: "Estou implementando o passo atual"            ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ NAVIGATOR (Observador):                                     │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Responsabilidades:                                      ││
│ │ • Revisa código enquanto é escrito                      ││
│ │ • Pensa no panorama maior                               ││
│ │ • Pega bugs e typos                                     ││
│ │ • Sugere alternativas e melhorias                       ││
│ │ • Mantém track do que vem depois                        ││
│ │                                                         ││
│ │ Mindset: "Estou guiando estratégia e pegando issues"    ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ RITMO DE TROCA:                                             │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Opções:                                                 ││
│ │                                                         ││
│ │ BASEADO EM TEMPO:                                       ││
│ │ • Pomodoros 25 minutos, trocar cada rodada              ││
│ │ • Força rotação regular                                 ││
│ │ • Previne uma pessoa dominar                            ││
│ │                                                         ││
│ │ BASEADO EM TAREFA:                                      ││
│ │ • Trocar depois de completar cada subtarefa             ││
│ │ • Pontos de corte naturais                              ││
│ │ • Ambos experimentam diferentes partes                  ││
│ │                                                         ││
│ │ PING-PONG (para TDD):                                   ││
│ │ • A escreve teste falhando, B faz passar                ││
│ │ • B escreve próximo teste falhando, A faz passar        ││
│ │ • Troca contínua                                        ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Fazendo Pairing Funcionar

Configuração Ambiente

ESTAÇÃO DE PAIRING:
┌─────────────────────────────────────────────────────────────┐
│ SETUP FÍSICO E REMOTO                                       │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ SETUP PRESENCIAL:                                           │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Equipamento:                                            ││
│ │ ☐ Monitor grande (27"+) ou monitores duplos             ││
│ │ ☐ Dois teclados                                         ││
│ │ ☐ Dois mouses                                           ││
│ │ ☐ Assentos confortáveis para dois                       ││
│ │                                                         ││
│ │ Ambiente:                                               ││
│ │ ☐ Espaço tranquilo ou setup cancelamento ruído          ││
│ │ ☐ Quadro branco perto para sketching                    ││
│ │ ☐ Timer visível                                         ││
│ │ ☐ Água/snacks acessíveis                                ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ SETUP REMOTO:                                               │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Ferramentas:                                            ││
│ │ ☐ Compartilhar tela com áudio (Zoom, Meet, Teams)       ││
│ │ ☐ VS Code Live Share ou similar                         ││
│ │ ☐ Conexão internet estável                              ││
│ │ ☐ Bom microfone e fones                                 ││
│ │                                                         ││
│ │ Benefícios Live Share:                                  ││
│ │ • Ambos podem digitar simultaneamente                   ││
│ │ • Ambos cursores visíveis                               ││
│ │ • Terminal compartilhado                                ││
│ │ • Sem latência para digitação                           ││
│ │                                                         ││
│ │ Dicas:                                                  ││
│ │ • Câmera ligada constrói conexão                        ││
│ │ • Verbalizar mais que presencialmente                   ││
│ │ • Fazer breaks mais frequentes (fadiga tela)            ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Estrutura Sessão

FLUXO SESSÃO PAIRING:
┌─────────────────────────────────────────────────────────────┐
│ SESSÃO PAIRING ESTRUTURADA                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ ANTES DA SESSÃO (5 min):                                    │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ☐ Alinhar no objetivo: "O que vamos realizar?"          ││
│ │ ☐ Revisar contexto: Descrição tarefa, código relac.     ││
│ │ ☐ Acordar abordagem: "Como vamos abordar isso?"         ││
│ │ ☐ Setar timer para primeira rotação                     ││
│ │ ☐ Iniciar time tracking no GitScrum                     ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ DURANTE SESSÃO:                                             │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Estrutura (sessão 2 horas):                             ││
│ │                                                         ││
│ │ 0:00-0:25  │ Primeiro turno driving (Pessoa A)          ││
│ │ 0:25-0:30  │ BREAK - alongar, água                      ││
│ │ 0:30-0:55  │ Segundo turno driving (Pessoa B)           ││
│ │ 0:55-1:00  │ BREAK - alongar, checar mensagens          ││
│ │ 1:00-1:25  │ Terceiro turno driving (Pessoa A)          ││
│ │ 1:25-1:30  │ BREAK                                      ││
│ │ 1:30-1:55  │ Quarto turno driving (Pessoa B)            ││
│ │ 1:55-2:00  │ ENCERRAMENTO                               ││
│ │                                                         ││
│ │ Comportamentos chave:                                   ││
│ │ • Pensar em voz alta                                    ││
│ │ • Fazer perguntas livremente                            ││
│ │ • Celebrar pequenas vitórias                            ││
│ │ • Anotar itens parking lot                              ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ DEPOIS DA SESSÃO (5 min):                                   │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ☐ Commit progresso atual                                ││
│ │ ☐ Atualizar tarefa no GitScrum (comentários, status)    ││
│ │ ☐ Capturar aprendizados: "O que descobrimos?"           ││
│ │ ☐ Anotar follow-ups: "O que vem depois?"                ││
│ │ ☐ Retro rápida: "O que funcionou? O que mudar?"         ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Soluções Relacionadas