Uno de los miembros de mi equipo, un programador junior, tiene habilidades de programación impresionantes para su nivel de experiencia.
Y durante las revisiones de código, creo en enfatizar el aprendizaje, no señalar errores.
Pero, ¿deberían participar los programadores junior en revisiones de código para programadores más senior? ¿O las revisiones de códigos deben ser atendidas solo por programadores con la experiencia correspondiente?
teamwork
code-reviews
pair-programming
Md Mahbubur Rahman
fuente
fuente
Respuestas:
El propósito principal de una revisión de código es encontrar defectos o problemas potenciales. Los participantes requeridos en la revisión deben ser las personas más adecuadas para identificar estos problemas, independientemente de su título o antigüedad.
Como ejemplo, si se está desarrollando una aplicación en Python y el ingeniero junior tiene más experiencia con el lenguaje Python que el ingeniero senior que escribió el código, entonces podrían ser un activo valioso al señalar métodos alternativos para hacer algo, pero También puede tener menos conocimiento del sistema en su conjunto.
Más allá de la experiencia en las herramientas y tecnologías, también considere la experiencia en el dominio de la aplicación. Alguien con 20 años de experiencia pero solo 1 o 2 en la industria financiera puede recibir ayuda si un desarrollador en general menos experimentado con solo 5 años de experiencia en la industria financiera revisa su trabajo.
Invitar a miembros del personal con menos experiencia a observar y participar tanto como sea posible el proceso de revisión del código también puede ser beneficioso para permitirles aprender una base de código, hacer preguntas y conocer lo que se espera de ellos no solo en las revisiones de código, sino también en el código que producen. Sin embargo, es probable que no desee que participen demasiadas personas (centrándose en cambio en las personas que pueden apoyar completamente la revisión del código y su propósito) en el proceso.
Esto realmente se aplica a cualquier tipo de revisión: requisitos, diseño, código ...
fuente
Sí, deberían. Es una buena experiencia de aprendizaje leer el código de otras personas. (Y eso se aplica tanto para el código bueno como para el malo. Aunque uno esperaría que el código de un desarrollador senior no fuera malo ...)
Obviamente, no es aconsejable que solo los juniors hagan la revisión del código. E imprudente poner expectativas demasiado altas en los juniors en términos de lo que pueden encontrar. Sin embargo, también podría sorprenderse con las nuevas ideas que los programadores junior pueden aportar.
Otra respuesta mencionó que los jóvenes estaban / se sentían intimidados. Eso NO es de lo que debería tratarse la revisión de código ... ni para el revisado ni para los revisores. Si eso está sucediendo, su grupo necesita cambiar la forma en que revisa sus códigos ... y tal vez los intimidadores deban alinearse.
fuente
Yo agregaría que si un programador "Junior" no puede entender el código de una persona mayor, entonces en sí mismo es una buena medida del código. Bien, puede haber momentos en los que simplemente no es posible escribir código que todos puedan entender, pero con suerte esas son excepciones: si solo 1 o 2 personas pueden entender el código, entonces, ¿qué sucede cuando esas personas no están disponibles y hay un problema con ¿eso?
Dar a las personas nuevos desafíos les ayuda a desarrollarse; También podría ser que no todo el mundo está preparado para revisar el código, pero parece dogmático insistir en que alguien tiene un título ( determinado por la política y los juegos de Recursos Humanos ) antes de que sean elegibles para ayudar en una revisión.
Como otros han señalado, una revisión de código puede ser un proceso bidireccional; ayuda a todos a comprender la base del código, por lo que comparte el conocimiento, ayuda a los jóvenes a aprender nuevas y mejores formas y técnicas de sus mayores y ayuda a los mayores a refinar su comprensión y al escribir para garantizar que todos puedan seguir el código, tienen más ojos que pueden atrapar errores
fuente
El propósito de las revisiones de código es detectar problemas que las pruebas no pueden detectar, como problemas de mantenibilidad y casos de esquina. Yo diría que de muchas maneras los programadores junior son más adecuados para ese propósito:
Eso no quiere decir que no haya otras formas en que los programadores senior sean más adecuados para hacer revisiones, pero mi punto es que estás perjudicando si no estás aprovechando al máximo la diversidad de tu equipo.
fuente
A los jóvenes se les pedirá a menudo que mantengan el código, es fundamental que puedan entenderlo.
A veces, los juniors son las únicas personas disponibles para revisar el código de los desarrolladores senior. ¿Debería esperar el código para pasar al control de calidad (no eliminamos nada del desarrollador sin una revisión del código y supongo que también este tipo de revisión del código) porque el jefe del senior está de vacaciones?
También les pedí específicamente a los jóvenes que revisaran el código de algo cuando sabía que harían algo similar para un cliente diferente en breve o si supiera que habían trabajado en otra cosa que era similar o que tenían un conjunto de habilidades en particular.
Si el código es bastante sencillo, a menudo hago que una persona menor haga la revisión. ¿Por qué perder el tiempo de la persona mayor si la persona menor es bastante capaz de hacer el trabajo? Si los juniors se sienten intimidados al revisar el código de seniors, pídales que vean las piezas más fáciles inicialmente. Después de todo, no puedes dejar de ser junior hasta que dejes de sentirte intimidado.
A menudo he descubierto que si tengo que explicar el código a una persona menor que no lo comprende, veré un error que cometí (generalmente en una suposición) y que ningún revisor de código experimentado habría detectado porque el código se ejecuta pero no hace exactamente lo que se pretendía. Entonces, el simple hecho de explicar las cosas a menudo ayudará al desarrollador a ver un problema sin que el revisor del código lo encuentre. Dado que las personas con más experiencia no suelen pasar por el código paso a paso, este tipo de cosas se encuentran más fácilmente cuando un junior hace la revisión.
Me parece que tener junior involucrado en las revisiones tiene varios buenos efectos. Primero, les da más confianza cuando pueden entender el código de una persona mayor. Los hace aún más seguros cuando pueden encontrar un error en ese código.
Los expone a procesos de pensamiento fuera de los suyos y les permite ver otras formas de manejar las cosas. Incluso como persona de la tercera edad, esto me ha sucedido: ver una forma diferente de resolver un problema puede abrirme los ojos a nuevas posibilidades.
Les ayuda a aprender a leer el código de otras personas y les da la oportunidad de preguntar qué está haciendo el código mientras aún está fresco en la mente del autor. Eso es mucho mejor que tener que mantenerlo seis meses después, cuando el autor se fue hace mucho tiempo o está ocupado en otro proyecto y no tiene tiempo para preguntas.
Es bueno para los adultos mayores porque las preguntas exponen áreas potenciales donde el joven es débil y necesita tutoría (para que puedan tomar más responsabilidad y darles a los adultos mayores más tiempo para realizar otros tipos de tareas) o áreas donde el código simplemente no está claro para cualquiera excepto el autor (lo que significa que puede que ni siquiera esté claro para el autor dentro de un año cuando deba cambiarse). También ayuda a las personas mayores a darse cuenta de que los jóvenes pueden ser más inteligentes de lo que les han dado crédito por ser. Ayuda a mantener a todos en una posición profesional. Después de todo, si excluye a los juniors, está claramente insinuando que no cree que sean capaces de entender el código que es psicológicamente desafortunado.
Los juniors que revisan el código de seniors pueden generar más respeto profesional en su organización. Los adultos mayores pueden darse cuenta de que han estado subestimando a los jóvenes y los jóvenes pueden darse cuenta de que los adultos mayores saben más de lo que les dieron crédito. Los jóvenes a veces piensan que tienen mayores habilidades que las que tienen. Estar expuesto al código que no pueden escribir es bueno para estas personas porque comienzan a darse cuenta de que tienen mucho más que aprender. También estimulará a los mejores para obtener las habilidades. En la escuela, a veces los estudiantes B no entienden por qué no obtuvieron una A hasta que alguien les muestra una muestra del nivel de trabajo A. Lo mismo con juniors a seniors en la revisión de código.
fuente
Mi respuesta es: a veces . Va a variar de un programador a otro y de una tarea a otra.
Por:
En contra:
fuente
Creo firmemente que todos los miembros del equipo deberían participar en ambos lados de las revisiones de código. Los juniors deben revisar el código de Senior y viceversa. ¿Por qué ambos? Porque generalmente no se trata solo de si el código "resuelve el problema". No puedo decirte cuántas veces he tenido que explicarle un código a alguien y de repente se me ocurre una forma mucho mejor de hacerlo al final de la explicación. Las revisiones de código tienen probablemente 3 propósitos:
Soy un junior y comúnmente reviso el código escrito senior. Es una política general de la empresa "alguien revisa todo el código". Aprendo mucho de estos revisando su código y teniendo la oportunidad de hacer preguntas sobre por qué las cosas se hacen de cierta manera. Y a veces, propongo una forma más limpia de hacer cierto código y tal. Mucho más raro que las personas que me dicen cómo mejorar mi código, pero ha sucedido al menos una vez.
También importa cuán formales sean sus revisiones de código. Los nuestros son muy informales y consisten en "oye, mira mi código" que se dice a través de cubículos o en un canal IRC privado. Me imagino que si revisas el código en un entorno más formal, el junior probablemente estaría mucho más interesado en revisar el código de un senior.
fuente
Absolutamente, los ingenieros junior deberían revisar el código de los ingenieros senior, al menos parte del tiempo.
En mi experiencia, es bastante raro que el revisor en una revisión de código uno a uno realmente vea un error que el codificador original omite, ya sea que el revisor sea senior o junior; el revisor ni siquiera tiene que ser humano . Es muy común, por otro lado, que el codificador original reconozca un error al tratar de explicar el código, y cuanto más pequeño sea el revisor, más probable es que sea, debido a la profundidad de explicación requerida.
En mi opinión, algunos beneficios más a menudo pasados por alto pasan por alto que posiblemente sean más importantes a largo plazo que detectar errores:
En ambos aspectos, un revisor junior tiende a beneficiarse más que uno senior.
fuente
¡Los programadores junior deberían estar realizando revisiones de código para sus colegas senior!
Sin embargo, no deberían ser el único crítico . Combínalos con un desarrollador más experimentado por revisión de código.
Hay una gran cantidad de beneficios:
El autor se verá obligado a explicar más de su código. Hablar a través de su código es una de las mejores maneras de encontrar problemas con él, o mejores formas de hacerlo.
El autor encontrará debilidades en su código. El desarrollador junior es más probable que se confunda con algunos de los fragmentos más avanzados. Con frecuencia, estos son "demasiado complicados" por su propio bien y podrían beneficiarse de la simplificación.
El desarrollador junior aprenderá mejores prácticas de codificación. Las revisiones de código son una oportunidad para enseñar con el ejemplo.
El desarrollador junior será un revisor de código más efectivo. La revisión del código es difícil . Cuanto más experimentados estén todos con las revisiones de códigos, más rápidas y efectivas serán las revisiones de códigos.
El desarrollador junior tendrá un conocimiento más profundo de la base del código. ¡Se egoista! Al atraer a los desarrolladores junior temprano, podrás dárselos antes.
El desarrollador junior se sentirá más involucrado. El desarrollador junior comenzará a ver el código "senior" (y sus colegas) como menos extraño e intimidante. Este es un beneficio tremendo y a menudo ignorado de las revisiones de código.
El desarrollador junior es un par de ojos nuevos. No están tan adoctrinados como alguien que ha estado trabajando en la base del código durante un largo período de tiempo. Es más probable que el desarrollador junior señale diferentes formas de lograr cosas al hacer preguntas. ¡No ignores sus comentarios más salvajes sin al menos alguna consideración!
Los desarrolladores senior son responsables. Con frecuencia he visto situaciones en las que los desarrolladores senior tienden a pasar por alto el código de los demás (confianza, pereza, etc.). Un par de ojos extra ayuda a desalentarlo.
La desventaja a considerar es que todas las partes involucradas pasarán una buena cantidad de tiempo realizando revisiones de código. Por lo tanto, puede ser un poco difícil de vender a la gerencia. Sin embargo, los beneficios superan por completo el ritmo más lento.
fuente
Se realiza una revisión del código para revisar el código, no para aprender. Si yo fuera un programador junior, me intimidaría revisar el código de senior.
Por otro lado, leer el código del senior es una excelente forma de aprender, siempre que el Senior esté disponible para responder todas las preguntas.
Dos alternativas podrían ser:
fuente