Probar gratis
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                    │
└─────────────────────────────────────────────────────────────┘

Soluciones Relacionadas de GitScrum