¿Qué tan común es la programación de pares en el lugar de trabajo?

16

Siempre me ha intrigado la programación en pareja, pero en 12 años de desarrollo nunca he trabajado en un lugar donde hayan empleado esta práctica, por lo que siempre he sido escéptico sobre cómo la gente lo ve.

Me pregunto si esto se debe a dinero / tiempo (¡¡¡El jefe de pelo puntiagudo que ve a dos personas en una computadora trabajando en el mismo código !!!! cómo se atreven!) O por otras razones?

ozz
fuente
8
Creo que el PHB puede ser correcto en esta situación. Dos personas (y, por lo tanto, dos salarios) para un producto es fundamentalmente una mala decisión empresarial. No hay muchos casos en los que la programación por pares sea más productiva que la individual, al menos no "a tiempo completo", por lo que simplemente no se hace mucho más que asesorar a nuevos miembros del personal o trabajar juntos en un problema específico.
TZHX
3
Muy difícil convencer al jefe de pelo puntiagudo de que esto tiene valor.
Walter
3
Para el nuevo código , creo que la programación de pares tiene un gran valor. La primera iteración puede tomar la misma cantidad de tiempo, pero IME pasa mucho menos tiempo de depuración. Y cuando dos personas conocen el mismo código, la depuración se vuelve más fácil, porque pueden verse juntos de manera independiente. "Dado suficientes globos oculares, cada error es transparente".
Michael K
1
@Michael, no siempre, pero a veces pienso que el emparejamiento en código heredado puede ser útil. Puede desglosar los silos y / o reducir los costos de refactorización. Dicho esto, estoy completamente de acuerdo contigo.
DevSolo
55
@TZHX: "Dos personas para una salida son malos negocios". Ese es un argumento seriamente defectuoso y lo sabes (como pagar a los programadores por línea de código). La programación en pareja es un tema complejo y no debe descartarse tan fácilmente.
Martin Wickman el

Respuestas:

20

He tenido el mismo concierto durante 15 años y recientemente (los últimos 12-18 meses) comenzamos a adoptar técnicas ágiles. Cuando se utiliza la programación de pares, la historia / característica del resultado se ha implementado a tiempo sin defectos. Sin embargo, todavía no creo que se haya empleado con la suficiente frecuencia.

Antes de nuestra adopción ágil, otro desarrollador y yo hemos compartido el teclado de vez en cuando a lo largo de los años con poca frecuencia (tal vez una vez cada 3-4 meses). Nuestro equipo de administración parecía reacio pero siempre estaba satisfecho con nuestro emparejamiento informal, ya que generalmente lograba algunos de los siguientes:

  • Silos reducidos en el equipo (gran victoria cuando el equipo tiene 6-8 desarrolladores)
  • código producido con menos defectos
  • cada desarrollador normalmente adquirió habilidades

Yo diría que la administración es reacia, pero si puede dar pequeños pasos y demostrar que la función es mejor después (ahorro de costos) y / o cada (o uno) desarrollador adquirió algunas habilidades (pagarla), puede tomar impulso si te parece una práctica que se adapta a ti o a tu equipo.

DevSolo
fuente
gran conocimiento DevSolo, gracias por compartir. Supongo que probablemente tengas un equipo bastante estable (¿baja rotación de personal?)
ozz
De nada. Nuestra rotación ha sido bastante baja ... ¡4 de nosotros hemos compartido la misma oficina durante más de 15 años a través de 4 reubicaciones (en 4 edificios y 2 estados)!
DevSolo
Irónico, tu alias es 'DevSolo';) nb mis experiencias concuerdan con las tuyas
ChrisAnnODell
11

Supongo que probablemente habrá muchas resistencias de los desarrolladores. ¿Recuerdas haber sido forzado a trabajar con personas que quizás no eran las personas más motivadas del mundo durante la universidad o incluso en la escuela secundaria? Esas personas aún existen. A menos que tenga un equipo compuesto por todas las personas "de primera categoría", este tipo de configuración causará cierta animosidad en el grupo.

Pemdas
fuente
Muy cierto Pemdas!
ozz
2
+1, lamentablemente. El trabajo en equipo es una habilidad que debes desarrollar, y si no quieres, no puedes. Tal vez eso es lo que deberían hacer los gerentes de programadores: encontrar la estructura de equipo que promueva la mayor productividad con las personas que tienen.
Michael K
44
Esta profesión requiere mantener el ego bajo control. No siempre es fácil, pero las recompensas serán extremadamente beneficiosas.
DevSolo
@DevSole ... ¿qué tiene eso que ver exactamente con mi respuesta?
Pemdas
@Perndas, estaba asumiendo, quizás incorrectamente, que la resistencia se debería a los egos. Al menos cuando lo he visto, esa parece ser la razón. Solo he visto 2 (que recuerdo) los desarrolladores realmente resisten esto. El ego de uno no cabía en la habitación, el otro tenía problemas con la confianza.
DevSolo
9

No lo he hecho oficialmente, pero cada vez que estoy atascado, llamaré a un desarrollador y ambos trabajaremos juntos en una solución. Es una excelente manera de intercambiar ideas, dejar que una persona piense mientras la otra lo implementa, para que no pierda su línea de pensamiento porque la está escribiendo.

Ojalá se hiciera más.

CaffGeek
fuente
44
Otra herramienta para usar, si no está familiarizado, se llama "Duck de goma". Básicamente, coloque un objeto en su escritorio como un pato de goma (el suyo realmente usa un Yoda de juguete) y explíquele el problema. ver c2.com/cgi/wiki?RubberDucking
DevSolo
En su lugar, uso a la persona sentada a mi lado ... no podemos poner cosas en nuestros escritorios.
CaffGeek
¿Seriamente?
Michael K
@Michael ... no tienes idea de las reglas que tenemos aquí. Y, sin embargo, las pocas cosas buenas superan a las malas ... apenas.
CaffGeek
Es triste escuchar que la administración de reglas irrazonables se aplica a los programadores (eso es bastante tonto, ¿no crees? Tienen que hacer un esfuerzo adicional para mantenernos felices de equilibrar eso)
Zekta Chan
9

No me importa

1 - Me gusta escuchar mi música mientras codifico. No todos quieren escuchar a Slayer sonando en sus oídos.

2 - Me crié considerando que mirar por encima de los hombros de las personas es muy grosero y me siento muy incómodo cuando la gente lo hace.

3 - Pienso muy rápido y cuando estoy buscando una solución, cuando empiezo a encontrar una respuesta, lo último que necesito es que me interrumpan.

4 - No puedo tomar descansos ocasionales para examinar foros y grupos de noticias. Algunos pueden pensar que es inapropiado de todos modos, pero me parece muy importante para mi mejora continua. De vez en cuando me distraigo demasiado, pero en general el beneficio de mi mayor conocimiento supera cualquier impacto en mi productividad.

Supongo que podría ser diferente en otros equipos, pero las pocas veces que estoy realmente perplejo por algo y NECESITO ayuda, casi siempre soy el que finalmente encuentra la solución de todos modos. Soy realmente bueno en lo que hago, pero creo que podrían estar sucediendo más cosas ... no estoy seguro, de todos modos encuentro que estoy mejor resolviendo los problemas difíciles y, en general, mejor hacerlo solo. Puede sonar arrogante, pero eso no lo hace falso.

He considerado que en realidad podría ayudar a otros a aprender algunas de mis técnicas, pero, teniendo en cuenta el # 3, difícilmente podrían hacer preguntas sin romper mi línea de pensamiento de todos modos.

Dicho todo esto, lo he intentado de vez en cuando. A veces tiene beneficios menores, pero ciertamente no puedo verlo como algo consistente. El sistema del lobo solitario funciona para mí y parece funcionar para el equipo.

Edward extraño
fuente
2
@Noah, basado únicamente en el n. ° 2, no estoy seguro de si comprende el concepto de programación de pares. La idea no es mirar por encima del hombro. La idea, como la he practicado, es compartir la PC para trabajar en conjunto. No es programación maestro / esclavo, es programación por pares. Tal vez el último es un término mejor para ella ...
DevSolo
Esto es perfectamente válido. Algunas personas solo quieren quedarse solos para resolverlo por su cuenta.
MattC
Y también, +1 para los auriculares. Explosión de metal y / o trance todo el día y me enfado bastante cuando la gente me habla de cosas. ¿No pueden esperar hasta que termine mi canción favorita? : D
MattC
2
@Noah: leyendo tu lista, parece que te estás perdiendo los puntos más finos de la programación de pares. No digo que sea para todos, y ciertamente toma tiempo y esfuerzo cambiar del modo vaquero al modo compartir. Del mismo modo que lleva tiempo aprender a hacer TDD correctamente (o cualquier otra práctica ágil para el caso).
Martin Wickman
1
continúa ...: "senior" significa que es posible que usted no sea el que hace el código, sino que ayuda a un desarrollador más joven a hacer una sugerencia. Tampoco soy el mayor admirador de la idea de la programación de pares, pero veo que probablemente esté fuera de mi zona de confort. A muchos desarrolladores les gusta trabajar solo en su estación, pero debo admitir que probablemente aprendería más y encontraría mejores soluciones porque estaba trabajando junto con otro desarrollador. Por lo tanto, es realmente una cuestión de comodidad personal versus trabajar de manera más efectiva.
Anne Schuessler
5

La programación en pareja es una excelente manera de comenzar o hacer algo no trivial y difícil. Las tareas más rutinarias y simples se hacen mejor solo.

Participé en varias sesiones de programación de pares, tanto en empresas de inicio / garaje como en grandes corporaciones. Invariablemente sucedió solo cuando se estaba creando algo nuevo y difícil, es decir, dos veces al año en el mejor de los casos, durante algunas semanas. ¿Con qué frecuencia sucede esto en su empresa?

9000
fuente
menos a menudo de lo que me gustaría, eso es seguro.
ozz
5

Nunca lo llamamos así, pero en el pasado, así es como siempre atacamos nuevos problemas. Nos emparejaríamos para comenzar con una solución, pero luego usualmente nos separamos para terminar / limpiar los detalles individualmente. Ya no tanto. Parece volverse cada vez más raro.

Brian Knoblauch
fuente
3

No muy comun. En todas las tiendas en las que he estado en los últimos 10 años, lo he visto una vez. En la tienda más lenta y menos eficiente. Parece crear un ambiente ruidoso y estresante. Una persona termina conduciendo y hablando constantemente evitando que la otra piense.

Reúna al equipo para revisiones de código, ya sea en grupos o en parejas, y brinde a los desarrolladores su propio espacio. Será mejor a largo plazo que perseguir la última moda Agile.

Servio
fuente