¿Cómo introducir gradualmente revisiones de código?

26

Soy líder de un equipo con media docena de ingenieros superiores. Creo mucho que nos beneficiaría enormemente hacer revisiones de código por todas las razones estándar. No necesariamente todos los cambios, pero al menos un flujo constante de revisiones de antecedentes. Entonces la gente al menos ve los cambios de otros y comienza a hablar de ellos.

¿Hay una buena manera de presentar comentarios? Siento una gran renuencia del equipo, porque es solo una cosa más que hacer, y las conversaciones pueden ser dolorosas. Siento que revisar cada cambio no es un comienzo, al menos como primer paso. Me gustaría que las personas se pongan al ritmo y practiquen hacer revisiones con poca frecuencia primero antes de aumentar la cantidad.

¿Alguien ha introducido con éxito las revisiones de código gradualmente? ¿Cómo? Pensé en requerir revisiones en archivos o bibliotecas "calientes". O escogiendo al azar. O yo seleccionando "elección" cambios de revisión obligatoria. ¿O dar el paso y hacer cada cambio es el único camino a seguir?

Philip
fuente
No hice suficiente énfasis en la pregunta, pero "gradualmente" fue el elemento clave aquí. No creo que sea factible revisar el 100% de los cambios. Sin embargo, si solo se revisa una porción, ¿cómo se elige la porción? ¿Solo elige "cambios favoritos"? Algo al azar? Selecciones de plomo? Las respuestas aquí son geniales, pero realmente no me dieron en la parte "gradual" en mi mente.
Philip

Respuestas:

16

Esto no es un problema de herramientas o proceso. Se trata de cultura. Usted describe un equipo compuesto por personas sensibles a las críticas y protectoras de su propio trabajo. Es muy, muy común. Pero no es profesional.

Mi consejo es comenzar a liderar con el ejemplo. Ofrezca sus compromisos para su revisión. Sea abierto al solicitar que las personas resalten los problemas en su enfoque. Sé receptivo a los comentarios. No se ponga a la defensiva, sino que explore las razones detrás de los comentarios y acuerde las acciones en equipo. Fomentar una atmósfera de diálogo abierto. Encuentra un campeón o dos en tu equipo que estén dispuestos a hacer esto también.

Es un trabajo duro.

Synesso
fuente
38

El primer paso sería acercarse a alguien y decir "oye, ¿revisarías mi código?". Sé el cambio que quieres ver en tu organización. Si no puede encontrar un solo individuo dispuesto a hacerlo, no podrá convencer a todo el equipo. Si los dos tienen éxito, repórtense al equipo.

Una vez que haya encontrado a alguien que revise su código, pregúntele si le importa si revisa parte de su código. Frase como una oportunidad de aprendizaje para usted y no como una oportunidad para ellos para mejorar su código.

Bryan Oakley
fuente
10
"Oye, no estoy contento con este diseño, ¿puedo obtener un segundo conjunto de globos oculares?" Es un gran primer paso. ++
RubberDuck
4

Como líder de equipo, el mayor valor que obtengo del proceso de revisión de código es el conocimiento de lo que está sucediendo. Me gusta tener la oportunidad de ver cada conjunto de cambios, incluso si no tengo ningún cambio o sugerencia para el desarrollador. Yo llamo a estas "revisiones de conciencia". Puedo darles la vuelta en menos de 30 minutos para que no haya cuellos de botella.

Te sugiero que comiences con esos. Defina el proceso de envío de revisión de código (es bastante sencillo si usa TFS) y haga que todos se envíen a enviarle sus conjuntos de cambios (y solo a usted) antes de registrarse. Diles que es solo para conciencia y que nadie va a criticar su código.

Después de una o dos iteraciones de revisiones de concientización, comience a invitar a otros miembros del equipo a revisar el código de los demás ... nuevamente, solo para conciencia Lo creas o no, esto solo puede ser útil para la cohesión del equipo y la uniformidad del código.

Una vez que haya involucrado a todo el equipo, probablemente encontrará que sus desarrolladores simplemente no pueden resistirse a hacer sugerencias sobre el código de los demás. Sucederá de forma natural y orgánica (¡los ingenieros no pueden evitarlo!) Haga que el equipo se reúna para discutir esto y proponga pautas para ofrecerse comentarios constructivos entre sí. Luego póngalos a ello. ¡Felicitaciones, ahora está en modo de revisión de código completo!

John Wu
fuente
1
Realmente me gusta el término concepto interesante de "revisiones de conciencia". Para una pista, parece natural que desee tener conciencia de lo que otros están haciendo. Pero creo que puede defender a todos los miembros del equipo, debemos ser conscientes de lo que otros están haciendo para nuestro propio beneficio y el de ellos. De lo contrario, ni siquiera estamos en un equipo, solo estamos trabajando en paralelo.
Philip
4

¿Hay una buena manera de presentar comentarios?

Probablemente hay varias maneras buenas, dependiendo de su equipo y de los beneficios que espera obtener de las revisiones, pero cualquier enfoque tendrá algunas características comunes:

  • explique lo que espera: este es un proceso nuevo para su equipo, o al menos un cambio en el proceso existente, por lo que es justo que el equipo sepa por qué está instituyendo el cambio, cómo espera que el equipo se beneficie y cómo sabrás si está funcionando.

  • defina el proceso: guíe a las personas a través del proceso que desea que sigan para revisar el código, discutir los cambios, etc., para que todos en el equipo sepan cómo proceder.

  • defina los criterios: Exponga los tipos de cambios que las personas deberían y no deberían mencionar como necesidades de mejora. Por ejemplo, es bueno señalar errores y mejoras significativas en el rendimiento; los problemas de codificación, legibilidad y mantenibilidad deben tenerse en cuenta, pero no deben considerarse; los asuntos de gusto o estilo personal deben dejarse solos

  • Discuta el comportamiento: Señale que el objetivo es mejorar el código y fomentar una comprensión común que ayudará al equipo a escribir un mejor código en todos los ámbitos, no avergonzar a nadie, establecer puntajes, etc. Las críticas deben ser objetivas y constructivas, nunca personales. Establecer algunas reglas básicas puede ayudar a calmar las dudas sobre la revisión del código.

  • pónganse primero en el banquillo: ya sea ​​que planeen tener revisiones individuales o grupales, probablemente sea una buena idea pasar por las primeras como grupo. La primera revisión debe ser de su propio código para que otros miembros del equipo puedan ver que el proceso no es tan malo y que usted está dispuesto a hacerlo usted mismo.

Comience celebrando una reunión inicial para explicar todo lo anterior y abordar las inquietudes de los miembros del equipo. Haga un seguimiento con un correo electrónico que documente el proceso.

Siento una gran renuencia del equipo, porque es solo una cosa más que hacer, y las conversaciones pueden ser dolorosas.

Esas son dos preocupaciones distintas. Si cree que las revisiones serán útiles, entonces necesita agregar tiempo al cronograma para hacerlas. Asegúrese de que los miembros del equipo entiendan que la revisión es un trabajo como cualquier otra tarea, no algo adicional que tengan que hacer mientras continúan completando otras tareas al mismo ritmo.

Las reuniones de revisión grupal deben ser dirigidas por un facilitador que mantenga la discusión, limite la duración de la reunión y mantenga las cosas constructivas. Eso debería recorrer un largo camino para evitar conversaciones dolorosas. Para cuando esté listo para comenzar las revisiones individuales, es de esperar que el equipo haya adoptado comportamientos que los ayuden a mantener las cosas constructivas por sí mismos.

También debe revisar el proceso de revisión de vez en cuando. Reúna al equipo de vez en cuando para discutir el proceso: qué tan bien está funcionando, cómo podría mejorarse, qué prácticas deberían abandonarse, etc. Dele al equipo la propiedad del proceso y la libertad de probar cosas nuevas.

Caleb
fuente
-2

Una forma de hacerlo es llevar a cabo sesiones de revisión de código después de cada sprint, y revisar los cambios de todos donde el código se proyecta en una especie de pantalla grande para que todos en el equipo puedan participar. Cualquier mejora se puede agregar como deuda técnica a la cartera de pedidos.

Este enfoque funciona, pero no es perfecto.

El objetivo final sería utilizar la solicitud de extracción para fusionar el código nuevamente en la rama maestra o de desarrollo donde se debe revisar cada línea de código.

Pelican de bajo vuelo
fuente
3
Sentar a todos durante horas para revisar todo el código generado durante una iteración después de que termine (y legítimamente demasiado tarde) suena como una forma maravillosa de hacer que todos odien la idea de las Revisiones de Código.
RubberDuck
Bueno ... si lleva horas revisar el código generado en un sprint, entonces lo estás haciendo mal, o Sprint es de 6 meses, o forma un equipo con 50 personas, o los desarrolladores no hacen nada sobre la codificación o las mejores prácticas. Dado que la codificación no termina después de la iteración, nunca es demasiado tarde, y el código siempre cambia y su deuda tecnológica puede abordarse en iteraciones posteriores. Y hacer revisiones de código de esta manera permite a los desarrolladores que nunca lo han hecho ver qué buscar y así sucesivamente ... una vez que se inicia así, se puede mover gradualmente hacia solicitudes de extracción
Low Flying Pelican
mi equipo de 7 agrega / elimina / modifica varios miles de líneas de código en ~ 3 docenas de confirmaciones cada dos semanas. Una revisión de calidad de un RP toma alrededor de 15-60 min. PR promedio es 3-4 commits. Así que sí. Si lo hiciéramos todo a la vez como equipo, tomaría 8 horas X 7 desarrolladores en lugar de 8 horas repartidas por todo el equipo. Me molesta tu insinuación de que estamos haciendo algo mal. Vamos a pinchar varias veces a la semana . ¿Vos si?
RubberDuck
Lo hacemos una vez cada iteración
Low Flying Pelican