10. mar., 2017

¿ Qué es Mob Programming ?

A pesar de que es un término que se emplea desde los años 90s es un término desconocido para muchos y ahora con el Boom del agilismo se ha disparado un poco su utilización.  

Para algunos Jefes y directivos incrédulos se piensa que es una pérdida de recursos y tiempo. Sin embargo, para muchos es la oportunidad de tener un mejor código al poseer las fortalezas de muchos programadores juntas en un solo espacio y también es una forma de identificar errores y mejores opciones de diseño porque a veces como programadores nos sesgamos a tener una pieza monolítica de código que pensamos no se puede mejorar - cuando en realidad si lo es.

A pesar de que es una técnica relativamente experimental como práctica continua ha mostrado buenos resultados en muchas compañías. Inicialmente se dio pie a la programación por pares y luego se han creado tríos y cuartetos de personas. En la figura que se muestra se aprecia como una pantalla se comparte a  todo el equipo y hay un programador que va liderando o piloteando la sesión recibiendo retroalimentación del resto que lo acompañan - que los llaman navegadores. Estos trabajadores se van turnando las funciones así se fomenta que todo el mundo esté activo y en cualquier momento puedan seguir con la tarea. En cualquier caso, los navegantes pueden utilizar sus propios ordenadores para buscar soluciones, buscando dudas y dárselas al piloto para que continúe fluyendo sin bloqueos. 

Es claro que trabajar en un solo monitor con 4 personas es díficil por eso se da el salto a un proyector o una pantalla gigante. En esta técnica se emplean  workshops de diseño en conjunto para definir componentes de arquitectura, refactorizaciones importantes a nivel de framework o para realizar ensayos de alternativas de diseño con todo el equipo unido.

Lo que dicen quienes han trabajado bajo este esquema es que lo que funciona realmente es probar e ir aprendiendo de las interacciones. Se tiene como ventaja el conocimiento individual de cada uno y el conocimiento colectivo que se genera de cada sesión.

Algunos autores han propuesto 3 principios para lograr éxito con esta técnica:

1) Trabajar juntos en una única tarea al mismo tiempo. Esto permite eficiencia y toma de decisiones más ágiles. Por otro lado al poseer foco sobre una tarea entonces es posible dividir también el trabajo entre los participantes con tareas más pequeñas y no se puede olvidar que es interesante seleccionar tareas que impliquen refactor de código para realizar un poco de “terapia” y analizar  en un codereview práctico el código común luego.

2) Colaborar en tiempo real.

Lo importante del mob programming es que fluyan las ideas. El piloto es quien guía pero los navegantes van aportando ideas para la toma de decisiones en conjunto. Así sin darse cuenta, todo el equipo participa sin distinción entre seniors o juniors, aprendiendo los unos de los otros generando transferencia de conocimiento.

3) Todo el mundo en el mismo lugar.

Para maximizar la productividad lo mejor es que todos se reserven una hora o dos en una sala de reunión. Incluso es beneficioso convencer a personas que participan en la tarea pero no son programadores, como gente de usabilidad , experiencia de usuario, expertos de seguridad y performance o del negocio para que se unan, al menos un rato, al mob programming para tomar decisiones sobre la marcha que no estén aun capturadas en los requisitos de negocio. Es una buena forma de potenciar el feedback directo eliminando ruido.

Esto es lo que podemos compartir de la técnica. Si les gustó por favor compartanla y no olviden que nos pueden dejar comentarios en nuestra página en el siguiente enlace: http://www.pmpmedellin.com/430856294

Autor : Ing. Javier León Reyes

Twitter e Instagram : @PMPMedellin

Fuentes consultadas:

http://blog.soat.fr/2014/05/le-mob-programming-presentation/

http://www.codeandbeyond.org/2016/05/3-dudas-sobre-extreme-programming.html

https://www.genbetadev.com/trabajar-como-desarrollador/mob-programming-empujando-a-tu-equipo-de-desarrollo-a-la-mejora-del-codigo-comun