Estás mirando tu código y pensando: "No hay nada malo aquí".
Pero lo hay: la aplicación no funciona.
Y sabes que el insecto te está mirando directamente a la cara. Finalmente, recurre a su colega y comienza a explicarle el problema y, de repente, en medio de la frase, se le ocurre: el problema y la solución.
Parece que todo lo que realmente tenías que hacer era… ¿ empezar a hablar?
Si alguna vez ha tenido esta experiencia con el desarrollo de software (yo la he tenido muchas veces), sabe que hablar en voz alta es importante cuando se resuelven problemas . Ya sea hablando en voz alta con otros programadores o si trabaja solo de forma remota, hablando con un patito de goma (acuñó el método de depuración del patito de goma ). Mirar el código también es importante, pero no por mucho tiempo.
Entonces, cómprate un patito de goma, dicen tus colegas, en serio. O mejor aún, conéctese y comience a programar en pareja juntos .
En un tratamiento exhaustivo de la programación en pares , las autoras Birgitta Böckeler y Nina Siessegger describen cómo:
La programación en pareja nos obliga a discutir enfoques y soluciones, en lugar de solo pensar en ellos en nuestra propia cabeza. Decir y explicar las cosas en voz alta nos empuja a reflexionar si realmente tenemos el entendimiento correcto, o si realmente tenemos una buena solución.
Citan a Jean Bartik , uno de los programadores originales de la computadora ENIAC en la década de 1950, quien dijo:
Betty Snyder y yo, desde el principio, fuimos pareja. Y creo que los mejores programas y diseños se hacen por parejas, porque se pueden criticar, encontrar los errores de los demás y utilizar las mejores ideas.
Así que lo sabíamos entonces y lo sabemos ahora: emparejar a dos o más desarrolladores de software para resolver un solo problema, frente a una sola pantalla, crea un gran software.
Si bien no es necesariamente una programación extrema o un desarrollo ágil de software, la programación en pares se puede usar para permitir que los miembros del equipo construyan y diseñen software y aprendan a confiar unos en otros.
La programación en pareja involucra a dos programadores que comparten una sola computadora y teclado. Esto se puede hacer en línea compartiendo la pantalla o con herramientas creadas para programadores en pareja (ver más abajo).
La metáfora clásica en la programación en pareja es el conductor y el navegador . El conductor está al volante, el navegador mira el mapa; los tipos de controladores y el navegador describen el problema y la solución.
Ambos trabajan igual de duro. Por ejemplo:
Mientras el conductor escribe código y piensa, el navegador habla, analiza, prueba, todo mientras mira por encima del hombro del conductor.
El papel del controlador es estructurar el código, decidir los nombres de las variables y escribir los bucles, funciones y condiciones que implementan lo que dice el navegador.
El papel del navegador es dar forma a la solución general, enmarcar los resultados, establecer las restricciones, hacer algunas revisiones de código.
El controlador escribe código limpio. El navegador simplifica el problema.
Tanto el controlador como el navegador diseñan la arquitectura y deciden sobre la base de datos, la tecnología y la apariencia general de la aplicación.
Tanto el conductor como el navegador son responsables del resultado final, cumpliendo con los requisitos de las especificaciones originales.
Conductor y navegante celebran juntos cuando llegan a su destino.
Los momentos conflictivos van al corazón de por qué nos emparejamos. Por ejemplo:
¿Cuál es la diferencia entre describir una "solución" y codificar un "algoritmo"? Por ejemplo, el navegador dice que coloque un círculo rojo en el medio de una pantalla, a velocidad de tiempo real. Para hacer esto, el navegador dice que codifique un programa asíncrono. El conductor no está de acuerdo, no hay necesidad de algoritmos asíncronos complejos y arriesgados. Hay una solución mejor. Entonces, ¿quién gana?
¿Qué sucede cuando al navegante no le gusta el código?
¿Qué sucede cuando al conductor no le gustan las ideas o el análisis del navegante?
Siempre hay dos opciones para resolver estos conflictos: o la pareja permanece en sus roles (y confían el uno en el otro) o rompen sus roles y discuten humildemente las opciones.
Ese es el punto: la programación en pareja se trata de comunicación y trabajo en equipo, donde dos expertos se enseñan pacientemente a ser mejores en lo que hacen.
Por eso también es bueno cambiar los roles, que el navegante tome el volante y siga las instrucciones del conductor ahora convertido en navegante.
A menudo hay dos escenarios de emparejamiento en la programación en pareja:
A menudo, el último escenario puede hacer un mejor uso de una situación de mentor-mentee, donde el navegante no solo establece el panorama general, sino que también puede hacerse cargo de escribir para modelar, enseñar y compartir conocimientos con el desarrollador menos experimentado.
Todos siempre podemos convertirnos en mejores conductores, sin embargo, este emparejamiento senior-junior permite una situación más clara de mentor-mentee.
Cuando se emparejan dos personas mayores, es posible que sea necesario analizar y definir más a fondo las responsabilidades de cada función a medida que emprenden su viaje.
Hemos descubierto que la programación en pareja funciona. En muchos niveles: ingeniería de software y aspectos más suaves como el trabajo en equipo y la construcción de valores individuales.
En todos los escenarios, hay valores en juego: confianza, franqueza, cuidado, determinación y humildad. Esencialmente, reina la comunicación abierta.
Aprenda a dar retroalimentación
Aprenda a recibir comentarios
Hacer preguntas cuando esté bloqueado
No tengas miedo de equivocarte
Cree en tu pareja
Reconocer y aceptar que los demás resuelven los problemas de manera diferente
desafiarse unos a otros
motivarnos unos a otros
Antes de terminar, vale la pena mencionar que todo esto se puede hacer de forma remota. Las videoconferencias con Zoom, Teams, Skype y otras herramientas remotas similares admiten el uso compartido de pantalla e incluso funciones de control de escritorio remoto.
Sin embargo, para funciones de emparejamiento más sólidas, querrá usar una de las herramientas que se crearon para la programación de emparejamiento remoto como las que se enumeran a continuación.
Aquí hay algunas recomendaciones de herramientas de programación de pares remotos para ayudarlo en su viaje: