Indice de contenidos
¿En qué consiste el Pair Programming?
La programación en pareja significa que dos desarrolladores trabajan juntos en un solo ordenador para resolver un problema. Es una forma muy colaborativa de trabajar y requiere mucha comunicación. Mientras los desarrolladores trabajan juntos en una tarea, no solo escriben código, sino que también planifican y discuten su trabajo, aclaran ideas, debaten enfoques y encuentran mejores soluciones.
En esta práctica, los desarrolladores alternan entre dos roles: conductor y navegante.
- El Conductor es la persona que está al teclado. Está concentrada en completar el pequeño objetivo que tiene entre manos, ignorando los problemas más importantes por el momento. Un conductor siempre debe hablar de lo que está haciendo mientras lo hace.
- El Navegante: Actúa como observador, revisando el código en tiempo real, ofreciendo instrucciones y compartiendo ideas. El navegante también está atento a problemas más grandes y toma notas sobre posibles próximos pasos u obstáculos.
La programación en pareja es una práctica común en los equipos ágiles y fue popularizada con el auge del eXtreme Programming (XP).
También existen versiones ampliadas de esta práctica, como la programación en grupo o «mob programming«, donde un conductor trabaja con varios navegantes.
Es una práctica compatible con estrategias de desarrollo como pueden ser TDD o BDD.
¿Cuál fue realmente el origen del Pair Programming?
Es sorprendente cómo el concepto de «Pair Programming» se practicaba en la década de 1950, mucho antes de que recibiera su denominación oficial. Fred Brooks mencionó en su libro de 1975 «The Mythical Man-Month» cómo él y su compañero de estudios William Wright probaron «Pair Programming» entre 1953 y 1956: «Produjimos 1,500 líneas de código, sin errores, todo funcionó correctamente al primer intento«.
En 1995, Larry Constantine escribió sobre su observación de los «dynamic duos» en Whitesmiths, Ltd. a principios de los años 80. Remarcó que el código se beneficiaba del pensamiento de dos mentes brillantes y del diálogo constante entre dos programadores de confianza. Concluyó que tener dos programadores en tándem no era redundante, sino una ruta directa hacia una mayor eficiencia y calidad.
En ese mismo año, Coplien definió en el libro «Pattern Languages of Program Design«, el patrón de trabajo conocido como «Developing in Pairs». Identificó las fuerzas de este patrón como:»A veces las personas sienten que solo pueden resolver un problema si tienen ayuda. Algunos problemas son más grandes que cualquier individuo.» La solución propuesta por este patrón organizacional es «asociar diseñadores compatibles para trabajar juntos»
Pero indudablemente, fue en 1999 cuando Kent Beck publicó el libro «eXtreme Programming Explained«, donde este enfoque alcanzó una mayor popularidad.
Beneficios del Pair Programming
Los beneficios del Pair Programming no siempre se producen. A veces, esta práctica no se adapta bien al equipo por ello es crucial evaluar cuándo y cómo implementarlo para asegurar su efectividad. Aunque algunos consideran que puede ser un desperdicio de recursos (¿o persona?) comparado con la programación en solitario, sus defensores afirman que mejora la calidad del código, acelera el desarrollo y fomenta el aprendizaje, aumentando así la productividad general del equipo a través de:
- Aumentar el Intercambio de Conocimientos: Facilita el intercambio de conocimientos entre los desarrolladores. Al trabajar juntos en una parte del código, ambos desarrolladores comparten su comprensión de la tecnología y del dominio del problema. Esto enriquece la base de conocimiento del equipo a la vez que evita que una sola persona posea la información crítica. Además, tener dos mentes analizando y discutiendo un problema impulsa la inteligencia colectiva incrementando las posibilidades de encontrar una solución óptima, gracias a las diferentes experiencias y perspectivas que cada uno aporta.
- Fomentar la Reflexión y Validación Constante: Fomenta una cultura de reflexión continua. Los desarrolladores deben explicar sus pensamientos y decisiones en voz alta, lo cual obliga a validar continuamente su comprensión y las soluciones propuestas. Las historias de usuario y el valor que estas aportan serán mejor comprendidos y considerados por ambos desarrolladores.
- Mantener el Enfoque: Trabajar en pareja ayuda a mantener un enfoque estructurado en la tarea. La necesidad de comunicar explícitamente cada acción y dirección reduce la posibilidad de distracciones y evita que los desarrolladores se desvíen hacia soluciones no planificadas o innecesarias.
- Mantener el WIP del Equipo Bajo: Limitar el trabajo en progreso (WIP) es crucial para mejorar el flujo del equipo, y la programación en pareja contribuye a este objetivo. Al trabajar en parejas, se limita naturalmente la cantidad de tareas en paralelo, lo que aumenta el enfoque y asegura que el trabajo fluya de manera constante.
- Combinar Dos Modos de PensarC: Mientras el conductor se enfoca en los detalles tácticos del código actual, el navegante mantiene una visión más estratégica del proyecto. Esta combinación asegura que se preste atención tanto a los detalles como al panorama general, lo que resulta en un código de mayor calidad.
- Promover la Propiedad Colectiva del Código: Se promueve la propiedad colectiva del código, eliminando la noción de propiedad individual de módulos específicos. Al asegurar que cada línea de código sea revisada por al menos dos personas, se incrementa la comodidad y confianza de los desarrolladores para modificar cualquier parte del código. Esto también ayuda a mantener una mayor consistencia en el código base.
- Revisiones de Código en Tiempo Real: Uno de los mayores beneficios de la programación en pareja es la revisión continua del código. Con cuatro ojos atentos a los detalles, los errores se detectan y corrigen en tiempo real, en lugar de ser descubiertos más tarde en una revisión posterior.
- Mejorar la incorporación de Nuevos Miembros del Equipo: La programación en pareja es una herramienta poderosa para la incorporación de nuevos miembros del equipo. Los nuevos desarrolladores pueden aprender rápidamente sobre el proyecto, el negocio y la organización a través de la colaboración directa con un miembro experimentado. Esto no sólo acelera su curva de aprendizaje, sino que también minimiza el impacto de su incorporación en el flujo general del equipo, gracias a la comunicación intensiva que la programación en pareja requiere.
Cierre
La programación en parejas tiene tanto defensores como detractores. La clave para el éxito radica en adaptar la práctica a las necesidades específicas del equipo y el producto que desarrolla, y en entenderla como una inversión a largo plazo en la calidad del código y el crecimiento profesional de los desarrolladores.
Pair Programming, es complejo de aplicar, tendrás que apoyar y guiar a los desarrolladores hasta que dominen esta práctica.
En futuros artículos ampliaremos, sobre consejos, consideraciones y como aplicar Pair Programming en equipos en remoto.