Newsletter para devsEntra
Web Reactiva

WR 242: Consejos para tu primer pair programming

Escúchalo también en Spotify | Apple Podcasts | Google Podcasts | iVoox
Soft Skills:Aprendizaje
Soft Skills:Gestión y comunicación
Soft Skills:Carrera profesional

5 aprendizajes que te llevas de este episodio:

  • Valor del aprendizaje colaborativo y la comunicación en el código
  • Roles esenciales: driver (picador) y navigator (apuntador)
  • Enfoque en el test driven development y la iteración
  • Importancia de aprender de los errores y la retroalimentación
  • Uso de herramientas tecnológicas para facilitar la colaboración

Programación en pareja: El ejercicio de aprender juntos

La programación en pareja no es solo cuestión de escribir código, es un proceso de aprendizaje colaborativo que obliga a repensar nuestras ideas, a exponer nuestras incertidumbres y a mejorar continuamente gracias al intercambio de perspectivas.

En este método, el código se convierte en el medio para compartir conocimientos y explorar problemas, por pequeños que parezcan. Al poner en común la experiencia y la intuición, se revelan aspectos que de otro modo permanecerían ocultos en la mente de cada uno. Es un ejercicio tan simple como profundo que nos invita a confiar en la colaboración, a equivocarnos y a aprender de cada error.

El valor de la colaboración en el código

La experiencia de programar en pareja se asemeja a cualquier otra actividad manual en la que se aprende haciendo. Es similar a conocer lo que uno sabe hasta que se intenta explicar o reproducir aquello aprendido. Tal como sucede al aprender a cocinar con la ayuda de quienes tienen experiencia, en la programación el acto de compartir el teclado y la pantalla invita a aclarar dudas y a pulir detalles. Se deja de lado la simple transmisión de conocimientos y se entra en una dinámica donde cada error y cada acierto se transforman en una oportunidad de progreso.

Se descubre que el proceso de programar juntos obliga a:

  • Repensar continuamente la forma de plasmar ideas en código.
  • Abordar los problemas desde distintos ángulos para encontrar soluciones más robustas.
  • Compartir la responsabilidad de aprender, sabiendo que nadie sabe todo y que cada aportación es valiosa.
  • Solidarizarse en el conflicto: reconocer que equivocarse es parte del proceso y que cada fallo abre la puerta a un refuerzo en el entendimiento.

Este último aspecto se refleja en la simple práctica del Test Driven Development (TDD), donde el primer paso es endurecer la prueba antes de escribir la solución. Tal es la importancia del ensayo y error en este método, como se explica en el siguiente fragmento:

“Este test falla.”

La universalidad de este proceso es lo que lo hace tan atractivo. No importa el lenguaje de programación o la plataforma, la esencia del aprendizaje colaborativo se mantiene. La exactitud de la técnica reside en su estructura: escribir un test, verlo fallar y, a partir de ese fallo, construir la solución más simple que permita pasar el test en verde. Una vez alcanzado ese estado, es el momento de refactorizar para lograr un código más claro y adaptable.

Estructurando el trabajo en pareja

Antes de lanzarse a una sesión de programación en pareja, es vital tener en mente que el objetivo principal es el aprendizaje. Con la convicción de que compartir el espacio de trabajo enriquecedor es el motor del crecimiento, se recomienda enfocar la experiencia en los siguientes elementos:

  • Preparación técnica:

    • Familiarizarse con el entorno, probando el micrófono, la conexión y la herramienta de compartición de pantalla o repositorio colaborativo.
    • Asegurarse de saber cómo ejecutar test unitarios básicos, independientemente de la librería o el lenguaje escogido.
  • Acuerdos prácticos:

    • Establecer previamente la duración y la frecuencia de los cambios de rol.
    • Decidir sobre la metodología a seguir, sin apresurarse a buscar la herramienta perfecta, permitiendo que la simplicidad y la usabilidad sean la prioridad.
  • Actitud colaborativa:

    • Reconocer que ambos, sin excepción, vienen a aprender y mejorar.
    • Mostrar paciencia y empatía ante los equívocos, recordando que la exposición del proceso creativo (incluso cuando no se tiene un código impecable) es el camino hacia una comprensión más profunda.

Roles fundamentales y su impacto

Una de las lecciones más importantes de la programación en pareja es la definición y rotación de roles, lo cual permite que cada participante aporte desde su particular forma de pensar y se beneficie de diferentes puntos de vista. Tradicionalmente se identifican dos roles principales:

El ‘driver’ o picador

Es el encargado de escribir el código. Este rol exige hablar en voz alta, dejando constancia de cada paso, cada decisión y cada incertidumbre que surja en el momento de escribir. En la intimidad del teclado, la vulnerabilidad se transforma en una fuente de aprendizaje. El picador debe:

  • Exponer su razonamiento durante el proceso.
  • Recibir retroalimentación en tiempo real, lo que a menudo ayuda a detectar errores antes de que se conviertan en problemas mayores.
  • Adaptar su enfoque según las sugerencias del compañero, sabiendo que la mejora del código es un objetivo compartido.

El ‘navigator’ o apuntador

El apuntador, por su parte, se sitúa en una posición más analítica al vigilar el proceso y prever soluciones a mediano o largo plazo. Este rol le permite:

  • Reflexionar sobre qué partes del proceso pueden optimizarse.
  • Sugerir modificaciones que abran la puerta a soluciones más elegantes.
  • Mantener una visión global del problema, ayudando a evitar que se pierda el rumbo en medio de detalles.

La rotación de estos roles durante la sesión es crucial para que ambos participantes tengan la oportunidad de experimentar y aprender desde distintas perspectivas. Se pueden adoptar ciertas pautas que faciliten el proceso:

  • Establecer intervalos fijos para alternar roles. Por ejemplo:

    • Cada 10 o 15 minutos, renovar el rol de picador y el de apuntador.
    • Acordar previamente señales o palabras clave para indicar cuando es necesario cambiar de rol.
  • Fomentar la comunicación continua, de modo que:

    • Se mantenga un flujo de ideas constante.
    • Se eviten silencios prolongados que podrían interpretarse como bloqueos o desconexión.
    • Se puedan aprovechar todos los potenciales aportes, sin temor a sobreponer comentarios durante el proceso.

El resultado final es un proceso donde se suma la experiencia personal y se multiplica el entendimiento colectivo, logrando que cada sesión de programación en pareja no solo sea productiva, sino también formativa.

La importancia de la iteración y el aprendizaje continuo

La práctica de programar en pareja viene acompañada inherentemente de la iteración. Cada sesión es una oportunidad para refinar tanto el código como la dinámica de trabajo. La metodología adoptada en estas sesiones, inspirada en la práctica del TDD, es un espejo de la filosofía del aprendizaje: comenzar con algo falible, corregir errores y mejorar gradualmente. Esto se traduce en pasos repetitivos y sistemáticos:

  • Escribir el test que defina el comportamiento esperado.
  • Ejecutar el test y observar cómo falla.
  • Escribir el código mínimo que haga que el test pase.
  • Refactorizar el código para lograr mayor claridad y eficiencia.
  • Revisar juntos la sesión para identificar qué se hizo bien y qué mejorar.

Una vez entendidas estas etapas, se comprende cómo incluso el error (cuando «este test falla») se convierte en un componente indispensable del aprendizaje. La comparación es inevitable: así como en la vida se aprende de los imprevistos, en la programación cada fallo es un peldaño hacia la solución perfecta.

Más allá de la técnica, lo memorable de programar en pareja es la retrospectiva al final de cada sesión. Este espacio de diálogo permite analizar la experiencia sin prejuicios, reconociendo los logros y señalando aquellos aspectos susceptibles de mejora. Entre los puntos a tratar en la retrospectiva se encuentran:

  • La claridad en la comunicación y en el intercambio de ideas.
  • La eficacia de los cambios de rol y la fluidez en la transferencia de conocimientos.
  • Las dificultades técnicas y cómo se podrían solventar en futuras ocasiones.

Así, la revisión final se transforma en un mecanismo natural y necesario para consolidar el aprendizaje, permitiendo que cada participante se lleve no solo una solución puntual a un problema, sino una lección sobre su forma de interactuar y de construir conocimiento en conjunto.

Herramientas y recursos que facilitan la experiencia

Aunque la esencia de la programación en pareja es atemporal, la tecnología moderna ofrece múltiples herramientas que facilitan el proceso. La clave es elegir aquellas que potencien la colaboración sin complicar la experiencia. Entre las herramientas recomendadas se encuentran:

  • Plataformas de compartición de pantalla y repositorios colaborativos, como GitHub, Bitbucket o GitLab.
  • Editores que permitan la colaboración en tiempo real, por ejemplo, LiveShare de Visual Studio Code.
  • Aplicaciones de videoconferencia y comunicación instantánea, que en un entorno remoto se vuelven esenciales.

No es necesario utilizar la herramienta más sofisticada; lo esencial es que permita a ambos participantes ver y editar simultáneamente el mismo código, garantizando así la sincronización y la claridad en el proceso.

Aprender a través del error y la vulnerabilidad

La programación en pareja demanda una apertura que a menudo resulta incómoda en los entornos habituales. Exponer en tiempo real cada pensamiento y cada incertidumbre puede generar reticencia, pero es precisamente en esa vulnerabilidad donde se halla la magia del aprendizaje. El reconocer que:

  • Ningún código es perfecto a la primera.
  • Cada error se convierte en un punto de partida para crecer.
  • La colaboración enriquece la capacidad de resolver problemas complejos.

Se transforma en un motor de mejora continua. Los beneficios se extienden más allá del mero ejercicio técnico; se fortalece la confianza en la propia capacidad de aprender, en la destreza para recibir críticas constructivas y en el valor del trabajo en equipo.

La experiencia de enfrentar retos que, al principio, pueden parecer imposibles de resolver se asemeja mucho a aprender de un mentor en el mundo real. Como en la cocina o en la reparación de un objeto complejo, la diferencia radica en saber que compartir el proceso permite descubrir un sinfín de perspectivas y soluciones inesperadas.

El camino del aprendizaje compartido

Cada sesión de programación en pareja es un recordatorio de que el conocimiento no es algo que se posee de forma exclusiva, sino que se construye y se enriquece al compartirlo. La experiencia vivida durante estas sesiones invita a replantear lo que significa aprender algo nuevo: transformar la perspectiva individual en una experiencia colectiva, donde cada golpe de teclado y cada línea comentada conforman un diálogo constante entre expertos y novatos, entre incertidumbre y descubrimiento.

Es un ejercicio de humildad aceptar que, al hablar en voz alta, se exponen no solo los aciertos sino también los errores. Sin embargo, es precisamente este acto lo que garantiza que las ideas se formen de manera completa y robusta. La lección es clara: sin la interacción y la crítica constructiva, nuestras ideas permanecen en un estado incompleto, al igual que un test que nunca es forzado a fallar y, por tanto, nunca impulsa la creación del mejor código posible.

La práctica repetida de este método refuerza la noción de que el progreso surge de pequeños y constantes pasos. La cita «Este test falla.» encapsula la esencia del proceso: fallar es solo el inicio de una cadena de aprendizaje que, bien aprovechada, lleva a la solución más sencilla y, luego, a la optimización. Cada sesión es un ciclo en el que se aprende a:

  • Identificar las debilidades del propio razonamiento.
  • Ajustar el enfoque en función de la retroalimentación.
  • Construir, de manera incremental, la solución correcta.

Incluso en el ámbito de la programación, donde la precisión es ley, el camino hacia el éxito no se fundamenta en tener una respuesta perfecta desde el primer intento, sino en saber adaptar el proceso y aceptar que el camino del aprendizaje es, en sí mismo, una serie de iteraciones.

La experiencia más allá del código

El impacto de la programación en pareja se extiende más allá del entorno tecnológico. Este método refuerza valores como el trabajo en equipo, la empatía y la comunicación efectiva. Al igual que en otras artes y oficios, se aprende a escuchar, a comprender y a colaborar. Al final, la programación en pareja es una metáfora de la vida: saber trabajar juntos, aceptar los errores y celebrar el progreso conjunto es lo que finalmente define el éxito.

En el diálogo constante entre dos personas se encuentran, además, aspectos del otro que pueden enriquecer no solo el código, sino la manera de enfrentar problemas en cualquier ámbito. Escuchar a alguien mientras se expone su razonamiento y, a la vez, aprender a criticar con respeto, son habilidades que trascienden el desarrollo profesional y se convierten en una lección para la vida.

La práctica de esta metodología abre la puerta a nuevas formas de abordar retos. Nunca se trata únicamente de conseguir que el test pase o de refactorizar el código; es el compromiso de verse a uno mismo y al otro como siempre en proceso de crecimiento. Es entender que el fallo es temporal y que lo verdaderamente valioso es la oportunidad de mejorar en cada intento.

El viaje de la programación en pareja es, en definitiva, una invitación a experimentar, a ser honesto con uno mismo y a descubrir que, en la suma de esfuerzos, se encuentra la llave para abrir puertas inesperadas.


La programación en pareja no exige perfección desde el primer momento, sino la voluntad de crecer y aprender en conjunto. Es una práctica en la que cada sesión se convierte en un capítulo de una experiencia colectiva, donde el error se celebra como parte esencial del proceso y cada reto compartido es una oportunidad para reinventar el propio conocimiento.

La próxima vez que te encuentres ante un teclado compartido, recuerda que el objetivo no es solo escribir código, sino descubrir nuevos caminos para pensar, dialogar y, sobre todo, aprender. La colaboración es la herramienta más sencilla y poderosa con la que contamos, un recordatorio vivo de que el verdadero progreso siempre se construye en equipo.

La programación en parejas es una de las buenas prácticas más aconsejables para mejorar tus capacidades como developer.

Eso sí, como todas las cosas bonitas, necesita un poquito de esfuerzo.

En https://www.danielprimo.io/ ya tenemos unos cuantos suscriptores organizando su propio pair programming.

Para ti y para ellos es este episodio.

Cada domingo, 11 recursos para developers en tu bandeja de entrada:

| https://webreactiva.com/newsletter/ |

Y aquí, unos enlaces:

Katas

https://kata-log.rocks/
http://codekata.com/
https://github.com/gamontal/awesome-katas
https://codingdojo.org/kata/

Programas para compartir pantalla/código

https://pop.com/
https://visualstudio.microsoft.com/es/services/live-share/
https://www.jetbrains.com/code-with-me/
https://duckly.com/

WR

Escrito por:

Imagen de Daniel Primo

Daniel Primo

CEO en pantuflas de Web Reactiva. Programador y formador en tecnologías que cambian el mundo y a las personas. Activo en linkedin, en substack y canal @webreactiva en telegram
Web Reactiva Newsletter