Soy un desarrollador experimentado, pero no he hecho muchas revisiones de código. Me piden que revise el código escrito en Python pero no sé Python.
¿Tiene algún sentido revisar el código en un idioma que no conozco?
Soy un desarrollador experimentado, pero no he hecho muchas revisiones de código. Me piden que revise el código escrito en Python pero no sé Python.
¿Tiene algún sentido revisar el código en un idioma que no conozco?
Respuestas:
¿Algún sentido? Si. Incluso si no sabe nada sobre la semántica de un lenguaje de programación, aún puede leer caracteres y notar un formato inconsistente, comentarios faltantes, identificadores mal elegidos, duplicación obvia, etc.
¿Mucho sentido o suficiente sentido para pagar el costo de su tiempo ? No estoy seguro. Esto depende de su posición, la importancia de las revisiones de código en el flujo de trabajo de su equipo y varios otros factores que no podemos cuantificar lo suficientemente bien.
enumerate
). Creo que su comentario es un gran ejemplo de por qué tratar de revisar un idioma con el que no está familiarizado debería ser educativo para usted.
Como colaborador habitual en Code Review Stack Exchange , me encuentro con muchas preguntas que padecen problemas independientes del idioma, por ejemplo:
Y la lista continúa. Sin embargo, aunque no necesito saber el idioma, aún puedo revisar esos problemas / puntos.
Algunos de nuestros principales usuarios tienen las mejores respuestas en idiomas que no usan activamente o no conocen. Incluso dos de mis diez principales están en idiomas que no conozco ni puedo compilar / ejecutar en mi máquina.
Incluso diría que sería lo mismo que revisar el pseudocódigo de alguien. Siempre que pueda observar y comentar cosas relevantes para las cosas que entiende, estará bien y será relevante.
Aquí está el resultado final, en mi opinión:
Para la situación específica de no conocer Python, sería especialmente cuidadoso con esto. Python tiene muchas expresiones idiomáticas y prácticas estándar que terminan haciendo que Python se vea muy diferente de lo que cabría esperar en otros idiomas. (De hecho, creo que las cosas que enfatiza Python han hecho que mi código se vea mejor en otros idiomas, y no al revés). Más allá de PEP8 tiene un buen ejemplo de cómo puede extrañar completamente la mentalidad que Python fomenta.
Veamos un ejemplo simple. Toma este código:
f = open('/home/me/something.txt')
try:
content = f.read()
finally:
f.close()
¿Ves el problema con este código? Si no ha trabajado con Python, probablemente no lo haga. El problema es que hay un gran estilo preferido en Python que hace exactamente lo mismo:
with open('/home/me/something.txt') as f:
content = f.read()
Este es un administrador de contexto. ¿Sabes para qué son buenos? ¿Sabes cuándo sería apropiado usar uno? ¿Sabes cuándo sería apropiado crear el tuyo? ¿No? Entonces probablemente no estés listo para revisar Python.
Veamos otro ejemplo.
def add_fifty(other_list):
result = list()
for i in other_list:
result.append(i + 50)
return result
x = range(10)
y = add_fifty(x)
¿Ves el problema? El problema es que este método es completamente innecesario . Probablemente debería usar una comprensión en el lugar, cuando la operación es así de simple:
x = range(10)
y = [i + 50 for i in x]
Si no viste eso, no estás familiarizado con las características y modismos de Python.
Es posible que le hayan pedido que revise el código de Python precisamente porque no conoce Python . Hay una teoría de gestión que dice que es útil tener un "tonto" en un equipo. No te estoy llamando mal nombre :) La idea es que un equipo puede sufrir de pensamiento grupal y desarrollar visión de túnel. Una forma de salir de esto es incluir a alguien en el equipo que los otros miembros del equipo considerarían un "tonto", es decir, alguien que no conoce el tema. Hará preguntas para informarse, y las preguntas vendrán desde un punto de vista que los otros miembros del equipo probablemente nunca consideraron.
No conoce Python, por lo que lo que puede parecer común para los codificadores de Python puede parecerle extraño. Puede sugerir una mejora que el equipo nunca consideró.
La revisión de código no se trata de buscar variables con ortografía no válida y formato incorrecto. Si usa la revisión de código para encontrar esas cosas, deje de perder el tiempo y use una herramienta.
La revisión de código se trata de mejorar el diseño y detectar errores comunes por parte de programadores novatos.
Como programo en C ++ y no conozco Python lo suficientemente bien, no me atrevería a revisar el código de Python. Sin embargo, podría ayudar con una revisión del código Java.
No dijo en qué idioma programa, pero no veo en qué puede contribuir en una revisión de código, si no conoce el idioma en el que está programado.
Las revisiones de código (además de buscar fallas) son una buena introducción de un miembro del equipo a otros para agregar o cambiar el código. Si eres un desarrollador experimentado , deberías poder leer lo suficiente para comprender en su mayoría lo que está sucediendo.
Mire una revisión del código desde el punto de vista del líder de un equipo: hay alguien allí que entiende lo que la aplicación debería estar haciendo (lógica de negocios), hay alguien allí que entiende que el código está haciendo (lógica de implementación), y posiblemente varias otras personas. Hay quienes necesitan tener una idea de cómo encaja todo eso.
Definitivamente no deberías ser el único revisor, pero hay muchas buenas razones para que seas uno de los revisores. No conocer el idioma no es un gran obstáculo para muchas preguntas que deben responderse en una revisión de código. Como ejemplo, soy uno de los 20 principales respondedores en la etiqueta C # en este sitio, y no he compilado hello world en C #.
Algunos conocimientos que puede compartir sin conocer el idioma:
También es una buena manera de ponerse al día con un nuevo producto. Me acabo de unir a un nuevo equipo, donde sé que los idiomas se usan bastante bien, pero no conozco el dominio. Participar en las revisiones de código me ha ayudado a conocer mejor el lado del dominio, aunque todavía no he podido contribuir mucho en ese sentido.
En su caso, será una buena manera de aprender las expresiones idiomáticas de un nuevo idioma, ya que verá los comentarios que dejan otros críticos. Este es el tipo de cosas que son muy difíciles de aprender de otra manera, porque a su intérprete no le importa si su código es pitónico o no.
Esta podría ser una situación de ganar-ganar. Me atrevería a decir que podrías ser un crítico especialmente valioso porque eres una virgen de Python que no ha sido contaminada por la Maldición del Conocimiento .
Piénselo de esta manera: si el código es lo suficientemente claro como para que incluso una virgen de Python pueda entenderlo, entonces debe ser un buen código. Las partes que tiene problemas para comprender podrían ser candidatos para volver a trabajar o para comentar mejor.
Obviamente, también sería beneficioso para usted, ya que estaría aprendiendo un nuevo idioma a medida que avanza. (Con suerte, el código que se le proporciona es un buen ejemplo para aprender). Esta disposición debería funcionar particularmente bien para Python, un lenguaje que tiene la reputación de ser "pseudocódigo ejecutable". Si eres un desarrollador experimentado, entonces no deberías tener muchas dificultades para comprender la esencia de un programa Python.
La advertencia sería que no se espera que detecte errores que surgen de problemas específicos del idioma . Pero la búsqueda de errores no es el único propósito de las revisiones de código. Por lo menos, estaría participando en la transferencia de conocimiento simplemente al saber qué tipo de cosas suceden en el código de su colega.
Una vez me pidieron que auditara un proyecto que estaba llevando a cabo un subcontratista y parecía tener serios problemas de rendimiento. Rápidamente establecí que el factor crítico era un solo módulo Perl. Nunca me había encontrado con Perl antes y no teníamos a nadie en la organización que lo supiera, así que empecé a tratar de entenderlo yo mismo. Nunca llegué a comprender los detalles, pero estaba muy claro que el algoritmo que estaba usando tenía un tamaño de datos cuadrático y esta fue la causa de todos los problemas. Entonces, sí, leer el código en un idioma que no comprende completamente puede ser productivo. La ventaja es que aprendes nuevos trucos mientras lo haces.
Algunas observaciones:
1) Si eres un desarrollador experimentado, elegirás Python (o al menos todo lo que necesites saber), solo trabajando con él. Será un caso de "aprender haciendo". Al principio será difícil, pero será más fácil a medida que aprendas el idioma. Piense en esto como una oportunidad para aprender otro idioma (las personas a menudo aprenden idiomas "extranjeros" a través de la "inmersión").
2) Hay una cantidad de personas valiosas en los sitios de SE que no son "técnicas", pero que tienen experiencia en gramática, comunicaciones y lógica. Dichas personas aportan un "ojo nuevo" a los sujetos y hacen una serie de arreglos "obvios" que otros extrañan, porque están demasiado "atados" en el material. Se le está consultando presumiblemente por sus habilidades no "técnicas" (es decir, no Python), como la lógica y la comprensión general de la programación.
Y si no ha realizado muchas revisiones de código, casi cualquier experiencia de revisión de código lo ayudará como desarrollador. Esto parece una buena combinación entre tus habilidades y necesidades y las del equipo.
Eso depende de cuál sea el objetivo de la revisión; es decir, lo que quieres decir con efectivo .
Es probable que aún pueda detectar algunos problemas. Si eres todo lo que tienen que revisar y solo esperan que echar un vistazo sobre esto ayude a algunos y posiblemente atrape algo, entonces seguro. Muchos conceptos de estructura son similares entre idiomas. Uno especialmente es poder revisar los comentarios. Debe comentarse lo suficientemente bien como para que un programador que no sea de ese lenguaje en particular aún pueda tener una buena idea de lo que está sucediendo. Si no ... entonces puedes decirles dónde faltan sus comentarios. Si está tan bien comentado ... entonces debería poder revisar un poco de su estructura solo a través de las anotaciones de lo que está sucediendo en lugar de leer realmente el código de lo que está sucediendo.
Pero es probable que no detecte muchos otros problemas. Por lo tanto, si pretenden que su revisión sea una determinación exhaustiva de si este es un programa bien hecho / viable, se sentirán decepcionados.
El hecho de que ese resultado valga o no el tiempo de hacerlo depende en gran medida del proyecto.