Probar gratis
6 min lectura Guide 793 of 877

Sesiones de Mob Programming

El mob programming reúne a todo el equipo en problemas complejos. GitScrum ayuda a coordinar sesiones de mob y trackear sus resultados.

Fundamentos del Mob Programming

CONCEPTO DE MOB PROGRAMMING
═══════════════════════════

DESARROLLO TRADICIONAL:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  Dev A ───► Code ───► Review ───► Fix ───► Deploy          │
│    ▲                    │                                   │
│    │                    │ Feedback                         │
│    └────────────────────┘                                   │
│                                                             │
│  Ciclo: Días/Semanas                                        │
│  Rework: Alto                                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

MOB PROGRAMMING:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  Dev A + B + C + D ═══► Code ═══► Deploy                   │
│  (juntos)           (review     (ready)                    │
│                      incluido)                              │
│                                                             │
│  Ciclo: Horas                                               │
│  Rework: Mínimo                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Planificando Sesiones

CUÁNDO PROGRAMAR MOB SESSIONS
═════════════════════════════

TRIGGERS PARA MOB:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  ✅ Inicio de feature compleja                             │
│  ✅ Bug que nadie puede resolver solo                      │
│  ✅ Establecer patrones para nuevo código                  │
│  ✅ Nuevo miembro necesita onboarding                      │
│  ✅ Decisión arquitectural importante                      │
│  ✅ Código legacy que necesita entenderse                  │
│  ✅ Refactoring de alto riesgo                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

EN GITSCRUM:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  Story: Implementar nuevo sistema de caché                 │
│                                                             │
│  Subtareas:                                                 │
│  ├── [MOB] Diseño inicial y spike (2h)                     │
│  ├── [Individual] Implementar módulo A                     │
│  ├── [Individual] Implementar módulo B                     │
│  ├── [MOB] Integración y refine (2h)                       │
│  └── [Individual] Tests y documentación                    │
│                                                             │
│  Label: 👥 mob-session                                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Estructura de la Sesión

AGENDA DE MOB SESSION
═════════════════════

SESIÓN TÍPICA (2 horas):
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  00:00 - 00:10  SETUP                                      │
│  ├── Revisar objetivo                                      │
│  ├── Verificar que todos tienen contexto                   │
│  └── Preparar ambiente                                     │
│                                                             │
│  00:10 - 00:55  SESIÓN 1                                   │
│  ├── Rotación cada 10 min                                  │
│  ├── Driver solo escribe                                   │
│  └── Navigators dirigen                                    │
│                                                             │
│  00:55 - 01:05  BREAK                                      │
│  └── Alejarse de pantalla                                  │
│                                                             │
│  01:05 - 01:50  SESIÓN 2                                   │
│  └── Continuar rotación                                    │
│                                                             │
│  01:50 - 02:00  WRAP-UP                                    │
│  ├── ¿Qué logramos?                                        │
│  ├── ¿Qué sigue?                                           │
│  └── Documentar decisiones                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Roles en el Mob

ROLES Y RESPONSABILIDADES
═════════════════════════

DRIVER (1 persona):
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  QUÉ HACE:                                                  │
│  ├── Tiene el teclado                                      │
│  ├── Escribe lo que navigators dicen                       │
│  └── Hace preguntas de clarificación                       │
│                                                             │
│  QUÉ NO HACE:                                               │
│  ├── Implementar sus propias ideas                         │
│  ├── Tomar decisiones unilaterales                         │
│  └── Adelantarse a las instrucciones                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

NAVIGATOR (1 persona principal):
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  QUÉ HACE:                                                  │
│  ├── Da instrucciones claras al driver                     │
│  ├── Piensa en el siguiente paso                           │
│  └── Incorpora ideas del mob                               │
│                                                             │
│  COMUNICACIÓN:                                              │
│  ├── Nivel correcto de abstracción                         │
│  ├── "Crea una función llamada calculateTotal"             │
│  └── No "Haz un loop o algo"                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

MOB (resto del equipo):
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  QUÉ HACEN:                                                 │
│  ├── Observan activamente                                  │
│  ├── Contribuyen ideas                                     │
│  ├── Hacen preguntas                                       │
│  └── Detectan problemas                                    │
│                                                             │
│  PARTICIPACIÓN:                                             │
│  ├── Hablar cuando tienen algo que agregar                 │
│  └── No dominar la conversación                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Facilitación

TIPS DE FACILITACIÓN
════════════════════

MANTENER EL FLUJO:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  • Usar timer visible para rotación                        │
│  • Intervenir si alguien domina                            │
│  • Parking lot para tangentes                              │
│  • "¿Esto nos acerca al objetivo?"                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

MANEJAR DESACUERDOS:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  1. Escuchar ambas posiciones                              │
│  2. Timeboxear discusión (2 min)                           │
│  3. Si no hay consenso: probar la más simple               │
│  4. Evaluar después de implementar                         │
│                                                             │
│  "Let's try it and see" > debate interminable              │
│                                                             │
└─────────────────────────────────────────────────────────────┘

INCLUIR A TODOS:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  • Rotar navigator además de driver                        │
│  • Preguntar directamente a personas calladas              │
│  • "¿Alguien tiene una perspectiva diferente?"             │
│  • Celebrar contribuciones de todos                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Midiendo Efectividad

MÉTRICAS DE MOB SESSIONS
════════════════════════

POR SESIÓN:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  MOB SESSION: Diseño módulo de caché                       │
│                                                             │
│  Duración: 2h                                               │
│  Participantes: 5                                           │
│  Person-hours: 10h                                          │
│                                                             │
│  RESULTADOS:                                                │
│  ├── Diseño completo y acordado                            │
│  ├── Código inicial funcionando                            │
│  ├── 0 bugs en posterior review                            │
│  └── Todos entienden el módulo                             │
│                                                             │
│  COMPARACIÓN (si se hubiera hecho individual):             │
│  ├── ~6h desarrollo individual                             │
│  ├── ~2h review                                            │
│  ├── ~2h rework por feedback                               │
│  ├── ~2h explicar a otros                                  │
│  └── Total: ~12h + conocimiento en 1 persona               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

TRACKING EN GITSCRUM:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  Tags para análisis:                                        │
│  ├── #mob-session                                          │
│  ├── #knowledge-sharing                                    │
│  └── #complex-problem                                      │
│                                                             │
│  Custom fields:                                             │
│  ├── mob_participants: 5                                   │
│  ├── mob_duration: 2h                                      │
│  └── post_bugs: 0                                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Mob Remoto

MOB PROGRAMMING DISTRIBUIDO
═══════════════════════════

SETUP TÉCNICO:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  VIDEO CALL:                                                │
│  ├── Zoom, Meet, Teams                                     │
│  ├── Cámaras ON (importante ver reacciones)                │
│  └── Micrófonos de buena calidad                           │
│                                                             │
│  CÓDIGO COMPARTIDO:                                         │
│  ├── VS Code Live Share (recomendado)                      │
│  ├── Todos pueden editar cuando son driver                 │
│  └── Cursor de cada persona visible                        │
│                                                             │
│  TIMER:                                                     │
│  ├── Mob Timer online                                      │
│  └── Compartido en pantalla                                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

AJUSTES PARA REMOTO:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  • Rotaciones más cortas (10 min vs 15)                    │
│  • Breaks más frecuentes (cada 40 min)                     │
│  • Verbalizar más (no hay lenguaje corporal)               │
│  • Check-ins: "¿Todos siguen?" cada 15 min                 │
│  • Chat para ideas secundarias sin interrumpir             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Soluciones Relacionadas de GitScrum