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