language-agnostic pair-programming

language agnostic - ¿Funciona la programación de pares cuando hay un desajuste de impedancia de habilidades?



language-agnostic pair-programming (16)

Absolutamente. Compartir conocimientos es uno de los puntos de la programación por pares (junto con la dinámica útil de tener un tipo de persona por un momento y la otra revisión a medida que lo hacen).

En mi experiencia, es una de las formas más efectivas de hacerlo, y permite que el programador con menos experiencia aún contribuya de manera útil (se necesita menos experiencia para revisar lo que está haciendo un experto y hacer comentarios / intervenciones sensatos que hacer todo el trabajo) .

Por ejemplo, ¿puede un programador experimentado con experiencia limitada en C # .NET emparejarse con éxito con un programador experimentado en C # .NET con el objetivo secundario de obtener el primero al día con C #.


Aunque es una buena idea, pero en la práctica puede no ser útil. Para capacitar a alguien, puede organizar la capacitación y asignar un mentor que pueda ayudar y guiar. El mentor puede asignar trabajo del proyecto real y puede supervisar.

La programación en pareja debe ser entre personas relativamente experimentadas, si desea obtener los beneficios de este concepto. Desde mi punto de vista, la programación en pareja con una persona sin experiencia tendrá una pérdida de productividad y no está segura de cuánto recogerá la persona cuando alguien está constantemente revisándolo. Asignar una tarea y dar la oportunidad de desarrollarla de forma independiente y luego revisarla proporcionará un buen autoaprendizaje.


Ciertamente puedes hacer esto, lo hemos hecho en el pasado. Pero tiene que aceptar que intercambia los beneficios de "calidad de código" por beneficios de capacitación. No hay entrenamiento gratis , me temo.


Creo que los resultados finales que obtienes dependen de los chicos que están haciendo esto. En este caso, es probable que termines con uno de ellos liderando al otro (y donde el otro solo está prestando atención para comprender las características del idioma que usa la primera).


Cuando el desajuste de habilidades es alto, entonces se convierte más en una relación maestro / alumno. Esto no es malo, pero puede perder el tiempo de la persona experta.

Sin embargo, incluso si es poco práctico o un desperdicio, ¡puede ser muy útil tener una sesión de pareja muy ocasional! Incluso si el estudiante está abrumado o es incómodo, a veces es útil para los "estudiantes" ver cómo trabajan y piensan las personas de nivel superior. Ayuda a darles una idea de los problemas / habilidades / métodos de trabajo de alta calidad. Piense en ello como un estudiante de secundaria que visita un laboratorio de investigación. Es un desperdicio para los científicos profesionales enseñar al estudiante de secundaria, pero la visita de 1 hora puede ayudar a enfocar al estudiante y darles un vistazo de los objetivos finales ...

Recuerdo por qué elegí a Emacs como mi editor. Por casualidad me senté cerca de un usuario experto, y, literalmente, mirando por encima del hombro, lo vi reorganizar y navegar el código de manera súper rápida. Solo observé durante menos de un minuto y nunca hablé con él ... ¡puede que ni siquiera se haya dado cuenta de que estaba observando! Pero fui derribado, y decidí aprender Emacs. Diez años después, todavía no tengo tanta habilidad como ese experto, pero no lamento mi decisión de cambiar de editor, ya que vislumbré lo que era posible.


Depende de cuánta desajuste de impedancia de habilidades estemos hablando.

Dos buenos programadores en diferentes idiomas pueden crecer rápidamente con él, obviamente a costa de una pequeña ralentización del experto en el lenguaje del proyecto actual.

Si la diferencia es demasiado grande (por ejemplo, un veterano y un novato), en cambio, podría ser preferible comenzar con algún otro tipo de enfoque, para evitar el riesgo de ser altamente contraproducente.

Siempre ten cuidado con la programación extrema de par !


Eso depende de la química personal entre ellos. Si el programador más experimentado está dispuesto y es capaz de compartir su conocimiento, y dejar que el programador menos experimentado participe en el desarrollo a través de la escritura de códigos y discusiones, diría que es una forma muy eficiente de aprender.


Funciona hasta cierto punto. Por lo general, es uno que está liderando al otro ... así que no hay mucha programación de pares en ese sentido.

Depende en gran medida de la habilidad del programador experimentado para enseñar y la habilidad del otro programador para aprender rápidamente.


Hay un dicho que dice que la fuerza de un equipo es tan buena como su eslabón más débil. La combinación de la más fuerte con la más débil ha sido tradicionalmente la mejor estrategia, ya que el aprendizaje más débil de los más fuertes asegura potencialmente la mayor cantidad de aprendizaje. Si existe la preocupación de que el más fuerte no tenga interés , entonces reemplaza el más fuerte por alguien que realmente sería el más fuerte.


Personalmente, creo que funcionaría bien y es uno de los objetivos de la programación en pares, pero el éxito dependerá de los dos programadores. Si el programador 1 (el que aprendió C #) estaba poniendo algo de tiempo extra para realmente ponerse al día y el programador 2 (el otro) tiene la paciencia y el deseo de enseñarlo debería ser bueno para ambos.


Puede ser efectivo con la siguiente advertencia: debe cambiar de pareja .

De hecho, he estado en esta situación y, si la brecha es grande, puede ser muy agotador para ambos miembros de la pareja. Lo mejor es cambiar de pareja después de unas pocas horas, con el tiempo variando según su tolerancia y el tamaño de la brecha. Si esa opción no está disponible, mezcle alguna programación en solitario.


Sí, creo que una buena programación de pares siempre es bidireccional, es esencialmente una pieza de ingeniería social que se hace pasar por una innovación de TI.


Sí, esto funcionará. Si 1) el programador con experiencia limitada es receptivo al aprendizaje de C # y 2) el otro programador está dispuesto a enseñar C #.


Sí, pero el enfoque para hacerlo efectivo puede no ser claro al principio. La tarea que se está programando en pareja debe ser la tarea del programador menos experimentado (lo llamaremos Michael) . También quiero que Michael comience la sesión de programación en pareja para explicar cuál es el objetivo de la sesión. Este enfoque pone a Michael en el asiento del conductor, donde el programador más experimentado (lo llamaremos Bill) desempeñará un papel más importante como mentor.

Normalmente, Bill tomará o recibirá tareas más complejas para trabajar. Este enfoque le permite a Michael trabajar en tareas que son más adecuadas a su nivel de experiencia. Recomendaría apagar a intervalos de 30 minutos a una hora al principio, de modo que Michael pueda acostumbrarse al proceso de dar control a otra persona. Puede reducir lentamente estos apagadores a intervalos de 15 minutos o lo que sea mejor para los dos desarrolladores.


Sí, pero solo si la mejor persona es paciente y está dispuesta a enseñar y la peor persona está dispuesta a aprender. He programado en pareja con personas que no son tan buenas como yo y fue tedioso, pero creo que aprendieron de ello. Programé en pareja con personas que son mejores que yo y ciertamente aprendí de ello. Depende de la gente realmente.


Todo depende de la personalidad de los desarrolladores, no hay una regla dura y rápida.

Una cosa que es segura es que el desarrollador experimentado será menos productivo cuando trabaje con un desarrollador sin experiencia. Personalmente, creo que es necesario que haya una buena combinación de habilidades en la programación de pares. Sin embargo, es una muy buena manera de que los desarrolladores inexpertos estén al día.