Programación en pareja

Ajustar Compartir Imprimir Citar
Programación de pares

La programación en pareja es una técnica de desarrollo de software en la que dos programadores trabajan juntos en una estación de trabajo. Uno, el controlador, escribe código mientras que el otro, el observador o navegador, revisa cada línea de código a medida que se ingresa. Los dos los programadores cambian roles con frecuencia.

Mientras revisa, el observador también considera el "estratégico" dirección del trabajo, proponiendo ideas para mejoras y posibles problemas futuros a abordar. Esto tiene como objetivo liberar al conductor para que centre toda su atención en la "táctica" aspectos de completar la tarea actual, utilizando al observador como red de seguridad y guía.

Economía

La programación en pares aumenta las horas-persona requeridas para entregar el código en comparación con los programadores que trabajan individualmente. Sin embargo, el código resultante tiene menos defectos. Junto con el tiempo de desarrollo del código, otros factores como los costos de soporte de campo y la garantía de calidad también influyen en el retorno de la inversión. En teoría, la programación en pareja podría compensar estos gastos al reducir los defectos en los programas.

Además de prevenir errores a medida que se cometen, pueden existir otros beneficios intangibles. Por ejemplo, la cortesía de rechazar llamadas telefónicas u otras distracciones mientras trabajan juntos, tomar menos descansos en intervalos acordados o descansos compartidos para devolver llamadas telefónicas (pero regresar al trabajo rápidamente ya que alguien está esperando). Un miembro del equipo puede tener más enfoque y ayudar a impulsar o despertar al otro si pierde el enfoque, y ese rol puede cambiar periódicamente. Un miembro puede tener conocimiento de un tema o técnica que el otro no, lo que podría eliminar los retrasos para encontrar o probar una solución, o permitir una mejor solución, expandiendo así efectivamente el conjunto de habilidades, el conocimiento y la experiencia de un programador en comparación. a trabajar solo. Cada uno de estos beneficios intangibles, y muchos más, pueden ser difíciles de medir con precisión, pero pueden contribuir a horas de trabajo más eficientes.

Calidad de diseño

Un sistema con dos programadores posee un mayor potencial para la generación de soluciones más diversas a los problemas por tres razones:

  1. los programadores aportan diferentes experiencias previas a la tarea;
  2. pueden evaluar la información pertinente para la tarea de diferentes maneras;
  3. están en diferentes relaciones con el problema en virtud de sus funciones funcionales.

En un intento de compartir objetivos y planes, los programadores deben negociar abiertamente un curso de acción compartido cuando surge un conflicto entre ellos. Al hacerlo, consideran una mayor cantidad de formas de resolver el problema de las que podría hacer un solo programador. Esto mejora significativamente la calidad del diseño del programa, ya que reduce las posibilidades de seleccionar un método deficiente.

Satisfacción

En una encuesta en línea de programadores en pareja realizada en el año 2000, el 96 % de los programadores afirmaron que disfrutaban más trabajando programando en pareja que programando solos. Además, el 95% dijo que tenían más confianza en su trabajo cuando programaban en pareja. Sin embargo, como la encuesta se realizó entre programadores de pares autoseleccionados, no tuvo en cuenta a los programadores que se vieron obligados a emparejar programas.

Aprendizaje

El conocimiento se comparte constantemente entre dos programadores, ya sea en la industria o en un salón de clases. Muchas fuentes sugieren que los estudiantes muestran una mayor confianza cuando programan en parejas, y muchos aprenden ya sea de consejos sobre las reglas del lenguaje de programación hasta habilidades generales de diseño. En el "emparejamiento promiscuo", cada programador se comunica y trabaja con todos los demás programadores del equipo en lugar de emparejarse solo con un socio, lo que hace que el conocimiento del sistema se extienda por todo el equipo. La programación en parejas permite a los programadores examinar el código de su compañero y brindar retroalimentación, lo cual es necesario para aumentar su propia capacidad de desarrollar mecanismos de monitoreo para sus propias actividades de aprendizaje.

Equipo y comunicación

Programación de dos pares de compañeros de trabajo, 2007

La programación en parejas permite que los miembros del equipo compartan rápidamente, lo que hace que sea menos probable que tengan agendas ocultas entre ellos. Esto ayuda a los programadores en pareja a aprender a comunicarse más fácilmente. "Esto aumenta el ancho de banda y la frecuencia de comunicación dentro del proyecto, aumentando el flujo de información general dentro del equipo."

Estudios

Existen tanto estudios empíricos como metanálisis de la programación en pares. Los estudios empíricos tienden a examinar el nivel de productividad y la calidad del código, mientras que los metanálisis pueden centrarse en los sesgos introducidos por el proceso de prueba y publicación.

Un metanálisis encontró que los pares generalmente consideran más alternativas de diseño que los programadores que trabajan solos, llegan a diseños más simples y fáciles de mantener y detectan los defectos de diseño antes. Sin embargo, expresó su preocupación de que sus hallazgos pudieran haber sido influenciados por "signos de sesgo de publicación entre los estudios publicados sobre programación en pareja". Llegó a la conclusión de que "la programación en pareja no es uniformemente beneficiosa o efectiva".

Aunque los programadores en pareja pueden completar una tarea más rápido que un programador en solitario, el número total de horas-persona aumenta. Un gerente tendría que equilibrar la finalización más rápida del trabajo y la reducción del tiempo de prueba y depuración con el costo más alto de la codificación. El peso relativo de estos factores puede variar según el proyecto y la tarea.

El beneficio del emparejamiento es mayor en tareas que los programadores no entienden completamente antes de comenzar: es decir, tareas desafiantes que requieren creatividad y sofisticación, y para principiantes en comparación con expertos. La programación en pares podría ser útil para lograr una alta calidad y corrección en tareas de programación complejas, pero también aumentaría significativamente el esfuerzo de desarrollo (costo).

En tareas simples, que la pareja ya entiende por completo, el emparejamiento da como resultado una caída neta en la productividad. Puede reducir el tiempo de desarrollo del código, pero también corre el riesgo de reducir la calidad del programa. La productividad también puede caer cuando se utiliza el emparejamiento de novato-novato sin la suficiente disponibilidad de un mentor para entrenarlos.

Indicadores de incumplimiento

Hay indicadores de que un par no está funcionando bien:

Variaciones de emparejamiento

Experto-experto
El emparejamiento experto-experto puede parecer ser la opción obvia para la productividad más alta y puede producir grandes resultados, pero a menudo produce poca información sobre nuevas formas de resolver problemas, ya que ambas partes son poco probables para cuestionar las prácticas establecidas.
Experto-novicio
El acoplamiento entre expertos y principiantes crea muchas oportunidades para que el experto mentor del novicio. Este emparejamiento también puede introducir nuevas ideas, ya que el novato es más probable cuestionar las prácticas establecidas. The expert, now required to explain established practices, is also more likely to question them. Sin embargo, en este emparejamiento, un novicio intimidado puede "ver pasivamente al maestro" y dudar en participar significativamente. Además, algunos expertos pueden no tener la paciencia necesaria para permitir la participación constructiva de novicios.
Novato-novicio
El emparejamiento de novicios puede producir resultados significativamente mejores que dos novicios trabajando independientemente, aunque esta práctica generalmente se desalienta porque es más difícil para los novicios desarrollar buenos hábitos sin un modelo de rol adecuado.

Programación remota de pares

Programación en pareja remota, también conocida como programación en pareja virtual o programación en pareja distribuida, es una programación en pareja en la que los dos programadores están en diferentes ubicaciones, trabajando a través de un editor colaborativo en tiempo real, escritorio compartido o un complemento IDE de programación de pares remotos. El emparejamiento remoto presenta dificultades que no están presentes en el emparejamiento cara a cara, como retrasos adicionales para la coordinación, dependiendo más del "peso pesado" herramientas de seguimiento de tareas en lugar de herramientas "ligeras" como las fichas y la pérdida de la comunicación verbal, lo que genera confusión y conflictos sobre cosas como "quién tiene el teclado".

El soporte de herramientas podría ser proporcionado por: