Mob programming: desarrollo de software en equipo

Una forma relativamente nueva de desarrollo de software es el llamado mob programming, que se centra en el trabajo en equipo. Con él, varios desarrolladores trabajan juntos en el mismo producto final.

Resumen: ventajas e inconvenientes del mob programming

Ventajas

Desventajas

✔ Incorporación sin complicaciones de nuevos miembros al equipo

✘ Más gasto de tiempo y personal

✔ Conocimientos especializados gracias a diferentes expertos

✘ La diferencia de opiniones puede provocar desacuerdos

✔ Responsabilidad compartida

✘ Difícil de aplicar durante el teletrabajo

✔ Código de mayor calidad

✔ Soluciones creativas y específicas

✔ Pruebas en equipo

¿Qué es el mob programming?

El mob programming es un método de desarrollo de software relativamente nuevo que se basa principalmente en el trabajo en equipos organizados. Inspirado en el agile development, es un método en el cual las estructuras jerárquicas que a menudo se interponen en la toma de decisiones deben ser disueltas. El fuerte enfoque en la colaboración también está inspirado en otros métodos ágiles de desarrollo de software.

El enfoque colaborativo del mob programming puede entenderse como una evolución del pair programming. Mientras que en este último los desarrolladores trabajan en el software en equipos de dos personas según el lema “cuatro ojos ven más que dos”, el tamaño del equipo en mob programming se incrementa a entre cinco y diez desarrolladores.

Pero a diferencia del tradicional trabajo en equipo, el mob programming tiene otras características especiales: en lugar de trabajar en varios ordenadores al mismo tiempo a través de herramientas de colaboración, como GitHub, en el mob programming solo se utiliza un terminal. A menudo se proyecta en la pared con la ayuda de un proyector para que lo vean todos los colaboradores. Además, los componentes del sistema global no se distribuyen a desarrolladores individuales especializados. En la programación en masa, todo el equipo trabaja simultáneamente en el mismo código. Incluso la creación de catálogos de requisitos o las pruebas y el despliegue del software terminado es un asunto de equipo.

Roles en el mob programming

Para estructurar el trabajo en equipo, se asignan diferentes roles a los miembros del equipo al principio de cada fase de mob programming. Sin embargo, estas funciones no son estáticas. Al cabo de cierto tiempo (normalmente de 15 a 30 minutos), se inicia un cambio de roles. En cada equipo hay un driver y varios navigators:

  • Driver: El driver es la persona que finalmente teclea el código. Es el que pone en práctica los conceptos e ideas desarrollados en el equipo.
  • Navigator: Los demás miembros del equipo se denominan navigators y desarrollan las ideas en colaboración.

Dependiendo del enfoque de mob programming que se siga, puede haber otras funciones entre los navigators:

Un destinated navigator estructura los planteamientos e ideas de los miembros del equipo y media entre las opiniones enfrentadas para que el driver no tenga que decidir entre distintas opciones. A menudo asume al mismo tiempo el papel de cronometrador, que asegura el cambio de roles dentro del equipo después de un determinado período de tiempo.

Además, algunos miembros del equipo pueden ser los llamados researchers. En caso de ambigüedades e incertidumbres, investigan y recogen información para todo el equipo. Este equipo también puede incluir a personas que no pueden aportar nada concreto a la fase de desarrollo, sino que se limitan a observar todo el proceso y hacer preguntas en caso de ambigüedades. Se les llama learners.

Reglas del mob programming

No está prescrito cómo debe diseñarse el mob programming. El diseño depende más bien del propósito y de la dinámica del equipo. No obstante, existen directrices cuyo cumplimiento contribuye al éxito del mob programming.

Es aconsejable conectar el ordenador del driver a una pantalla grande común o a un proyector para que todos los miembros del equipo puedan seguir el estado actual del código. Por tanto, la proximidad física también desempeña un papel importante en el mob programming: lo ideal es que todo el equipo de programación esté en el mismo lugar. Esta es la única manera de beneficiarse del intercambio directo y personal.

La asignación de funciones dentro del equipo también es un requisito importante para el éxito del mob programming. En particular, el cronometrador, que inicia el cambio de rol, es indispensable para aprovechar las ventajas del mob programming. El cambio dentro de los modelos de rol garantiza una nueva aportación constante.

Ventajas e inconvenientes del mob programming

El enfoque del mob programming ofrece una serie de ventajas. El intercambio de conocimientos del equipo garantiza un desarrollo de software creativo y orientado a los objetivos. Además, los desarrolladores pueden beneficiarse de la experiencia de sus colegas programadores y ampliar así sus conocimientos. En este contexto, el mob programming es ideal para introducir gradualmente a los nuevos empleados en los proyectos. El papel del learner, que existe específicamente para estos fines, es una parte integral de este modelo de desarrollo de software.

El mob programming también comparte la responsabilidad que conlleva el desarrollo de software, minimizando la presión sobre los desarrolladores individuales. Gracias a la formulación conjunta del código, es menos propenso a errores y de mayor calidad. Además, las pruebas conjuntas ayudan a garantizar la calidad del código. Por supuesto, esto también se ve mejorado por el hecho de que todo el equipo trabaja en el mismo código al mismo tiempo. Así, se eliminan de antemano los errores que surgen durante la integración de componentes de software desarrollados por separado.

Sin embargo, el mob programming también conlleva algunas desventajas. La más relevante es probablemente la considerable cantidad de tiempo y personal que se necesita para aplicar el enfoque ágil. Mediar entre diferentes opiniones sobre un mismo tema también puede acarrear problemas a la hora de programar un código coherente. Otro punto importante es que el mob programming funciona peor en el teletrabajo y, por lo tanto, no es aconsejable en este caso. Aunque hay enfoques que proponen el mob programming online, la posibilidad de un intercambio personal directo es un componente importante en el método.