¿Es apropiado tener comentarios positivos en las revisiones de código, o es exclusivamente para críticas constructivas?

36

He estado haciendo muchas revisiones de código últimamente, y no estoy seguro de los efectos positivos y negativos y la profesionalidad de poner comentarios positivos y / o divertidos en las revisiones de código.

Utilizamos Github como nuestra plataforma de revisión de código en mi equipo, por lo que cualquiera puede ver los comentarios. Generalmente trato de usar esta plataforma para que todo el proceso de principio a fin sea visible e histórico.

Codeman
fuente
Sí, me doy cuenta de que esto tiene que ver en gran medida con la cultura, pero estoy buscando una respuesta general.
Codeman
22
Es importante reforzar lo que desea ver con comentarios positivos.
2
No sé si es apropiado, pero a veces publico haikus de codificación en las revisiones: programador junior, su código no comentado es, como astillas de dolor.
yannis
De hecho, soy el programador junior que revisa el código de la persona mayor: tenemos un proceso bastante riguroso aquí, todo el código debe revisarse :)
Codeman

Respuestas:

53

Es importante resaltar lo positivo y lo negativo. Sé que si estuviera revisando el refactor de un subsistema infernal particular en algo ordenado y limpio, probablemente le compraría una pizza al programador por sus esfuerzos.

Si está utilizando revisiones como capacitación, es doblemente importante: resaltar un buen código será útil para los programadores junior que también revisen ese código. Tendrán la oportunidad de hacer preguntas sobre por qué un enfoque o técnica en particular es mejor que otro.

Jonathan Rich
fuente
¿Puedes agregar una nota sobre "por qué es importante"?
Marcaré
3
Le permite a las personas saber que lo que están haciendo (escribir un buen código) es apreciado, y mantiene el enfoque en el crecimiento, que es de lo que se tratan las revisiones de código.
Jonathan Rich
1
¿Puedes agregar esto a tu respuesta?
Codeman
2
+1 te mereces la bonita insignia de respuesta para esta. La cantidad de lugares que no valoran suficientemente las críticas constructivas siempre me sorprende. Decirles a las personas que están haciendo un buen trabajo cuando lo están haciendo puede ser un motivador sorprendentemente efectivo.
Benjamin Gruenbaum
@Benjamin: demasiadas organizaciones tratan la revisión del código como un proceso de estampado de goma de 'encontrar los defectos en el código de los demás' y no como 'vamos a construir un equipo de alto rendimiento'. En mi experiencia, las revisiones de código son la mejor y más rápida manera de romper las barreras que impiden que los equipos de software realmente se desempeñen. Tenemos un estándar de notación donde prefijamos los comentarios con -2 (debe corregirse) aunque a +2 (gran trabajo).
mattnz
8

Divertido: guárdelo para el enfriador de agua, excepto en dosis mínimas; tener una cara de ciruela no es un requisito para revisar el código.

Positivo: Ciertamente. La revisión incluye tanto positivo como negativo / constructivo, por definición.

La retroalimentación positiva ayuda a todos:

Para el que recibe el visto bueno, refuerza su confianza e inspira a hacer más de lo mismo a través de sus comentarios positivos.

Por lo demás, como otros han mencionado, aprenderán qué hacer y qué no hacer . También se les animará a sobresalir, por lo que un día también podrán estar en el centro de atención.

Una vez trabajé para un jefe que fue liberal en sus comentarios positivos: el equipo fue muy exitoso y productivo como resultado. Siguió adelante, y otros asumieron el cargo que carecían de su capacidad para alabar un trabajo bien hecho. La productividad y la moral cayeron en picada, y muchos de los mejores miembros del equipo abandonaron la empresa.

Vector
fuente
3

Yo diría que mantenga los comentarios limpios y al grano, exactamente por la cultura.

No se puede evitar que algunas personas tomen las cosas mal.
Para mitigar eso, una charla personal de uno a uno facilitará las cosas, si no es posible cara a cara, chat, correo electrónico o skype.

ton.yeung
fuente
1
Buen punto. Ser "gracioso" al comentar puede ser contraproducente, especialmente en entornos multilingües y multiculturales.
David Navarre
2

Comentar en una revisión de código es administrar

Tratar los comentarios como una herramienta de gestión.

Insertar comentarios en una revisión de código es una forma de gestión. Como tal, debe abordarse como una herramienta de gestión.

Use prácticas gerenciales al comentar

Hay una estructura para administrar personas donde el objetivo es alcanzar el resultado deseado. Algunos de los principales enfoques de gestión no se aplicarán en los comentarios, pero la mayoría sí. Los temas aplicables incluyen medio ambiente, liderazgo, organización y control.

Medio ambiente

Cultura

El entorno dicta el estilo de gestión. La cultura y el entorno del lugar de trabajo deben tenerse en cuenta al utilizar cualquier herramienta de gestión. Por lo general, esto se ve afectado por la industria y el tamaño de la empresa o entidad que se administra.

Estilo

Si hay una cultura alegre, eso puede aparecer en el estilo de gestión que se utiliza. Si hay pautas, políticas y consecuencias muy estrictas, eso debería reflejarse en el estilo utilizado. Entonces, si todos están a bordo para una broma de Star Wars que hace referencia a droides y un soldado de asalto de mente débil, entonces puede ser aplicable una interjección cómica. Sin embargo, si hay graves consecuencias de no tomarse en serio el resultado final, entonces puede ser necesario evitarlo.

Liderazgo

Fundamentos

Hay tres pilares principales de liderazgo a considerar al comentar. Es decir, son visión, comunicación y juicio.

Vision

Es importante tener en cuenta la gran visión al explicar o dar instrucciones. En los comentarios, esto podría significar señalar cómo pequeños cambios afectan al proyecto en su conjunto, cuáles son las implicaciones de adoptar diferentes enfoques, o un consejo para la separación de las preocupaciones.

Communication

Ser un buen comunicador es importante en muchos aspectos de la vida. No es diferente en los comentarios. Es importante emplear un nivel sabio de brevedad, especialmente porque los comentarios no deberían ocupar mucho espacio. Llegue al punto temprano y luego respalde con un ejemplo si es necesario. En una organización más grande, esto también puede incluir la necesidad de enviar un comunicado o memorando si el problema no se localiza en una sesión de revisión.

Judgement

Es importante que se use la estrategia cuando se juzga si es necesario hacer comentarios y cuáles deben ser los cambios. Su juicio no siempre tiene que ser correcto, pero sí debe ser consistentemente correcto, especialmente cuando se hacen grandes juicios.

Organizando

Desde el punto de vista gerencial, la organización se referirá a tener en mente el objetivo final y garantizar que los procesos estén alineados para seguir un conjunto de reglas. Los comentarios también deben tener esto en cuenta, ya que los comentarios deben, cuando sea posible, basarse entre sí para asegurarse de que se siga el flujo del diseño. También será importante tener en cuenta el alcance del código que se está revisando para reducir el acoplamiento y seguir el diseño general.

Controlador

Controlar las acciones de quienes se gestionan es un proceso delicado. Si bien es firme, también debe tenerse en cuenta que las personas son importantes. Hay varias habilidades gerenciales para usar mientras se controlan a otros. Estas habilidades son políticas, conceptuales, interpersonales, diagnósticas y técnicas.

Político

La política se puede encontrar en cualquier momento que haya interacción entre las personas. Es un tema enorme, pero en un sentido general, la política gira en torno a la influencia. Es importante tener en cuenta la política personal y profesional en el trabajo al hacer un comentario. Esto podría estar relacionado con una instrucción, una broma o incluso una pregunta.

Conceptual

La gestión a través de la conceptualización es una herramienta importante. Requiere un análisis complejo de la situación en cuestión. Al comentar puede ser beneficioso incluir parte del análisis utilizado para llegar a la conclusión o el cambio indicado en la revisión.

Interpersonal

Las habilidades interpersonales son muy importantes cuando se maneja. Este también es un gran tema. Algunas de las cosas importantes a considerar con las habilidades interpersonales son la tutoría, la crítica constructiva y el "arponamiento".

Mentoring

Es importante que el manejo se vea más como un mentor que como un antagonista. En una revisión de código, esto significa que a veces será beneficioso incluir un guiño a un patrón o enfoque de diseño que podría usarse para mejorar una situación.

Constructive Criticism

La crítica es importante porque invoca la reflexión. Sin embargo, las críticas deben mantenerse tan positivas como sea posible cuando sea posible. Esto significa ofrecer evidencia válida para respaldar las críticas y también garantizar que el tono utilizado no sea negativo. Al revisar el código, esto podría incluir mostrar una excepción o un posible escenario que generaría un error al tiempo que implica una solución en lugar de mostrar cada lugar que era incorrecto cuando todo el código tendría que ser reemplazado de todos modos.

"Harpooning"

"Arponar" es cuando arpeas figurativamente a alguien al suelo. Esto se hace desglosándolos paso a paso sin ningún alivio hasta el punto en que se sienten incapaces de levantarse. Si ataca a una persona en una revisión de código o en otro lugar, perderá su cooperación. Es importante evitar romper a alguien en exceso.


Resumen ejecutivo

Trate los comentarios en una revisión de código como una herramienta de gestión. Tenga en cuenta que los comentarios deben ser breves, al grano y constructivos. También asegúrese de que al comentar la persona que se está revisando se tenga en cuenta.

Travis J
fuente
La revisión del código no debe ser gerencial. Su otro nombre es 'PEER review' por una buena razón. El otro problema que tengo con la respuesta es que se supone que es el código en revisión, no la persona. Si la revisión del código se trata como una revisión de la persona, se ha convertido (o pronto lo hará) en una herramienta de gestión para 'golpear a las personas'. Observe cómo se convierte en una entrada en los KPI y vea los juegos que juegan los pares: "Ese código podría ser mejor, lo dejaré pasar si promete ser fácil en mi próxima caída de código"
mattnz
@mattnz: los compañeros se gestionan con frecuencia. Además, no todas las organizaciones operan en una jerarquía estrictamente de arriba hacia abajo, en cuyo caso los pares son un factor clave de gestión. Sin embargo, no estoy de acuerdo con su afirmación de que una revisión de código no se trata de la persona. Corregir los malos hábitos de codificación requiere una guía real, y emitir esa guía de manera elegante y respetuosa es muy importante para que tenga éxito.
Travis J
@mattnz - También tenga en cuenta que nunca implico que la revisión del código sea una revisión de la persona. Me doy cuenta de que has apoyado la respuesta aceptada aquí, con la que también estoy de acuerdo. Sin embargo, lo extraño es que la respuesta se enfoca explícitamente en el individuo, comprándole pizza y ofreciéndole elogios personalmente. No tengo ningún problema con eso, pero ¿cómo puede decir que eso no juega a ser una "revisión de la persona"? Para ser sincero, parece que solo leyó la primera y la última oración de esta respuesta.
Travis J
0

Las revisiones de código son una herramienta para mejorar la calidad del código, en parte al descubrir defectos. Más importante aún, desea inculcar buenas prácticas de codificación.

Desde esta perspectiva, es importante comentar sobre las cosas bien hechas. En un contexto de capacitación, las mejoras también deben comentarse. Si su cultura es de mejora continua, siempre debe comentar las mejoras.

Se producirán errores, errores y una codificación incorrecta. Indíquelos de manera no personal y trátelos como se espera.

Desde una perspectiva de modificación del comportamiento, la recompensa es mucho mejor para producir cambios que el castigo. Consideraría tener un buen trabajo como recompensa.

BillThor
fuente