En lugar de un programa de emparejamiento servil todo el tiempo, usamos la programación de emparejamiento selectivamente en nuestro equipo. Creo que funciona mejor en las siguientes circunstancias:
- Incrementar a los nuevos miembros del equipo en un proyecto (en lugar de dejar que vayan por la documentación o el código por su cuenta).
- Tener personas junior y senior trabajando juntas (ayuda a mostrar algunas de las habilidades y trucos de los desarrolladores más experimentados, además permite que los perros viejos aprendan nuevos trucos a veces).
- Cuando alguien intenta rastrear un defecto, a menudo ayuda emparejarse con un par de ojos nuevos.
¿Cuándo usar el programa de pares y por qué?
¿Cuándo evitar la programación de pares? ¿Por qué?
agile
pair-programming
Paddyslacker
fuente
fuente
Respuestas:
La investigación compilada por Laurie Williams indica que la programación de pares funciona mejor en equipos industriales cuando
En mi experiencia personal, descubrí que mi equipo de XP gasta aproximadamente el 60% de nuestra programación de pares de tiempo de desarrollo en promedio. El resto del tiempo se dedica al desarrollo individual. No es raro emparejarse para crear un diseño inicial, trabajar solo en el diseño durante unas horas, luego volver a unirse para terminar partes difíciles o difíciles del código.
También descubrí que la programación de pares es más efectiva en bloques de aproximadamente 1.5 a 2.5 horas. Cualquier cosa mucho menos tiende a requerir demasiada sobrecarga para la configuración, mientras que mucho más y las parejas tienden a ponerse de mal humor y cansarse. Malhumorado y cansado significa que no se está comunicando bien y podría estar permitiendo que los defectos se introduzcan en el sistema.
fuente
La programación en pareja me ha funcionado en muy, muy pocas situaciones.
Donde la programación de pares falla por mí
fuente
Mi equipo ha realizado programación de pares desde su inicio, mucho antes de que trabajara allí, como parte de una tienda de estilo de "programación extrema". La programación de pares es el estado predeterminado ; las personas solo se vuelven solteras si hay un número impar, o de vez en cuando para investigaciones, especialmente aquellas que implicarán jugar con equipos hostiles e intentar que funcionen.
"Junior / senior" no es el único camino a seguir. "Intermedio / junior" es útil; ayuda al chico de nivel intermedio a sintetizar el conocimiento que ha obtenido al obligarlo a comunicarlo a otra persona. "Intermedio / Intermedio" desafía a dos personas a trabajar juntas para compartir sus conocimientos, comunicarse y trabajar como parte de un equipo. E incluso si tiene dos tipos realmente mayores, es probable que tengan diferentes áreas de experiencia y puedan proponer enfoques diferentes. Los aspectos de intercambio de conocimientos no terminan una vez que alguien vagamente "al día" en un proyecto. Más bien, la programación en pareja es el epítome de una organización de aprendizaje . Nuevas técnicas y mejores prácticas se extendieron rápidamente.
La programación de pares también ayuda a mantener la calidad del código (menos defectos) y la cordura del código (no solo hace lo que pretende, sino que hace lo que debería ... idealmente sin caer en un conejo de varias semanas) agujero haciendo lo incorrecto, o dos cosas correctas diferentes que entrarán en conflicto salvajemente). Ayuda a los programadores a mantener su enfoque: aquí, en el corazón de Silicon Valley, hogar de la semana laboral de 80 horas, podemos trabajar solo 40 horas a la semana porque estamos haciendo una codificación intensa durante ocho horas al día, cambiando las cosas fuera el uno con el otro. (Además, si pasaras más tiempo haciendo la programación de pares, probablemente te volcarías. O al menos te quemarías). Esto es excelente para el equilibrio entre el trabajo y la vida, y también ayuda a su organización cuando es importante tener una respuesta rápida (respuesta de baja latencia, en particular).
No es todo, completamente, 100% duraznos y crema; Encuentro que la programación de pares ocasionalmente es un obstáculo para mi aplicación de procesos cerebrales intuitivos que son útiles en ciertos problemas. Más recientemente, en una tarea de pérdida de memoria, pasé algún tiempo con y sin pares; sin uno, me sentí más libre para perder el tiempo y probar experimentos sin realmente saber exactamente cómo explicar lo que estaba haciendo en cualquier momento. También hay algunas ventajas en trabajar singleton, poder ir por una tangente y hacer ciertas refactorizaciones salvajes (valoradas en la metodología XP) por capricho.
Pero en general, los beneficios superan con creces los costos, y el emparejamiento ha funcionado espectacularmente bien para nosotros: desde la etapa inicial hasta la adquisición por parte de una empresa más grande y nuestra posterior integración. (Hablando de eso, la programación en pareja nos ha ayudado a mantener una continuidad de la cultura a través de la expansión y a pesar de una pequeña rotación).
(Desarrollamos un dispositivo de software en Perl, ~ $ 4,000- $ 40,000 precio de lista).
fuente
Nunca he trabajado en una configuración de "Programación de pares" y, sin embargo, puedo afirmar que he sido parte de las tres circunstancias que ha enumerado. El escenario que mencionas parece más "programación regular" con fases de ayuda / entrenamiento. ¿No hicimos todo esto antes de que surgiera la "programación en pareja"? La programación en pareja, supongo que requeriría un enfoque más comprometido donde el proceso de compartir dentro de un equipo no se detiene en el momento en que abordas la tarea inmediata o el problema en cuestión. Pero entonces esto es lo que "pienso", no lo que "sé".
Personalmente para la programación en pareja, me gustaría trabajar en un equipo donde tengo la oportunidad de aprender y compartir mis conocimientos. Un equipo desequilibrado en el que todas las personas con las que trabaja están muy por delante de usted, o bien, muy por debajo de la media, puede resultar bastante poco interesante con bastante rapidez. Además, me daría miedo trabajar con personas que tienen sus creencias y son difíciles de convencer.
fuente
Hemos estado experimentando con la programación de pares en nuestro equipo durante los últimos meses. Siento que es bastante útil cuando estás trabajando en algo nuevo (nueva tecnología, nueva función, etc.) ya que puedes intercambiar ideas rápidamente con otra persona del equipo y validarlas / invalidarlas. Además, una revisión por pares ayuda a evitar errores.
Otro compañero de equipo intentó usar la programación de pares con una prueba para hacer ATDD y estaban bastante contentos con los resultados (según sus cálculos, un aumento en el costo de desarrollo del 20% condujo a una disminución de aproximadamente el 50% en el tiempo de prueba)
fuente
Buenas noches
Muchas veces hemos debatido sobre las prácticas de programación extrema y la programación de pares . En el pasado, podemos entender que la programación es una actividad en solitario porque los programadores necesitaban concentración y aislamiento. Los programadores en ese momento estaban en la zona , un estado mental donde podían enfocarse eficientemente en el código y tomar decisiones agradables y creativas.
La programación de pares también parece ser arriesgada si se supone que un programador se interrumpe entre sí. Por otro lado, es más difícil interrumpir a dos programadores que trabajan juntos. En la programación en solitario, por ejemplo, será más fácil ser interrumpido, por lo que es casi imposible para un programador en solitario permanecer en la "zona".
La calidad del código es otra cuando la fecha límite está a la vuelta de la esquina. La gente siempre tendrá prisa, ya sea un par de programadores o un programador en solitario: no aplicarán ciertas mejores prácticas y simplemente se olvidarán de las pruebas unitarias.
Me quedaría con la programación de pares. Porque cuando se trata de riesgos, cuando un programador se va, siempre tendrá otro tipo para documentar el proceso y enseñar a todos los demás cómo funciona.
fuente
Trabajar en cualquier cosa de complejidad no trivial tiende a ser un buen candidato para la programación de pares, de modo que varias personas entiendan el código en lugar de que solo un desarrollador conozca una parte de la base del código. Otro caso es cuando alguien quiere transferir algunas habilidades. Un ejemplo aquí puede ser tener a alguien que sea realmente bueno en las pruebas unitarias, emparejarse con alguien que no esté tan familiarizado con el concepto y, por lo tanto, ayude a adquirir un hábito inicial sobre algo.
En cuanto a dónde evitar la programación de pares, realice tareas de trabajo sencillas donde sería mejor dividir el trabajo en dos grupos y dejar que cada desarrollador haga parte del trabajo por separado para hacer el trabajo. Algunas tareas pueden requerir un poco de mecanografía, pero no son tan grandes que valga la pena pasar unas horas tratando de encontrar una mejor manera de hacerlo, ya que cada desarrollador adopta un enfoque de fuerza bruta por unos pocos horas
fuente