El “pair programming” se basa en que dos programadores trabajan juntos en un solo ordenador. Uno de ellos desarrolla mientras que el otro ayuda y revisa el código del compañero. No me hace falta decir más para que entendáis lo controvertido de esta técnica. Los hay que dicen que es un desperdicio de tiempo, que es dividir la capacidad del equipo en un 50%, que “cuando lo escuchó mi jefe no paro de reírse”, etc. Y los hay que dicen que su uso acaba mejorando el desarrollo, en lo que refiere a calidad e incluso productividad.
Y a todo esto añado que, en mi experiencia, son poquísimas las empresas que han dado el paso de implantar el pair programming. Son demasiadas las dudas y el miedo al respecto.
Pero ¿en qué puede ayudarte el pair programming? Principalmente mejorando la productividad, la transferencia de conocimiento y, obviamente, el trabajo en equipo. Veamos como…
¿Mejora la productividad el pair programming?
Este es uno de los aspectos más controvertidos, ya que los escépticos de esta técnica aseguran que el pair programming divide a la mitad la capacidad del equipo.
Como todo en esta vida, no hay una única y absoluta respuesta sobre si esto es cierto, si el pair programming mejora o no la productividad. No obstante, se han realizado numerosos casos de estudio al respecto, véase por ejemplo éste o éste, los cuales, normalmente, concluyen en que a la larga (no en el primer proyecto) se mejora la productividad del equipo con el pair programming.
Entre todos estos estudios, sin duda, uno de los más populares es aquel en el que participaron los famosos Ward Cunningham y Ron Jeffries, un experimento realizado en la Universidad de Utah en 1999. En este experimento un conjunto de programadores con experiencia tenían que hacer 3 ejercicios de programación, un tercio del grupo programó de forma individual y el resto por parejas. Y del estudio se extrajeron las siguientes conclusiones:
- En cuanto al tiempo que tardaron en el primer ejercicio, los que programaron en parejas emplearon un 15% de tiempo más que los que trabajaron de manera individual.
- Pero los pair programming fueron recortando ese tiempo en los ejercicios siguientes. Todo ello debido al proceso de acomodación que requiere trabajar en equipo.
- Los programas resultantes de los pair programming tenían, de media, un 15% menos de fallos y seguían de una manera más correcta los estándares de programación, llegando a tener un 30% menos de líneas de código.
¿Ayuda el pair programming a la transferencia del conocimiento?
Otro beneficio del pair programming es que el proyecto software no dependerá tanto de desarrolladores clave (te recomiendo aquí este post dedicado a los héroes). Gracias a la forma colaborativa de trabajar y el aprendizaje conjunto, siempre habrá más de un desarrollador familiarizado con la misma parte del sistema.
¿Mejora el pair programming el ambiente de trabajo?
Esto depende del equipo y de la empresa. Pero si hay un ambiente de trabajo en equipo, el pair programming ayuda por tres vías:
- Los programadores aprenden a trabajar en equipo.
- La comunicación fluye de forma más a menudo y más eficiente.
- Se crea un aprendizaje continuo, entre compañeros, y es más fácil que un nuevo miembro del equipo se ponga rápido a trabajar y conocer el entorno.
Pero claro, también hay quien piensa que el pair programming invade su trabajo. Aunque según los distintos experimentos y casos de estudio más de un 80% de los programadores que usan durante un tiempo el pair programming aseguran que están satisfechos con la práctica ya que confían más en el producto resultante y en la calidad del mismo.
Alguna conclusión sobre el pair programming …
Como comentaba al principio, no hay una única y absoluta respuesta sobre si el pair programming mejora o no la productividad. Depende del equipo, de la empresa, etc. Lo que sí está claro es que ayuda principalmente a medio plazo, no en el primer proyecto. Lo mejor, si es posible, hacer una prueba controlada.
Y que al final tampoco es algo mágico. Como comentaba Michael Kirby, al relatar su experiencia implantando el pair programming, no te esperes que si tienes programadores malos, juntos hagan buen código, si son malos, juntos también serán igualmente malos.
Si alguien tiene experiencia en el tema o algún comentario…estaríamos encantados de leerlo.
- Diario: cómo Javier Garzás evita quedarse obsoleto estudiando a un X10 con IA-Esteroides - 7 noviembre, 2024
- Si creas Historias de Usuario con IA ¿A quién pertenecen? ¿A ti o la IA? El mono Naruto te lo explica - 31 octubre, 2024
- HistorIAs de usuario y como a Maximiliano lo ENGAÑABAN con la IA y como una viejuna historia del 1500 le salvó - 24 octubre, 2024
Pingback: Bitacoras.com
Uno de los impedimientos para la implantacion del pair programming en las empresas es que dos personas tienen que estar sentadas delante de un solo ordenador, con lo cual parece que uno hace algo y que el otro le vigila o simplement mira
¿Pero como sería hacer Pair Programming si pudieran estar los dos desarrolladores trabajando en sus entornos de desarrollo a la vez que estan enlazados en modo pair programming?
Pues basicamente sería una cosa así:
http://youtu.be/XQQih5zFb6E?hd=1 (video en ingles)
A medida que esta tecnologia crece ya no existira la excusa de que uno esta quieto y el otro trabaja.
Al menos para Visual Studio ya se puede hacer,
Hola,
Nuestra experiencia no fue positiva. Lo intentamos aplicar. Somos una empresa mediana, y el tema no fue muy bien. Creemos casi con total seguridad que es porque se necesita un equipo muy compenetrado. O seguir probando con ello mucho tiempo, pero la inversión tiene un limite y esta practica nos daba demasiada incertidumbre.
Saludos
Hola Jesus
Efectivamente, lo de estar en la misma ubicación es un problema en equipos distribuidos.
Interesante el video. Está claro que sería una alternativa. En mi opinión un medio pair programming, ya que la esencia del pair programming es que una cabeza esté alejada del ordenador, donde uno se pierde más en los detalles.Pero para la distribución hay que buscar… arreglos
Saludos!
Hola.
Obviando la dificultad de vender esto internamente plantea problemas psicológicos principalmente de dominancia/dependencia. Mi pregunta es ¿qué ventaja tiene sobre el método desarrollador más probador realizado por personas distintas?
Pingback: Resumen de la semana – del 25 de Junio al 1 de Julio - Javier Garzás, sobre calidad software y otros temas relacionados
Pingback: Revisión por pares « davidgu
Pingback: El coste de un bug « davidgu
Interesante el tema. A mi me ha funcionado bien y mal cuando me he inclinado por la técnica. No lo he usado siempre ni en proyectos completos, solo cuando ha sido necesario.
En este momento por ejemplo, tengo un programador que conoce el negocio y otro que es muy bueno en un lenguaje nuevo para el otro. Ambos son buenos elementos, pero juntos hacen en una semana lo que separados hacen en un mes.
Considero que el error esta en creer que una técnica u otra son soluciones, cuando al final son solo técnicas, estrategias, son parte de y no el todo.
Tambien a veces no me ha funcionado y entonces se cambia de forma temprana de tal forma de corregir y volver a estar al dia con el proyecto.
Espero sirva para otros, en el proyecto que estoy en este momento ha sido de mucha utilidad.
Saludos,
Milton Rafael Beltrant
MBS
El Salvador
Muy interesante! Como todos!
En mi caso tuve una mala experiencia con el «pair programming». En mi anterior empresa trabajábamos así un compañero y yo. Y todo iba bien. Cuando cambiamos de empresa y empezamos en una startup (3 programadores) tuvimos que desarrollar un producto lo más rápido posible. Nos dividimos las historias entre los 3 (no disponíamos del 15% de tiempo cortesía si queríamos lanzarlo a tiempo) y ahí nos dimos cuenta que el compañero que trabajaba conmigo en realidad tenía muy poca idea y se había ‘ocultado’ al haber trabajado a la par. Sus historias no salían nunca, estaban mal, etc etc
Por lo que creo que esto depende mucho del equipo, de las personas, de muchos y muchos factores 🙂
Yo aun así, en mi equipo les permito el pair programming, y sí, eso me cuesta charletas desde arriba del tipo ‘habla con estas dos personas que están todo el día juntas y estamos perdiendo el 50% de los recursos!!’ 😀
Gracias Javier!