Intenté programar en parejas varias veces, incluso en una organización que (brevemente) consideró implementarlo como un proceso obligatorio para todos los ingenieros (se puede adivinar qué tan bien surgió esa idea). Personalmente, lo odiaba.
Las razones que enumero a continuación son solo mis experiencias subjetivas, y no puedo 'medir' su impacto en términos concretos. Pero aquí son todos iguales:
1 - Tener un 'navegador' y un 'conductor' solo ayuda si el primero es vocal y el segundo escuchará.
Todos hemos conocido desarrolladores que son tercos, celosos de alguna preocupación teórica o patológicamente incapaces, psicológicamente, de 'tirar' el trabajo viejo cuando alguien sugiere un problema con él. Y todos conocemos a personas demasiado tímidas o confusas para plantear inquietudes o sugerir casos esquimales.
Cuando este tipo de desarrolladores están emparejados, el navegador rápidamente toma un rol pasivo, y lo que termina es la programación única con una revisión automática de código. Este es un monumental desperdicio de recursos.
2 - El emparejamiento impide la creatividad.
Contrariamente a lo que se sentía anteriormente sobre el valor de la "lluvia de ideas grupal", el consenso en estos días es que el trabajo de conocimiento creativo requiere independencia y autonomía . Cuando trabajas solo, puedes hackear rápidamente alguna idea loca para ver si es realmente factible. Puedes armar sin palabras algún prototipo extraño, y si fallas, no importa, porque nadie lo sabe .
Compare eso con el emparejamiento: cuando quiero probar un nuevo concepto, tengo que convencer a mi compañero, hablar sobre la implementación, paso a paso, y esperar que no me juzguen si falla. Ese tipo de ambiente es tóxico para crear nuevas ideas.
3 - Diseño de mínimo común denominador.
Cuando un par no puede generar nuevas ideas, como se indicó anteriormente, o cuando los individuos no pueden ponerse de acuerdo sobre algún principio fundamental de cómo se debe diseñar una característica, lo que sale es un diseño confuso que intenta comprometer y no satisface a nadie.
Si emparejas a un desarrollador que construye abstracciones de programación funcionales maravillosas, elocuentes y hacia el cielo con un fenómeno de rendimiento rápido y sucio, el código que producirán juntos generalmente no será terriblemente elegante ni particularmente rápido.
4 - Falta de autonomía y transparencia violenta.
La transparencia violenta es una frase que saqué de una polémica moderadamente famosa (y bastante controvertida) contra la metodología Scrum. Describe la forma en que algunas organizaciones infantilizan a los desarrolladores y los tratan con la sospecha normalmente reservada para los trabajadores no profesionales.
Independientemente de lo que piense acerca de los "daños" de hacer que el trabajo de los desarrolladores sea completamente transparente (y puede que no esté de acuerdo en que es realmente un daño), muchas personas valoran su autonomía y su capacidad para trabajar solos, confiando en hacer lo correcto. Es una necesidad psicológica importante, y obligar a los desarrolladores a emparejarse (como he visto suceder en al menos una tienda) dejará a los empleados consternados, molestos y alienados.
5 - Algunos desarrolladores simplemente no juegan muy bien en parejas.
Algunas personas no pueden o no pueden comportarse adecuadamente en un entorno emparejado. Pueden tener mala higiene, malos hábitos de trabajo, una personalidad abrasiva, una manera "ruidosa" e "intensa", o una gran cantidad de otros atributos que los hacen buenos trabajadores individuales, pero pobres programadores de parejas.
¿Puedes resolver esto? Realmente no. Cambiar el comportamiento personal es difícil. Una tienda de programación de pares debe tener mucho cuidado con la contratación e invertir mucho tiempo para ver cómo alguien trabaja y si podrán trabajar bien con sus compañeros. Sin embargo, discriminar más a la personalidad significa que la contratación llevará más tiempo a menos que afloje sus estándares de habilidades y experiencia.