Cómo mejorar nuestros code review

Hace casi veinte años, comencé como desarrollador en una empresa que implementaban code review. En ese momento, nunca había hecho una revisión de código ni mi código nunca había sido revisado.

Para mi primer proyecto, tuve que crear un componente COM en C ++ usando el marco ATL. ATL utiliza el recuento de referencias para administrar la vida útil de un objeto. El recuento de referencias significa que debe llamar a Release () cuando haya terminado de usar el objeto. Si olvida llamarlo, se produce una pérdida de memoria.

Recuerdo el resultado de mi primera revisión de código como si fuera ayer. Fue dramático.

No recuerdo el número exacto, pero estoy seguro de que hubo más de 100 comentarios de revisión. El revisor mencionó cada Release () que olvidé. El tono de la crítica fue duro. Luché con eso.

¿Fui un desarrollador tan terrible?

Actualmente, llevo más de una década haciendo revisiones de código. Realizar revisiones de código es el mejor método para mejorar la calidad del código y crear una cultura de aprendizaje y respeto.

Sin embargo, hay una receta específica para revisiones de código exitosas.

 

¿Por qué son críticas las revisiones de código?

Abra el último libro que leyó sobre programación u otro tema técnico y busque un párrafo titulado Agradecimientos al comienzo del libro.

Estoy seguro de que en este párrafo, el autor agradece a su editor por ayudar a crear una mejor versión del libro. La edición y revisión es el procedimiento estándar al escribir un libro.

¿Por qué no es lo mismo para el desarrollo de software?

Durante una revisión de código, otro desarrollador verifica su trabajo en busca de errores. El desarrollador señalará mejoras, tales como:

  • código difícil de entender
  • nombres poco claros
  • código comentado
  • código no probado

Además de buscar mejoras, el revisor aprende de la solución. Debería ver las revisiones de códigos como una oportunidad para crecer y como una red de seguridad, no como una oportunidad para criticar.

Las revisiones de código también son conocidas para prevenir errores. La investigación realizada por IBM² encontró que cada hora de inspección evitaba aproximadamente 100 horas de trabajo relacionado (prueba y corrección de defectos).

 

Automatizar lo que se puede automatizar

Antes de continuar y mirar mi receta para revisiones de código exitosas, tenemos que hablar sobre la automatización.

No pierda el tiempo durante las revisiones de código para comprobar si hay errores de estilo. En su lugar, acuerde una guía de estilo y use un linter o una herramienta de análisis estático para verificar ese estilo.

Además, asegúrese de que es posible ejecutar una compilación completa para verificar que todo sigue compilando correctamente y que todas las pruebas unitarias tienen éxito.

La automatización de todas estas tareas hará que la contribución de un revisor sea más valiosa. El revisor puede centrarse más en otros aspectos, como errores funcionales y legibilidad.

 

Receta para revisiones de código

Mi receta para una revisión exitosa del código consiste en dos conjuntos de ingredientes, uno para el autor de los cambios y otro conjunto para el revisor.

 

Ingredientes para el autor

Como autor de los cambios, usted tiene la responsabilidad de facilitar que el revisor comprenda la revisión de su código.

El tamaño del conjunto de cambios debe ser pequeño.

A nadie le gusta hacer revisiones de código que consisten en miles de líneas de cambios de código. Tomará mucho tiempo y existe una alta probabilidad de que sea necesaria una nueva revisión debido a una gran cantidad de cambios. Investigaciones han demostrado que el tamaño del conjunto de cambios influye en la utilidad de los comentarios. A medida que el conjunto de cambios aumenta, el número de comentarios útiles disminuye.

Así que asegúrese de que el tamaño de su conjunto de cambios sea pequeño, digamos, menos de 250 líneas de código. La revisión será de mayor calidad.

Revisa tu diff

No puedo decirte cuántas veces encontré errores simples al corregir mis pull request. La mayoría de las herramientas como GitHub, Bitbucket o Azure DevOps contienen herramientas para corregir su diferencia antes de enviar su pull request.

Como autor, siempre debe corregir los cambios en su código para encontrar errores comunes para que el revisor pueda centrarse en otros puntos.

Ingredientes para el revisor

Apunta a mejorar, no a la perfección

Intenta mejorar el código una muesca en lugar de hacerlo perfecto. Me ayuda a pensar en términos de calificaciones. Cuando recibo un pull request que comienza en una D, ayudo al autor a llevarla a una C, no perfecta pero mejor de lo que era.

¿Esto no degradará toda la base de código a una C? No lo creo. Me parece que cuando ayudo a un desarrollador a pasar de una D a una C, la próxima solicitud de extracción que envían comenzará en una C. Dentro de un par de pull request, me envían reviews que comienzan como Bs, que se convierten en As al final de la revisión.

Respetar el alcance de la revisión.

Simplemente, solo revise el código que se modificó. Si ve algo cerca del código modificado que cree que debería arreglarse, puede pedirle al autor que lo arregle. Pero recuerde que no está dentro del alcance de la revisión.

Si el pull request no cambió una línea, está fuera de alcance.

El tono de la reseña.

El tono de la revisión me parece uno de los aspectos más importantes de una revisión de código. Siempre trate de hacer preguntas abiertas en lugar de hacer declaraciones con opiniones. Ofrezca otras alternativas o posibles soluciones alternativas. Pero no insista en esas alternativas o soluciones alternativas.

Si no comprende algo, suponga que, como revisor, le falta algo y solicite una aclaración. Intente usar la palabra considerar. Por ejemplo: «¿Consideró refactorizar esto en un solo método?» o «Considere cambiar el nombre de este método por legibilidad».

Revisar de manera oportuna

Intente revisar la solicitud de extracción lo antes posible. Si primero tiene que terminar su tarea, informe al autor cuándo comenzará la revisión.

Use una lista de revisión

Debería intentar crear una lista de verificación que pueda usarse como referencia al realizar la revisión del código. Eche un vistazo a las siguientes categorías para obtener inspiración sobre los elementos que debe incluir en su lista de verificación:

  • Robustez
  • Corrección
  • Diseño
  • Mantenibilidad
  • Diseño de API REST
  • Globalización
  • Actuación
  • Seguridad
  • Escalabilidad
  • Testabilidad

Otra fuente de inspiración es ISO 25010, un estándar que define las características de calidad de un sistema de software.

 

Fuente: https://medium.com/better-programming/how-to-improve-your-code-reviews-f5e9d5a6536c

5 herramientas de desarrollo web que pueden mejorar su productividad

El tiempo es siempre un recurso escaso para los desarrolladores. Desde plazos agresivos hasta proyectos múltiples, hasta requisitos inesperados, nuestro tiempo está constantemente en demanda. Es por eso que siempre estamos buscando herramientas y procesos que nos ayuden a aumentar la productividad.
En este artículo, veremos cinco herramientas de desarrollo web que podrían darle el impulso adicional de productividad que necesita.

1.- Domina la línea de comando con Oh My Zsh

Las interfaces de línea de comandos predeterminadas para Windows y OS X (el símbolo del sistema y Bash) pueden ser desalentadoras de aprender y difíciles de personalizar. Si no eres un experto, puedes terminar repitiendo tareas serviles que podrían automatizarse.
Oh My Zsh es un marco de código abierto impulsado por la comunidad construido sobre Zsh, un shell de línea de comandos que muchas personas encuentran más fácil y mejor que las opciones predeterminadas.
Oh My Zsh proporciona una gran cantidad de complementos (250) y temas (140) listos para usar, lo que le permite personalizar su terminal según sus preferencias. Es más rápido, más cómodo para trabajar y le permite automatizar fácilmente sus tareas diarias. Debido a que la línea de comandos se está convirtiendo cada vez más en una parte del flujo de trabajo de cada desarrollador web, esta podría ser una gran herramienta de productividad para incorporar a su trabajo diario.

2.- Prueba de API sobre la marcha con insomnio

La prueba de los endpoint REST puede ser engorrosa, lenta y confusa. Insomnia es un cliente GraphQL y REST multiplataforma gratuito y de código abierto que no solo es potente, sino que también viene con una interfaz de usuario intuitiva y simple que facilita las pruebas. Algunas características del insomnio incluyen:

• Generación de fragmentos de código: Insomnia puede generar código de cliente para más de 20 lenguajes diferentes, incluidos Node.js, Go, Swift, Python, Java y C.
• Sistema de complementos: el sistema de complementos le permite ampliar la funcionalidad de Insomnia. Puede crear una etiqueta de plantilla personalizada para representar valores personalizados o crear un tema de color personalizado utilizando la API de complementos.
• Variables de entorno: son valores reutilizables que se utilizan en cualquier entrada de texto dentro de Insomnia. Algunas variables comunes son URL base, tokens de autenticación e ID de recursos.

Una de las principales características beneficiosas de Insomnia es la compatibilidad con GraphQL. La demostración a continuación muestra un flujo de trabajo típico para consultar un endpoint GraphQL.

En este ejemplo, estoy enviando una solicitud utilizando una API pública de GraphQL llamada países. El insomnio genera automáticamente el esquema cuando se pasa una URL. Después de enviar la consulta a la izquierda, devuelve la respuesta a la derecha.

La aplicación se entrega con muchas funciones útiles que pueden optimizar su flujo de trabajo. Por ejemplo, aquí podemos ver la capacidad de usar variables de entorno.

Cuando se trabaja con API, es común repetir valores idénticos en varias solicitudes. Realizar esta tarea manualmente puede ser lento y difícil. El uso de variables de entorno resuelve este problema al permitirle definir un valor y luego hacer referencia a ese valor donde sea necesario.

 

3.- Boost Git Superpoderes con hub

La mayoría de nosotros pasamos mucho tiempo en GitHub. Hub es una herramienta de línea de comandos que le ayuda a realizar tareas cotidianas de GitHub sin tener que cambiar constantemente desde el terminal. Hub envuelve Git y lo extiende con funcionalidad adicional, que incluye repositorios de clonación, enumera los últimos problemas abiertos y comparte registros o fragmentos de código a través de Gist. Hub no solo facilita el trabajo con GitHub, sino que mejora la productividad al reunir todas sus herramientas en un solo entorno.

Hay una extensa lista de comandos y acciones que puede realizar con hub. Aquí está la lista completa de comandos de instalación. También puede encontrar la lista ejecutando el comando man hub en su terminal.

 

4.- Acceso a la documentación sin conexión con DevDocs

Todos usamos documentación (algunos de nosotros bastante). Cuando trabaja en una pila de múltiples tecnologías, puede llevar mucho tiempo y puede ser inconveniente cambiar constantemente de un conjunto de otro a otro. DevDocs resuelve este problema. DevDocs es una herramienta gratuita y de código abierto para explorar una amplia variedad de lenguajes de programación y documentación de herramientas de desarrollo, todo a la vez en una única interfaz de usuario web limpia y organizada.

     DevDocs ofrece:

  • Búsqueda instantánea
  • Soporte fuera de línea
  • Soporte móvil
  • Tema oscuro
  • Shortcut de teclado
    Y más

 

Lo uso para trabajar con múltiples idiomas o herramientas. Por ejemplo, lo uso ampliamente para leer y buscar la documentación de Vue y Cypress al mismo tiempo.

 

5.- Escalar imágenes SVG con SVGOMG

Y, finalmente, cambiando de marcha a una herramienta más práctica, tenemos SVGOMG, una herramienta en línea gratuita para optimizar archivos de gráficos vectoriales escalables (SVG).
Las imágenes SVG son preferibles a otros formatos (como PNG o JPG) debido a su capacidad para escalar y seguir respondiendo en varios dispositivos y tamaños de pantalla. Una desventaja de usar SVG es que los archivos pueden llegar a ser muy grandes debido a la información redundante, como metadatos del editor, comentarios, elementos ocultos y valores predeterminados o no óptimos.
SVGOMG es una herramienta que elimina y optimiza de manera segura estos datos para reducir el tamaño del archivo.

La imagen de arriba muestra un escenario típico, donde un archivo SVG ha sido optimizado en un 69.42%. Esta es una herramienta bastante simple, pero puede ayudar a mejorar el rendimiento general de su sitio web y evitar la hinchazón en su página web. SVGOMG es una implementación de interfaz de usuario de SVGO Optimizer, que es una herramienta de línea de comandos basada en Node.js.

 

Conclusión

Encontrar formas de mejorar la forma en que trabajamos es importante. Al aprovechar las herramientas anteriores, puede aumentar su productividad y optimizar su flujo de trabajo.
Comience a priorizar las herramientas que ayudan a automatizar su flujo de trabajo, y será recompensado con ahorros de tiempo y ganancias de productividad.

 

fuente5 Web Development Tools That Can Improve Your Productivity

¿Podrá predecir la inteligencia artificial las películas que veremos a través del tráiler?

¿Te imaginas que la industria audiovisual supiera de antemano qué película vas a ver solo por el tráiler? Pues deja de imaginarlo porque ya es una realidad. 20th Century Fox se sirve de la inteligencia artificial para estudiar esos avances fotograma a fotograma. Primero se etiqueta lo que ocurre en cada uno y los objetos que aparecen en escena y luego los comparan con otros avances ya etiquetados. Entienden que si las etiquetas son similares, esas dos películas interesarán a las mismas personas.

Leer más «¿Podrá predecir la inteligencia artificial las películas que veremos a través del tráiler?»