7 min lectura • Guide 835 of 877
Prácticas de Mob Programming
Un teclado, todo el equipo. GitScrum ayuda a coordinar sesiones de mob y trackear su impacto en calidad y capacidad del equipo.
Fundamentos del Mob Programming
CÓMO FUNCIONA
═════════════
EL SETUP:
┌─────────────────────────────────────────────────────────────┐
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ PANTALLA GRANDE │ │
│ │ (o proyector) │ │
│ └─────────────────────────────────────────────────────┘ │
│ ▲ │
│ │ │
│ ┌──────────────┴──────────────┐ │
│ │ │ │
│ ┌────┴────┐ ┌────┴────┐ │
│ │ DRIVER │ │NAVIGATORS│ │
│ │(teclado)│ │ (ideas) │ │
│ └─────────┘ └─────────┘ │
│ │
│ ROLES: │
│ ├── Driver: Solo escribe, no decide │
│ ├── Navigator: Dice qué escribir │
│ └── Mob: Todos contribuyen ideas │
│ │
└─────────────────────────────────────────────────────────────┘
Roles y Rotación
ROTACIÓN DE ROLES
═════════════════
REGLA FUNDAMENTAL:
┌─────────────────────────────────────────────────────────────┐
│ │
│ "Para una idea ir del cerebro de alguien al código, │
│ debe pasar por las manos de otra persona" │
│ │
│ Driver NO puede implementar sus propias ideas directamente│
│ Debe explicarlas y que otros las naveguen │
│ │
└─────────────────────────────────────────────────────────────┘
ROTACIÓN TÍPICA:
┌─────────────────────────────────────────────────────────────┐
│ │
│ Tiempo │ Driver │ Navigator │ Mob │
│ ──────────────────────────────────────────────────────────│
│ 0-10 min │ Ana │ Juan │ María, Pedro, Luis │
│ 10-20 min │ Juan │ María │ Pedro, Luis, Ana │
│ 20-30 min │ María │ Pedro │ Luis, Ana, Juan │
│ 30-40 min │ Pedro │ Luis │ Ana, Juan, María │
│ 40-50 min │ Luis │ Ana │ Juan, María, Pedro │
│ 50-60 min │ BREAK │ │ │
│ │
│ Rotación cada 10-15 minutos │
│ Usar timer visible │
│ │
└─────────────────────────────────────────────────────────────┘
Cuándo Usar Mob Programming
CASOS DE USO IDEALES
════════════════════
✅ EXCELENTE PARA:
┌─────────────────────────────────────────────────────────────┐
│ │
│ PROBLEMAS COMPLEJOS: │
│ ├── Arquitectura de sistema nueva │
│ ├── Bugs difíciles de reproducir │
│ ├── Código legacy que nadie entiende │
│ └── Decisiones de diseño críticas │
│ │
│ TRANSFERENCIA DE CONOCIMIENTO: │
│ ├── Onboarding de nuevos miembros │
│ ├── Compartir expertise de un dominio │
│ ├── Cross-training entre roles │
│ └── Documentar conocimiento tribal │
│ │
│ CÓDIGO DE ALTO RIESGO: │
│ ├── Features críticas de negocio │
│ ├── Código de seguridad │
│ ├── Migraciones de datos │
│ └── Integraciones complejas │
│ │
└─────────────────────────────────────────────────────────────┘
❌ NO IDEAL PARA:
┌─────────────────────────────────────────────────────────────┐
│ • Tareas rutinarias y repetitivas │
│ • Trabajo que una persona puede hacer fácilmente │
│ • Cuando el equipo está distribuido sin buenas herramientas│
│ • Tareas que requieren trabajo individual profundo │
└─────────────────────────────────────────────────────────────┘
Estructura de Sesión
ANATOMÍA DE UNA SESIÓN DE MOB
═════════════════════════════
SETUP (5 min):
┌─────────────────────────────────────────────────────────────┐
│ ☐ Definir el objetivo de la sesión │
│ ☐ Verificar que todos tienen el contexto │
│ ☐ Preparar ambiente (pantalla, timer, snacks) │
│ ☐ Acordar reglas (rotación, breaks) │
└─────────────────────────────────────────────────────────────┘
SESIÓN (45-60 min):
┌─────────────────────────────────────────────────────────────┐
│ • Rotación cada 10-15 min │
│ • Driver solo escribe lo que navigators dicen │
│ • Todos contribuyen ideas │
│ • Discusiones breves, decisiones rápidas │
│ • Si hay desacuerdo: probar la idea más simple primero │
└─────────────────────────────────────────────────────────────┘
BREAK (10-15 min):
┌─────────────────────────────────────────────────────────────┐
│ • Alejarse de la pantalla │
│ • Estirar, caminar, café │
│ • Procesar mentalmente lo trabajado │
└─────────────────────────────────────────────────────────────┘
WRAP-UP (5 min):
┌─────────────────────────────────────────────────────────────┐
│ ☐ ¿Qué logramos? │
│ ☐ ¿Qué queda pendiente? │
│ ☐ ¿Qué aprendimos? │
│ ☐ ¿Próxima sesión necesaria? │
└─────────────────────────────────────────────────────────────┘
Reglas del Mob
REGLAS FUNDAMENTALES
════════════════════
1. RESPETO Y AMABILIDAD
┌─────────────────────────────────────────────────────────────┐
│ • Tratar todas las ideas como válidas │
│ • No criticar personas, discutir ideas │
│ • "Sí, y..." en lugar de "No, pero..." │
│ • Paciencia con diferentes velocidades │
└─────────────────────────────────────────────────────────────┘
2. COMUNICACIÓN CLARA
┌─────────────────────────────────────────────────────────────┐
│ Navigator al Driver: │
│ │
│ ❌ "Haz un loop" │
│ ✅ "Escribe 'for item in items'" │
│ │
│ ❌ "Eso está mal" │
│ ✅ "Cambia el nombre a 'calculate_total'" │
│ │
└─────────────────────────────────────────────────────────────┘
3. PARTICIPACIÓN ACTIVA
┌─────────────────────────────────────────────────────────────┐
│ • Todos opinan, nadie domina │
│ • Si no entiendes, pregunta │
│ • Si ves algo, dilo │
│ • Silencio no es consentimiento │
└─────────────────────────────────────────────────────────────┘
4. ENFOQUE EN EL OBJETIVO
┌─────────────────────────────────────────────────────────────┐
│ • Una cosa a la vez │
│ • Parking lot para tangentes │
│ • "¿Esto nos acerca al objetivo?" │
└─────────────────────────────────────────────────────────────┘
Beneficios del Mob Programming
POR QUÉ FUNCIONA
════════════════
CALIDAD:
┌─────────────────────────────────────────────────────────────┐
│ • Code review en tiempo real │
│ • Múltiples perspectivas = menos bugs │
│ • Mejores decisiones de diseño │
│ • Código más mantenible │
└─────────────────────────────────────────────────────────────┘
CONOCIMIENTO:
┌─────────────────────────────────────────────────────────────┐
│ • Bus factor aumenta (todos saben todo) │
│ • Onboarding más rápido │
│ • Cross-training natural │
│ • Menos silos de conocimiento │
└─────────────────────────────────────────────────────────────┘
EQUIPO:
┌─────────────────────────────────────────────────────────────┐
│ • Mejor comunicación │
│ • Ownership colectiva │
│ • Moral mejorada │
│ • Menos conflictos (decisiones en tiempo real) │
└─────────────────────────────────────────────────────────────┘
EFICIENCIA:
┌─────────────────────────────────────────────────────────────┐
│ • Sin esperas por code review │
│ • Menos context switching │
│ • Bloqueos resueltos inmediatamente │
│ • Flow continuo │
└─────────────────────────────────────────────────────────────┘
Mob Remoto
MOB PROGRAMMING DISTRIBUIDO
═══════════════════════════
HERRAMIENTAS:
┌─────────────────────────────────────────────────────────────┐
│ │
│ VIDEO: │
│ ├── Zoom, Meet, Teams │
│ └── Cámaras encendidas (leer el room) │
│ │
│ CÓDIGO COMPARTIDO: │
│ ├── VS Code Live Share (excelente) │
│ ├── CodeTogether │
│ └── Screen share + control remoto │
│ │
│ TIMER: │
│ ├── Mob Timer apps │
│ └── Visible para todos │
│ │
└─────────────────────────────────────────────────────────────┘
TIPS PARA REMOTO:
┌─────────────────────────────────────────────────────────────┐
│ • Rotaciones más cortas (fatiga de pantalla) │
│ • Breaks más frecuentes │
│ • Verbalizar más (no hay lenguaje corporal) │
│ • Check-ins regulares: "¿Todos siguen?" │
│ • Usar chat para ideas secundarias │
└─────────────────────────────────────────────────────────────┘
Tracking en GitScrum
GESTIONANDO SESIONES EN GITSCRUM
════════════════════════════════
TAREA DE MOB SESSION:
┌─────────────────────────────────────────────────────────────┐
│ │
│ [MOB-15] Refactorizar módulo de autenticación │
│ │
│ Tipo: Mob Session │
│ Duración: 2h │
│ Participantes: @ana @juan @maria @pedro │
│ │
│ Objetivo: │
│ └── Simplificar flujo de login, eliminar código duplicado │
│ │
│ Resultado: │
│ ├── ✅ Flujo simplificado de 5 pasos a 3 │
│ ├── ✅ 200 líneas de código eliminadas │
│ └── ✅ Tests actualizados │
│ │
│ Learnings: │
│ └── Juan ahora entiende el módulo de auth │
│ │
└─────────────────────────────────────────────────────────────┘
LABELS:
┌─────────────────────────────────────────────────────────────┐
│ 👥 mob-session │ Trabajo en mob │
│ 🎓 knowledge-share │ Foco en transferencia │
│ 🔧 complex-problem │ Problema difícil │
└─────────────────────────────────────────────────────────────┘