People programming together.

馃檶 Mob Programming

December 27, 2020

El Mob Programming o programaci贸n en grupo es una forma de desarrollo en el que un grupo de profesionales trabajan en un mismo problema, al mismo tiempo y en un mismo entorno de trabajo.

Es un modo de trabajo en el que se aprovechan las cualidades colaborativas para crear un entorno de trabajo de crecimiento y aprendizaje.

Roles

En esta modalidad de trabajo se distinguen, como en el Pair Programming, dos roles:

El rol de Driver es llevado por una sola persona al mismo tiempo y es aquel que sigue las indicaciones de los Navigators, que son aquellos que proponen ideas, buscan informaci贸n y gu铆an al Driver.

La diferenciaci贸n entre los dos roles es un modo de reducir la carga cognitiva de pensar una soluci贸n e implementarla al mismo tiempo, que es lo que hacemos cuando trabajamos solos. De este modo tenemos m谩s espacio para pensar, aprender y llegar a una mejor resultado.

Lo ideal es que estos roles vayan variando frecuentemente para reducir el desgaste y cambiar el punto de vista lo que siempre enriquece las sesiones.

Otro punto importante es la planificaci贸n de estas rotaciones as铆 como los descansos. Una vez se acuerden entre los miembros del grupo es necesario respetarlos. Por ello, es necesario tener sistemas para compartir el c贸digo de forma r谩pida o por otra parte disponer de alg煤n sistema de control remoto.

Feedback

La gran ventaja de esta metodolog铆a es su ciclo de feedback instant谩neo en el que tenemos retroalimentaci贸n inmediata sobre la soluci贸n que estamos implementando. As铆 como una mejor calidad en el c贸digo.

Por otra parte hay que estar atento a los problemas que nos podemos encontrar. Uno de los m谩s peligrosos es el pensamiento de grupo que evita la generaci贸n de nuevas ideas.

A continuaci贸n lanzar茅 algunas ideas interesantes que aprend铆 de Agile New England en su webinar del 25 de junio de 2020.

En ocasiones con encontramos con inconvenientes como que la sesi贸n es ocupada totalmente por una persona que es capaz de lanzar muchas ideas y eso no es negativo per se. El problema es que el mindset del Mob es la participaci贸n de todos los integrantes as铆 enriqueciendo la sesi贸n. Por tanto, a veces es necesario que alguien tome un rol de moderador o facilitador. Esta persona, normalmente con m谩s experiencia, puede dar a las sesiones m谩s dinamismo de modo que todas las personas tengan voz.

Otro punto importante es el cambio frecuente de roles. De esta manera, todos los participantes se ven obligados a un cambio de marco mental. Y en caso de que un driver tenga una idea que se quiera poner a prueba, este driver ceder谩 su puesto y pasar谩 a navigator y guiar谩 su implementaci贸n.

Que la persona que tiene las ideas sea la misma persona que hace de driver es una perdida de cualidades de Mob y Pair Programming. Por lo general es el driver el que se tiene que esforzar por seguir y entender a los navigators, lo que har谩 que se genere un aprendizaje por parte del driver.

Por lo general, el que m谩s aprendizaje acumula es el driver, ya que en el momento su nivel de concentraci贸n y compromiso con el problema es mayor. Por eso es necesario rotar el puesto.

Una buena pr谩ctica al final de cada sesi贸n de Mob es realizar una peque帽a retrospectiva del aprendizaje de la sesi贸n y realizar sugerencias para mejorar pr贸ximas sesiones.

Hay momentos en los que la sesi贸n no puede estar siendo todo lo productiva que se desear铆a y para ese momento es deseable que alguien adopte el rol de "navigator de navigators" que sugerir谩 caminos e ideas a los navigators para desatascar la sesi贸n.

Tambi茅n hay veces en los que dos miembros del equipo sugieren dos soluciones a un mismo problema. En este caso lo mejor es aplicar la soluci贸n del m谩s junior primero. Esto permite iterar entre ideas m谩s r谩pidamente y aprender de los errores.

Una gran ventaja de este tipo de pr谩cticas es el sentimiento de comunidad y tribu que se genera colaborando para alcanzar un objetivo com煤n. Se genera un sentimiento de comunidad muy fuerte entre sus integrante que es proporcional al compromiso de los mismos.

Si todos saben como solucionar el problema no tiene sentido trabajar en grupo. Cuanto m谩s dif铆cil es un problema, m谩s necesario es hacer Mob.

Trabajar en Mob deber铆a ser una opci贸n. Si el equipo o una persona no quiere trabajar en Mob no tiene sentido obligarla. De otra manera no se aprovechar铆an todas las ventajas de la pr谩ctica.

Conclusi贸n

Descubrir el Mob Programming a sido para m铆 una grata e inesperada sorpresa. En mi formaci贸n siempre hab铆a trabajado solo y tengo que confesar que a煤n me cuesta trabajar en equipo, pero pongo mi mejor esfuerzo en mejorar. Siempre me he sentido m谩s c贸modo trabajando solo, pero era por no ser consciente realmente de las grandes ventajas del trabajo en equipo y el c铆rculo virtuoso que es capaz de generarse. Por lo tanto, mi intenci贸n es seguir trabajando en Mob Programming y aprovechar sus grandes virtudes.

Recomiendo visitar la web https://www.remotemobprogramming.org/ para m谩s obtener m谩s informaci贸n.