Monday, 20 July 2009

Programación en Pareja (Pair Programming)

Muchas de mis conversaciones me han llevado a hablar sobre diversos axiomas o principios del Agile. Siempre intento seguir el DRY (Don't repeat yourself) y el YAGNI (You ain't gonna need it). Otro buen principio es el Pair Programming. En que consiste la programación en Pareja?, pues bien consiste en que 2 programadores combinas sus esfuerzos de desarrollo en un mismo sitio de trabajo. Por lo tanto, cada uno realiza una acción que otro no está haciendo: mientras uno codifica, el otro prueba unidades o piensa en ejemplos. La persona que pica el código es el "Driver" y el que revisa el código es el "Observer". Los 2 programadores deben intercambiar roles cada x tiempo. Diversos estudios demuestran que la programación en pareja es un 15% más lenta que la programación normal, pero que genera un 15% menos de errores.


  • Beneficios de la programación en pareja:
  1. Mejores Ideas - brainstorming continuo, conocimiento más amplio del problema y menos lagunas en la comprensión y mejores habilidades para resolver problemas de diseño.
  2. Mejor Calidad - menos errores, validación instantánea de ideas, enfoque coherente y una adhesión más estricta a las convenciones del equipo.
  3. Mejor Conocimiento - compartir experiencia y conocimiento, mayor entendimiento del porqué, cómo y que fue hecho.
  4. Incremento de la Productividad - mejor enfoque y mayor intensidad, impulsando y motivando a los demás para lograr mejores resultados y perder menos el tiempo.
  5. Mayor disfrute - a la mayoría de las personas les gusta trabajar en grupo y resolver conjuntamente problemas de interés..
  • Cuándo se vuelve efectivo?
Como podemos ver en el gráfico, el factor más importante es emparejar las habilidades y los retos. En la programación solitaria (Solo Programming) uno es más productivo en el modo de Flujo ya que sus habilidades y retos están igualados. El Pair programming crea un modo más eficaz, el Coaching en el que se aumenta la productividad global.

Conseguir el éxito:
  1. Modo Flujo - dos programadores trabajando en un difícil e interesante problema. Pueden tener diferentes habilidades y desafíos, pero ambos son capaces de encontrar una buena solución. Se puede obtener mediante el flujo de trabajo la resolución de una tarea compleja que combina su capital intelectual, conocimiento y experiencia para crear la mejor solución.
  2. Modo Coaching - Un programador experto con experiencia y conocimientos para resolver el problema los comparte con otros programadores que no puede resolver el problema por sí solo. Este programador junior tiene más fundamentos para entender la solución y aplicación. Se aprende y se crece para poder convertirse en un mejor programador.
Conseguir el fracaso:
  1. Desperdiciar el tiempo de los expertos - el problema es demasiado simple que hace que la participación de expertos sea ineficaz.
  2. Novato Abrumado - el problema es demasiado complejo o requiere de nuevos conocimientos que impiden que el programador aprenda algo útil.
En conclusión, el pair programming es una de las herramientas más útiles en el arsenal de un equipo de software. Ahora intenta saber cuándo y cómo utilizarlo.

  • Referencias de interés:
Pair Programming Illuminated.
Extreme programming and Agile methods.
Favourite Jokes.

1 comment: