¿Cómo lidiar con alguien a quien no le gusta la idea de las revisiones de código?

26

Obviamente, si la gerencia se dedica a pasar tiempo con revisiones de código, entonces todos tienen que hacerlo.

Pero siempre hay esos tipos (o chicas) que se resisten con cada onza de su ser.

¿Cómo manejas de manera efectiva el manejo de este escenario cuando lo enfrentas como el revisor de pares?

ozz
fuente
19
Probablemente de la misma manera que tratas con personas que tienen problemas con otros artículos como código de vestimenta, puntualidad, días de enfermedad, etc.
Josh K
jeje ... Traté de calificar eso por parte de la gerencia diciendo que todos tienen que hacerlo, lo que estoy buscando es cuando el humilde revisor tiene que intentarlo y hacerlo.
ozz
3
Honestamente: diles que se callen y que lo hagan. Es por su propio bien.
Steven Evers
1
¿Resistiendo qué? ¿Permitiéndole ver su código o ellos mirando el suyo? Pueden estar evitando conflictos, ¿pueden esperar conflictos? ¿Sabes por qué dudan?
Martin Maat

Respuestas:

46

Se resiste por miedo . Este condicionamiento puede ser el resultado de una (s) mala (s) experiencia (s) previa (s) sobre ser revisado, cuando era niño, en la escuela, en el trabajo o incluso en su equipo actual. En nuestras sociedades modernas, es muy común que confundamos el trabajo de alguien con su valor como ser humano. Es por eso que las revisiones en el trabajo no se perciben bien. Esa es también la razón por la que hablar en público en una de las fobias más extendidas (miedo al juicio).

Para evitar tal comportamiento, necesitará algo de psicología. Debes demostrarle a su cerebro de lagarto que no va a suceder (no será juzgado, humillado, asesinado, nada ...) desensibilizándolo a las revisiones de códigos.

Uno de los métodos más efectivos que encontré para desbloquear a alguien es pedirle que revise su código , antes de pedir que revise su código.

Después de un tiempo, proponle que lea su código para aprender de él y por qué no sugerir mejoras. Cuando encuentre algo que cambiar, tenga cuidado con lo que escribe. Entenderá que no hay nada que temer, y tomará la parte positiva del proceso de revisión solamente: aprender y aumentar su conocimiento .

Michael K
fuente
3
Es posible que desee agregar una definición de "cerebro de lagarto" para personas que no están familiarizadas con él.
Adam Lear
@ Anna: Acabo de agregar el enlace a una definición.
Impresionante respuesta Pierre! Votado por ahora en lugar de una respuesta final.
ozz
1
@ Aaron: Me refería a "alguien" mencionado en la pregunta. Sí, todavía tengo miedos irracionales debido al condicionamiento en mi vida infantil y adulta, como la mayoría de nosotros. Ejemplos: tengo un miedo irracional a los altos. Me estoy desensibilizando cuando puedo. El fin de semana pasado visité una ciudadela (muy común en mi país debido a la sucesiva guerra entre franceses y alemanes) y tuve que tomar un tranvía regional.
1
Como de costumbre una excelente respuesta Pierre.
Josh K
5

Intentaría trabajar en parejas: formar un equipo que odie la idea con alguien a quien le guste y hacer que revisen el código del otro durante un par de semanas. Obviamente, esto puede o no ayudar, pero estar en ambos extremos de la revisión al menos dará una visión más completa del proceso. Tener un par trabajando juntos les permitirá familiarizarse con el estilo y los errores comunes de cada uno y les dará tiempo para realmente ayudarse mutuamente a mejorar, en lugar del sello de goma. Esto también puede ayudarlo a promover la programación de pares en su entorno de trabajo, ya que creo que puede ver una tendencia creciente no solo a revisar, sino también a recodificar o incluso planificar y codificar desde cero.

Mientras las partes desinteresadas estén dispuestas a intentarlo, esto podría ayudar. Si se niegan a considerarlo, no hay mucho que puedas hacer al respecto mientras estén en el equipo.

Michael K
fuente
La programación en pareja es un tema completamente diferente, ¡pero una gran sugerencia!
ozz
Su comentario me hizo pensar un poco más sobre PP, así que comencé otra Q - programmers.stackexchange.com/questions/39878/… ¡Gracias!
ozz
4

La respuesta de @ Pierre está encaminada para alguien que teme una revisión de código. Me puedo imaginar otra situación. Un programador estrella que siente que una revisión del código es una pérdida de tiempo porque el código alcanza un estándar aceptable de calidad y corrección. En este caso, pueden sentir que una revisión del código es una pérdida de tiempo y una caza de brujas. (Esa es una búsqueda de un problema cuando no existe ninguno).

En este caso, reorientaría el objetivo de la revisión. En lugar de que la revisión del código se trate de encontrar "problemas" en el código, trátelo como una búsqueda de objetivos de refactorización o posibles mejoras futuras, o características de diseño adicionales. De esta manera, tanto el codificador como el revisor están involucrados en el proceso y esperamos que este codificador capaz sienta que se está aprovechando el tiempo.

Hogan
fuente
55
Con este tipo de persona, podrías intentar hacerles saber que estás emocionado de revisar su código porque crees que aprenderás mucho de ellos. La revisión de código no solo se trata de mejorar el código, sino de exponer a otros miembros del equipo a un mejor código que los ayudará en el desarrollo futuro.
HLGEM
2

Francamente, esta pregunta no tiene ningún sentido si tiene una tienda bien administrada:

1) Si es parte del trabajo, debe hacerlo o es insubordinado. Alguien que se niega rotundamente a hacer parte del trabajo que debe hacer debe ser enlatado. La programación es un oficio y una profesión: los revisores y gerentes están ahí para ayudar a hacer el trabajo, no para tratar con niños mimados (de cualquier edad).

2) Si tiene un sistema de control de fuente bien administrado (que es imprescindible en cualquier tienda de software profesional), puede revisar su código, les guste o no. Entonces revise su código:

  • Si es bueno, notifíqueles y déles una palmadita en la espalda, eso alentará la participación.

  • Si no es bueno, también hágales saber. Esto debería tener el efecto de motivarlos a participar para defenderse. Si no es así, puede utilizar medidas punitivas: sanciones financieras, degradaciones de estatus, etc. Si a pesar de sus esfuerzos este empleado no se presenta, en mi opinión, tiene un mal empleado y se les debe mostrar la puerta.

Vector
fuente
Ese es un consejo completamente inútil, preveo una "tienda" con un ambiente de trabajo realmente malo para usted. Urgghh!
cognacc
@cognacc - No necesitas 'prever' nada. He estado trabajando en grupos durante 25 años, donde tenemos un muy buen ambiente de trabajo: todos somos adultos y entendemos lo que se requiere para ser profesional y tener responsabilidad en nuestro trabajo.
Vector
1
Tengo que estar de acuerdo con Vector. Si es parte del proceso, todos lo hacen y estoy seguro de que rápidamente ven que "no muerde". Siempre existe el riesgo de que algunas personas sean "groseras" en sus comentarios en una revisión de código, por supuesto, pero entonces esas personas deben ser tratadas, tal como lo serían si fueran groseros con sus compañeros de trabajo en persona.
MetalMikester
Estoy de acuerdo con el cognacc, es un consejo inútil porque no sugiere una estrategia o solución. Simplemente dice "deben hacerlo porque tienen que hacerlo". Duh La pregunta es cómo tratar con ellos, y cómo darles la vuelta. Simplemente hacer que las personas hagan algo en contra de su voluntad (o de lo contrario) no está solucionando el problema, es probable que esté creando otros nuevos. Primero debes entender el origen de la resistencia.
Martin Maat
Te perdiste mi comentario de una tienda bien administrada y todo lo que sigue: eso significa que estás tratando con adultos: personas que saben lo que significa y conlleva su trabajo. No comprendiste mi respuesta abundantemente clara.
Vector
1

¿Tienen algunas experiencias negativas en lugares donde las revisiones de código no se realizaron correctamente? Pueden tener preocupaciones legítimas.

Si no ven absolutamente ningún mérito para el ejercicio, pídales que sean pacientes y vean qué sucede con su código y, especialmente, como resultado de otros (si creen que son perfectos).

La revisión de código 'debería' mejorar el desarrollo, pero hasta que tenga un sistema que realmente funcione, ¿por qué alguien debería querer hacerlo?

JeffO
fuente
Gracias Jeff, de acuerdo, si el proceso no es bueno, será difícil, y evitar los miedos irracionales de cualquiera puede ser difícil, ¡algunas personas simplemente no cambiarán!
ozz
1
pero hasta que tenga un sistema que realmente funcione, ¿por qué alguien debería querer hacerlo? Permítanme dar una puñalada salvaje a esto: ¿Hacerlo para que puedan descubrir por qué su sistema no funciona ?
Vector
1
@Vector: si sus programadores no pueden descubrir cómo hacerlo funcionar, pueden tener mayores problemas. También creo que la gerencia tiene que asumir cierta responsabilidad y hacer una definición clara del código de calidad. Si el código que se está lanzando no tiene demasiados errores, pueden tener una buena razón para no incluir la revisión del código. Para un proyecto de cualquier tipo de complejidad, dudo que esté sucediendo sin una revisión del código de calidad o posiblemente una cantidad desproporcionada de tiempo y costo de desarrollo.
JeffO
@JeffO - OK, entiendo tu punto: si el sistema realmente no funciona, no es la cuestión de la "revisión del código", la pregunta es la competencia de los programadores, y la simple "revisión del código" no es la solución. Estoy de acuerdo con eso.
Vector
1

Personalmente, creo que hay algunas peleas que no se pueden ganar con el 100% de la población.

Puedo ver suficientes razones por las cuales la programación de pares no funcionaría cuando alguien se ve obligado a hacerlo.

Pero las revisiones de códigos son diferentes: cambian su productividad, no necesariamente sus hábitos de trabajo.

La administración puede hacer varias cosas para reducir la resistencia debido a la productividad: 1) Aceptar la reducción de velocidad para todos los desarrolladores. 2) Proporcione las herramientas apropiadas para manejar la gestión y la fusión de múltiples versiones debido a los ciclos de revisión (por ejemplo, permitiendo que los desarrolladores tengan un repositorio local de git) de opiniones

Si lo hacen, es legítimo exigir que todos participen, en mi humilde opinión. La compañía para la que trabajo ahora tiene una fuerza global: simplemente no puede enviarla sin la aprobación del propietario. Y si bien esto ralentiza las cosas, previene muchos accidentes.

Uri
fuente
totalmente de acuerdo Uri ... hay algunas personas que no puedes ganar. ¡Tal vez están fijados en su camino, vagos, piensan que su camino es correcto, o simplemente no les importa!
ozz
0

Utilizamos medidas técnicas para hacer obligatoria la revisión del código.

La forma en que introdujimos la revisión de código es que en nuestro control de código fuente, es imposible fusionar código que no haya sido firmado por otra persona que no sea la que lo empujó.

Pieter B
fuente
-1

Despedirlos

Es así de simple: o obtienen un proyecto de hombre solitario o tienen que irse. Alejarlos de su equipo. No solo no están haciendo su parte, sino que erosionan la moral y las prácticas del equipo.

Ahora, si parece que tienes que despedir al 50% de tu equipo, entonces ...

Entender

¿Por qué algunos se niegan? ¿No tienen tiempo? ¿Están quemados? ¿Las reseñas sobre algo con lo que no tienen experiencia? ¿Creen que es una pérdida de tiempo? Si es así, ¿por qué?

La metodología ágil ayudará aquí: supongo que trabajas constantemente contra los silos (es decir, para reducir el factor del autobús), y las personas de tu equipo están involucradas en lo que otros hacen.

Trabaje para garantizar que las solicitudes de fusión individuales sean bastante pequeñas. Si se trata de más de 1 pantalla de cambios, necesita una conversación de pie o relámpago para explicar lo que se está haciendo. Si son 10 páginas, necesita una presentación con diapositivas y diagramas de arquitectura.

¿Todos en cuestión trabajan en el mismo proyecto?

¿El proyecto ya está enterrado bajo una montaña de deudas técnicas?

¿Creen en el proyecto y la mejora continua?

Dima Tisnek
fuente
1
Hmmmm ... así que no creer que las revisiones de códigos brindan más beneficios que costos automáticamente significa que una persona no está haciendo su parte y está erosionando la moral del equipo, ¿tanto que deberían ser despedidos? Esa es una postura bastante audaz basada en ninguna evidencia que respalde definitivamente el reclamo.
Dunk
@Dunk, ¿eres un anti-crítico? Entonces no estarás en mi equipo. ¿Eres un revisor profesional? Entonces ya conoces el respaldo a mi reclamo. ¿Estás indeciso? Por favor
decídase
No soy un anti-revisor, pero también reconozco cuando algo no proporciona un beneficio razonable en relación con el costo. Algunos proyectos / equipos necesitan absolutamente revisiones oficiales del código, mientras que otros proyectos / equipos solo los hacen cuando se considera beneficioso. Su suposición de que siempre se requieren revisiones de código me dice que ni siquiera conoce los beneficios y limitaciones reales. Entonces tienes razón. No estaré en tu equipo y eso sería una gran pérdida para ti.
Dunk