Paquete de programasEs más divertido de lo que parece: dos programadores en una computadora. Uno conduce, el otro navega. Los roles cambian con fluidez, se comunican constantemente. Juntos, logran terminar el trabajo más rápido de lo que podrían estando solos.

El conductor tipea. Se enfoca en las tácticas - escribir código limpio que compile y funcione. El navegante se enfoca en la estrategia - cómo encaja este código en el diseño general, qué pruebas harán que el código avance, y qué refactors mejorarán la base de código.

Las parejas se auto-gestionan, seleccionan compañeros que puedan ayudar con la tarea en curso. Rotan cada un par de horas para compartir perspectivas y conocimiento.

La programación de a pares (nos ayudamos entre nosotros)

¿Querrías tener a alguien que te esté mirando trabajar todo el día? ¿Querrías desperdiciar la mitad del día, estando sentado en silencio mirando a otro escribir código?

Por supuesto que no. Nadie quiere eso - especialmente las personas que hacen programación de a pares.

La programación de a pares es una de las primeras cosas que las personas suelen notar de Extreme Programming (XP). ¿Dos personas con un único teclado? Es raro. Y también es extremadamente poderoso y, una vez que uno se acostumbra, muy divertido. La mayoría de los programadores que prueban la programación de a pares la prefieren a trabajar solos.

¿Por qué de a pares? (¡Para pensar!)

La programación de a pares es para incrementar la actividad mental, la forma de pensar.

Cuando estamos en pareja, una persona escribe código - el conductor. La otra persona es el navegante, y su trabajo es pensar. Como navegante, a veces se piensa en lo que el conductor está escribiendo (no te apures en señalar puntos y comas faltantes... es molesto). A veces se piensa en qué tareas trabajar a continuación, y a veces se piensa sobre cómo armonizar el trabajo en el diseño general.

Esta división le permite al conductor trabajar de forma libre en los desafíos tácticos de crear código riguroso y sintácticamente correcto, sin preocuparse por los temas generales, y le brinda al navegante la oportunidad de considerar la estrategia sin distraerse por los detalles del código. Juntos, el conductor y el navegante crean productos de mayor calidad y más rápido de lo que podrían hacerlo por separado (un estudio reveló que a a la pareja le lleva 15% más esfuerzo que estando sólo, pero produce resultados más rápido y con 15% menos de defectos (Cockburn y Williams) - todos los equipos son diferentes, así que hay que tomar los resultados con pinzas).

Trabajar en pareja también refuerza buenos hábitos de programación. XP usa los conceptos de pruebas continuas y mejoras al diseño, que requieren de mucha disciplina. Cuando se está en parejas, se tiene una presión positiva para realizar estas tareas difíciles y cruciales. Se reparte el conocimiento del código y los consejos en todo el equipo.

También vamos a pasar más tiempo fluyendo - ese estado super productivo en el cual estamos completamente inmersos en el código. Es un fluir diferente al normal, porque estamos trabajando con un compañero, pero es mucho más resistente a las interrupciones. Para empezar, a los compañeros de oficina les suele resultar más difícil interrumpir a alguien que está acompañado. Cuando lo hacen, una persona puede manejar la interrupción mientras que la otra sigue concentrada. Más aún, las parejas se prestan más atención y suelen "olvidarse" del ruido de fondo.

Y si eso no fuera suficiente, trabajar en parejas es muy divertido. Nos será más fácil superar bloqueos y problemas. La mayor parte del tiempo estaremos colaborando con personas inteligentes y abiertas. Y además, si nos cansamos de tipear, le podemos dar el teclado a nuestra pareja y seguiremos siendo productivos.

Cómo hacer programación de a pares

Recomiendo hacer programación de a pares para todo el código productivo. Muchos equipos que trabajan frecuentemente en parejas, descubren que encuentran más defectos en el código escrito de manera solitaria. Una buena regla general es trabajar en parejas para cualquier cosa que necesitemos mantener, lo cual incluye pruebas y scripts de construcción.

Cuando se empieza a trabajar en una tarea, le preguntamos a otro programador para que trabaje con nosotros. Si otro programador nos pide ayuda, nos sumamos. Nunca hay que asignar compañeros: las parejas son fluidas, se forman naturalmente y cambian durante el día. En el tiempo, estamos en pareja con todos en el equipo. Esto ayuda a mejorar la cohesión del equipo y distribuye las habilidades de diseño y el conocimiento por todo el equipo.

[inset side="right" title="Consejo"]Cambiá de pareja para tener una perspectiva nueva del problema.[/inset]

Es bueno cambiar de parejas cuando necesitamos una perspectiva nueva. Generalmente hago un cambio cuando me siento frustrado o bloqueado. Una persona se queda con la tarea para que la nueva pareja pueda entrar en tema. A menudo ayuda el sólo explicarle el problema a alguien.

Es buena idea rotar parejas varias veces por día, incluso aunque no estemos bloqueados. Esto ayuda a que todos estén informados y se muevan con velocidad. Se puede rotar cada vez que se termina una tarea. Si se trabaja en una tarea grande, se puede rotar cada cuatro horas.

Cuando nos sentamos a programar en parejas debemos asegurarnos de estar cómodos físicamente. Ubicar las sillas lado-a-lado, dejando espacio personal para cada persona, y asegurarse que el monitor sea claramente visible. Cuando estamos conduciendo, ubicar el teclado justo en frente a nosotros. Presten atención a esto - por algún motivo, las personas tienden a estirarse para usar el teclado y el ratón, en vez de acercarlos.

[inset side="right" title="El apagón"]Cuando una pareja se "apaga" (habla menos, baja la voz, o no rota con otras parejas) en general es un síntoma de problemas técnicos.[/inset]

Las parejas producen código a través de la conversación. Debemos pensar en voz alta, tanto si conducimos o navegamos. Ir avanzando de a pasos pequeños de diseño (TDD es lo mejor para esto) - y hablar sobre los presupuestos, objetivos a corto plazo, la dirección general, y cualquier historia relevante de la característica o del proyecto. Si estás confundido sobre algo, realizá preguntas. La discusión puede ayudar a tu pareja tanto como a vos.

Es común que las parejas se sientan cansadas al terminar el día. Las parejas suelen sentir que trabajaron más y lograron más resultados que cuando trabajan solos. Es por esto que el equipo debe practicar el Trabajo Energizante para mantener su habilidad de trabajar de a pares todos los días.

¿Qué es el Trabajo energizante?

Los profesionales trabajan mejor y son más productivos cuando tienen energías y están motivados. Para lograr esto, debemos combinar tiempo de calidad para distendernos, y atención enfocada en el trabajo.

Volver a casa en hora, todos los días. Pasar tiempo con familia y amigos, y hacer actividades que nos saquen la cabeza del trabajo. Comer alimentos sanos, hacer ejercicio, dormir el tiempo suficiente.

En el trabajo, dar toda nuestra atención. Apagar el teléfono y quitar todas las las interrupciones, como el e-mail y los mensajeros instantáneos.

El trabajo energizante se apoya en una visión clara y en crear planes realizables. Debemos proteger a los equipos de las políticas organizacionales destructivas y de las reuniones inútiles.

Traducido de The art of agile development: Pair Programming, por James Shore.

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw