He revisado código sobre 750 solicitudes de tracción en Amazon. Aquí está mi proceso exacto de pensamiento.

He revisado código sobre 750 solicitudes de tracción en Amazon. Aquí está mi proceso exacto de pensamiento.
He revisado código sobre 750 solicitudes de tracción en Amazon. Aquí está mi proceso exacto de pensamiento.

He revisado código sobre 750 solicitudes de tracción en Amazon. Aquí está mi proceso exacto de pensamiento.

Curtis Einsmann

Descargo de responsabilidad: No estoy representando a Amazon de ninguna manera. Las opiniones escritas aquí son estrictamente mias.

He revisado código sobre 750 solicitudes de tracción en mi carrera de ingeniero de software de 5 años en Amazon. Como lo dirigí la tecnología de mi equipo, proporciono comentarios perspicaces y fomentan una barra de calidad de código alta.

Pero como un ingeniero junior era un colaborador pobre. No sabía dónde empezar, qué buscar o cómo comentar. Di un comentario inútil sobre el estilo. Me apresuré a través de las críticas que le damos el clásico "LGTM!" Después de faltar fallas obvias.

Lo que sigue es mi proceso de pensamiento sobre cómo reviso las solicitudes de tracción (PR).

Entiendo por qué los comentarios del código son importantes.

El código de calidad fortalece la legibilidad y la comprensión del sistema. Esto acelera la velocidad de la función del equipo. El tiempo dedicado a revisar el código para defectos y calidad paga dividendos a largo plazo.

Las revisiones de código son una excelente oportunidad de entrenamiento. La retroalimentación perspicaz acelera el aprendizaje y el crecimiento.

También son una excelente oportunidad de aprendizaje para el revisor. Cada ingeniero resuelve problemas de su manera única. El código de revisión me expone a las estrategias de resolución de problemas que puedo aprovechar más adelante.

Me he tomado el tiempo para aprender principios de programación.

Entiendo principios como sólidos, secos y besos. He leído el libro de código limpio. Entiendo la importancia de la selección de la estructura de datos, la abstracción precisa, el nombramiento lógico y el flujo de control.

También he leído contraargumentos a estos principios. Entiendo que son directrices, no las reglas. Trabajan en algunos contextos pero no otros.

Las preguntas más importantes son: ¿Funciona? ¿Es fácil de mantener? ¿Podremos entenderlo 2 años a partir de ahora?

Revisa el PR lentamente.

La retroalimentación perspicaz requiere una comprensión profunda del cambio. Evito que mis ojos de acristalamiento de una línea de código. No entiendo 100%.

Pretendo que hay un defecto oculto en el código; Soy el detective.

Empiezo con el crux.

Escaneo a través de la PR para encontrar la implementación crítica. Este podría ser el punto de entrada API o la capa de acceso a datos refactored.

Empiezo a leer. Escribo comentarios a medida que voy, sabiendo que necesitaré arreglarlos más tarde.

Leí al azar hasta que logre una comprensión profunda.

Sigo las llamadas de la función. Me salto alrededor. Leí el código existente para ver cómo se ajusta el cambio. Leí la tarea de contexto sobre el problema.

Cada línea de código es una pieza de rompecabezas.

A menudo termino leyendo el mismo código 3, 4, incluso 5 veces. Leí hasta que todo el rompecabezas se forma en mi cerebro.

Leí clase por clase.

Esto viene solo después de lograr una comprensión profunda.

Identé importantes casos de borde ya que leí la implementación. Me aseguro de que estos casos de borde estén cubiertos cuando leí el código de prueba.

Comento con amabilidad.

Comento sobre el código, no en la persona. Evito usar "usted" o "su". Prefijo Nitpicks con "Nit". I Frase la más comentarios como preguntas o sugerencias.

Dejo al menos un comentario positivo. (A veces me olvido de hacer esto; no debería).

Me hago disponible para las discusiones verbales si eso se desea.

Comento con precisión.

Escribo comentarios mientras leí. Pero reescribo la mayoría de los comentarios después de la comprensión profunda. La primera iteración de la lectura no me da una imagen de rompecabezas bastante clara para un comentario preciso.

No dejo comentarios ambiguos. Cada comentario explica:

Dejo decisiones de estilo hasta las herramientas de formato automatizado.

Aprobar que cuando la PR es buena, no es perfecta.

Entiendo la perfección es un pastel en el cielo. Lo apruebo si funciona y es legible.

Pero sostengo a mis compañeros de equipo a un alto nivel implacable. Doy un comentario [amable, preciso] incluso con una confusión menor. Mantengo a mis PR autorizados al mismo estándar.

Algunos compañeros de equipo tienen un historial comprobado de la entrega de la calidad, el código funcional. Entiendo que estos compañeros de equipo merecen indulgencia. No soy tan completo con estas reseñas, porque no necesito serlo.

Busco comentarios por si estoy revisando bien.

Es difícil medir la calidad del código. Las métricas posibles son defectos de producción mínimos, la velocidad de las características y la velocidad de rampa de nuevo alquiler.

Pero estos son difíciles de medir. Como está midiendo si he realizado una buena revisión.

Busco comentarios de otros ingenieros para comprender si he sido útil. Entiendo que mejoraré mientras realizo más comentarios.

Subir