Probar gratis
8 min lectura Guide 103 of 877

Implementando Pair Programming Efectivo

El pair programming combina dos desarrolladores trabajando en el mismo código simultáneamente, con uno manejando (typing) y otro navegando (revisando y pensando adelante). Las features de asignación de GitScrum, time tracking, y herramientas de colaboración ayudan a equipos a coordinar sesiones de pairing, trackear la inversión, medir resultados, y construir pairing en su flujo de trabajo regular para mejorar calidad de código, acelerar aprendizaje, y reducir silos de conocimiento.

Cuándo Hacer Pair Program

Escenarios de Alto Valor

MEJORES CASOS DE USO:
┌─────────────────────────────────────────────────────────────┐
│ CUÁNDO PAIRING ENTREGA MÁS VALOR                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ PROBLEMAS COMPLEJOS:                                        │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ✅ Decisiones arquitecturales                            ││
│ │ ✅ Algoritmos complejos                                  ││
│ │ ✅ Desafíos de integración                               ││
│ │ ✅ Optimización de rendimiento                           ││
│ │ ✅ Código sensible a seguridad                           ││
│ │                                                         ││
│ │ Valor: Dos mentes > una para problemas difíciles        ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ TRANSFERENCIA CONOCIMIENTO:                                 │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ✅ Onboarding nuevos miembros equipo                    ││
│ │ ✅ Trabajar en áreas desconocidas del código            ││
│ │ ✅ Aprender nuevas tecnologías/frameworks               ││
│ │ ✅ Cross-training para reducir factor bus               ││
│ │ ✅ Mentorear desarrolladores junior                     ││
│ │                                                         ││
│ │ Valor: Conocimiento se esparce, silos se reducen        ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ CALIDAD CRÍTICA:                                            │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ✅ Hotfixes producción bajo presión                     ││
│ │ ✅ Código de pagos/financiero                           ││
│ │ ✅ Scripts migración datos                              ││
│ │ ✅ Cambios infraestructura core                         ││
│ │ ✅ Refactoring alto impacto                             ││
│ │                                                         ││
│ │ Valor: Review tiempo real atrapa bugs costosos          ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ CUÁNDO NO PAREAR:                                           │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ❌ Tareas simples, rutinarias (CRUD, config)            ││
│ │ ❌ Trabajo bien entendido en código familiar            ││
│ │ ❌ Investigación/exploración (mejor mob, o solo)        ││
│ │ ❌ Cuando cualquier persona está agotada                ││
│ │ ❌ Tareas administrativas                               ││
│ │                                                         ││
│ │ Desperdicio: Dos personas para trabajo de una          ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Trackeando en GitScrum

WORKFLOW PAIRING:
┌─────────────────────────────────────────────────────────────┐
│ CONFIGURANDO PARA PAIRING                                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ ASIGNACIÓN TAREAS:                                          │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Asignar AMBOS desarrolladores a tarea:                  ││
│ │                                                         ││
│ │ Tarea: "Implementar lógica retry pagos"                 ││
│ │ Asignados: @maria, @carlos                              ││
│ │ Label: workflow/pairing                                 ││
│ │                                                         ││
│ │ Por qué ambos nombres:                                  ││
│ │ • Ambos visibles en carga trabajo                       ││
│ │ • Ambos acreditados por entrega                         ││
│ │ • Notificaciones van a ambos                            ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ TIME TRACKING:                                              │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Ambos trackean tiempo simultáneamente:                  ││
│ │                                                         ││
│ │ Maria: 3h en "Lógica retry pagos"                       ││
│ │ Carlos: 3h en "Lógica retry pagos"                      ││
│ │                                                         ││
│ │ Total: 6 persona-horas (preciso para planificación)     ││
│ │                                                         ││
│ │ Alternativa: Uno trackea como "pair" con multiplicador  ││
│ │ 2x en cálculos de estimación                            ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ LABELS PARA VISIBILIDAD:                                    │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Crear labels dedicados:                                 ││
│ │                                                         ││
│ │ 🟢 workflow/pairing     - Destinado a pair programming  ││
│ │ 🔵 workflow/paired      - Completado como pair          ││
│ │ 🟣 workflow/mobbing     - Mob programming equipo        ││
│ │                                                         ││
│ │ Filtrar por labels para ver:                            ││
│ │ • Trabajo pairing actual                                ││
│ │ • Ratio pairing histórico                               ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Estilos de Pairing

Driver-Navigator

EL MODELO CLÁSICO:
┌─────────────────────────────────────────────────────────────┐
│ DINÁMICAS DRIVER-NAVIGATOR                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ DRIVER (Quien tiene el teclado):                            │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Responsabilidades:                                      ││
│ │ • Escribe el código                                     ││
│ │ • Se enfoca en sintaxis e implementación inmediata      ││
│ │ • Explica qué está haciendo                             ││
│ │ • Hace preguntas cuando está atorado                    ││
│ │                                                         ││
│ │ Mindset: "Estoy implementando el paso actual"           ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ NAVIGATOR (Observador):                                     │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Responsabilidades:                                      ││
│ │ • Revisa código mientras se escribe                     ││
│ │ • Piensa en el panorama mayor                           ││
│ │ • Atrapa bugs y typos                                   ││
│ │ • Sugiere alternativas y mejoras                        ││
│ │ • Mantiene track de qué sigue                           ││
│ │                                                         ││
│ │ Mindset: "Estoy guiando estrategia y atrapando issues"  ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ RITMO DE CAMBIO:                                            │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Opciones:                                               ││
│ │                                                         ││
│ │ BASADO EN TIEMPO:                                       ││
│ │ • Pomodoros 25 minutos, cambiar cada ronda              ││
│ │ • Fuerza rotación regular                               ││
│ │ • Previene que una persona domine                       ││
│ │                                                         ││
│ │ BASADO EN TAREA:                                        ││
│ │ • Cambiar después de completar cada subtarea            ││
│ │ • Puntos de corte naturales                             ││
│ │ • Ambos experimentan diferentes partes                  ││
│ │                                                         ││
│ │ PING-PONG (para TDD):                                   ││
│ │ • A escribe test fallando, B lo hace pasar              ││
│ │ • B escribe siguiente test fallando, A lo hace pasar    ││
│ │ • Cambio continuo                                       ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Haciendo Funcionar el Pairing

Configuración Ambiente

ESTACIÓN DE PAIRING:
┌─────────────────────────────────────────────────────────────┐
│ SETUP FÍSICO Y REMOTO                                       │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ SETUP PRESENCIAL:                                           │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Equipo:                                                 ││
│ │ ☐ Monitor grande (27"+) o monitores duales              ││
│ │ ☐ Dos teclados                                          ││
│ │ ☐ Dos ratones                                           ││
│ │ ☐ Asientos cómodos para dos                             ││
│ │                                                         ││
│ │ Ambiente:                                               ││
│ │ ☐ Espacio tranquilo o setup cancelación ruido           ││
│ │ ☐ Pizarra cerca para sketching                          ││
│ │ ☐ Timer visible                                         ││
│ │ ☐ Agua/snacks accesibles                                ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ SETUP REMOTO:                                               │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Herramientas:                                           ││
│ │ ☐ Compartir pantalla con audio (Zoom, Meet, Teams)      ││
│ │ ☐ VS Code Live Share o similar                          ││
│ │ ☐ Conexión internet estable                             ││
│ │ ☐ Buen micrófono y auriculares                          ││
│ │                                                         ││
│ │ Beneficios Live Share:                                  ││
│ │ • Ambos pueden escribir simultáneamente                 ││
│ │ • Ambos cursores visibles                               ││
│ │ • Terminal compartido                                   ││
│ │ • Sin latencia para typing                              ││
│ │                                                         ││
│ │ Tips:                                                   ││
│ │ • Cámara encendida construye conexión                   ││
│ │ • Verbalizar más que en persona                         ││
│ │ • Tomar breaks más frecuentes (fatiga pantalla)         ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Estructura Sesión

FLUJO SESIÓN PAIRING:
┌─────────────────────────────────────────────────────────────┐
│ SESIÓN PAIRING ESTRUCTURADA                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ ANTES DE SESIÓN (5 min):                                    │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ☐ Alinear en objetivo: "¿Qué lograremos?"               ││
│ │ ☐ Revisar contexto: Descripción tarea, código relac.    ││
│ │ ☐ Acordar enfoque: "¿Cómo lo abordaremos?"              ││
│ │ ☐ Setear timer para primera rotación                    ││
│ │ ☐ Iniciar time tracking en GitScrum                     ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ DURANTE SESIÓN:                                             │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Estructura (sesión 2 horas):                            ││
│ │                                                         ││
│ │ 0:00-0:25  │ Primer turno driving (Persona A)           ││
│ │ 0:25-0:30  │ BREAK - estirar, agua                      ││
│ │ 0:30-0:55  │ Segundo turno driving (Persona B)          ││
│ │ 0:55-1:00  │ BREAK - estirar, revisar mensajes          ││
│ │ 1:00-1:25  │ Tercer turno driving (Persona A)           ││
│ │ 1:25-1:30  │ BREAK                                      ││
│ │ 1:30-1:55  │ Cuarto turno driving (Persona B)           ││
│ │ 1:55-2:00  │ CIERRE                                     ││
│ │                                                         ││
│ │ Comportamientos clave:                                  ││
│ │ • Pensar en voz alta                                    ││
│ │ • Hacer preguntas libremente                            ││
│ │ • Celebrar pequeños logros                              ││
│ │ • Anotar items parking lot                              ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ DESPUÉS DE SESIÓN (5 min):                                  │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ☐ Commit progreso actual                                ││
│ │ ☐ Actualizar tarea en GitScrum (comentarios, estado)    ││
│ │ ☐ Capturar aprendizajes: "¿Qué descubrimos?"            ││
│ │ ☐ Anotar seguimientos: "¿Qué sigue?"                    ││
│ │ ☐ Retro rápida: "¿Qué funcionó? ¿Qué cambiar?"          ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Soluciones Relacionadas