Revisiones de código efectivas para equipos distribuidos

Aprende a realizar una revisión de código efectiva para equipos de software distribuidos en el entorno de trabajo asincrónico de hoy y haz que las mejores prácticas funcionen mejor para ti.

-

October 24, 2022

Las revisiones de código son un paso crítico en el ciclo de desarrollo para mejorar la calidad y mantenibilidad del código. Sin embargo, muchos equipos de ingeniería renuncian a las revisiones de código y, en su lugar, confían en pruebas automatizadas o QA manual para determinar si un fragmento de código está listo para su lanzamiento.

La investigación ha demostrado que la inspección de diseño y código ofrece una tasa de detección de defectos mucho más alta que las pruebas de software, como se muestra en el libro de Steve McConnel CodeComplete.

Promedio de tasa de detección de defectos

¿Pero cómo maximizas los beneficios de las revisiones de código, especialmente al gestionar un equipo distribuido y asincrónico?

Primero, asegúrate de que tu equipo esté siguiendo algunas prácticas comprobadas y efectivas. En segundo lugar, aprovecha las herramientas modernas para habilitar una comunicación asincrónica colaborativa. Profundicemos:

Cómo hacer una revisión de código: 5 consejos y prácticas recomendadas

No tienes que reinventar la rueda. Construye una base sólida comenzando con estas mejores prácticas:

Compila una lista de verificación para la revisión de código

Crea una lista de criterios que tu equipo debe seguir durante la revisión de código. Debe cubrir lo siguiente:

Elimina comentarios redundantes en el código para mejorar la legibilidad.

  • Sigue el principio KISS.
  • Verifica que el nuevo código se ajusta a tu guía de estilo existente.
  • Aborda las últimas vulnerabilidades para garantizar la seguridad de la aplicación.
  • Usa encapsulamiento y modularización para separar las preocupaciones.
  • Asegúrate de que la cobertura de pruebas sea suficiente.
  • Donde tenga sentido, sigue el principio DRY: Aplica componentes, funciones y servicios reutilizables tanto como sea posible.

Establece tiempo límite y límite de líneas de código (LoC) para la revisión

Nuestra atención al detalle decae después de 60 minutos, por lo que es mejor que los miembros del equipo realicen sesiones de revisión de código más cortas pero con mayor frecuencia. Un periodo más corto de tiempo también significa que debes establecer un límite de LoC para cada sesión (por ejemplo, alrededor de 200-400 líneas). De hecho, un informe de Cisco encontró que la habilidad de los programadores para identificar problemas disminuye después de 200 líneas.

Densidad de defectos vs LOC

Atemorizar demasiados cambios de código en una revisión puede afectar la calidad del resultado. La investigación sobre la revisión de código entre pares en el desarrollo de software distribuido encontró que un aumento en el tamaño del parche está asociado con una disminución en la efectividad del proceso de revisión. Los revisores se vuelven menos comprometidos, ofrecen menos información y es más probable que pasen por alto casos extremos.

Finalmente, no apresures el proceso. Un estudio encontró que los revisores que revisan menos de 400 líneas por hora tienen una habilidad superior al promedio para encontrar errores. Mientras tanto, aquellos que avanzan más rápido que 450 líneas por hora logran una densidad de defectos por debajo del promedio.

Mide el progreso con las métricas adecuadas

Lo que se mide se hace: las mediciones objetivas te ayudan a seguir la eficiencia y efectividad de las revisiones de código, analizar cómo soporta el proceso de desarrollo de software y entender el tiempo que debes dedicar para completar un proyecto. Aquí están las métricas clave para seguir y lo que significan:

Tasa de inspección: El tiempo que tarda tu equipo en revisar una cantidad determinada de código. Te puede ayudar a medir la legibilidad del código. 

  • Tasa de defectos: La frecuencia con la que tu equipo identifica un error. Te puede mostrar la efectividad de tu método de revisión.
  • Densidad de defectos: El número de defectos en una cantidad específica de código. Te puede ayudar a identificar componentes vulnerables y asignar más recursos hacia ellos.

Ofrece retroalimentación objetiva y constructiva

Las revisiones de código no se tratan solo de señalar lo que se necesita corregir. Los revisores deben centrarse en crear un ambiente colaborativo y de apoyo tomando tiempo para explicar el motivo detrás de cada solicitud o recomendación. También deben plantear preguntas abiertas para fomentar la discusión y el intercambio de conocimiento.

Una explicación detallada ayuda a acelerar el proceso de revisión porque evita la necesidad de intercambios adicionales entre el autor y el revisor.

Establece pipelines sólidos de CI/CD

Errar es humano. Incluso los mejores programadores cometen errores y los revisores más meticulosos pasan por alto errores. Como parte de tu pipeline de integración continua/entrega continua (CI/CD), una revisión de código sistemática incluye un componente de pruebas automatizadas y verificaciones de seguridad para garantizar que tienes un producto de alta calidad.

Mejores revisiones de código para equipos distribuidos

A menudo es más desafiante para los equipos distribuidos implementar las mejores prácticas de revisión de código debido a la falta de canales de comunicación efectivos:

Compartir conocimiento e información en formato escrito, como correo electrónico, puede convertir algo que puedes simplemente señalar en la pantalla en una novela. A menudo se pierden los matices y los intercambios posteriores pueden ser pasados por alto entre los interminables hilos de "responder a todos".

  • ¿Qué hay de las capturas de pantalla? Te ahorran escribir mucho al describir elementos visuales, pero la imagen estática no te ayuda a ilustrar cómo funcionan los componentes interactivos a lo largo de todo el flujo de usuario.
  • El chat o la mensajería directa añade interactividad y fomenta las discusiones, pero la falta de estructura puede llevar a un intercambio interminable. Además, con la mayoría de las plataformas de mensajería directa, es fácil que un mensaje o un hilo se pierda, dificultando el seguimiento.
  • Las videollamadas permiten el intercambio en tiempo real, pero la programación puede ser un dolor de cabeza. Las reuniones de video largas cansan a las personas, afectando la capacidad de los desarrolladores para identificar problemas.

Además, las reuniones pueden no ser la manera más rentable de realizar una revisión de código. Un estudio encontró que los equipos de desarrollo pasan el 75% de su tiempo en reuniones y el 25% leyendo. Sin embargo, la lectura revela el 80% de los defectos y los revisores son 12 veces más eficientes en identificar problemas a través de la lectura que en reuniones.

Cómo realizar revisiones de código efectivas en equipos asincrónicos

Un proceso efectivo de revisión de código debe permitir a los revisores más tiempo para examinar el código y darles las herramientas para comunicar sus hallazgos de manera eficaz de forma asincrónica. Aquí tienes cómo recrear la inmediatez de las interacciones en persona sin reuniones interminables:

Aplica el contexto a la conversación

Los comentarios escritos a menudo se centran en cambios individuales y no fomentan que los miembros del equipo den un paso atrás y consideren cómo los cambios impactan todo el sistema, las tareas de desarrollo futuras y la facilidad de mantenimiento.

La naturaleza lineal de la mayoría de los métodos de comunicación asincrónica a menudo limita el alcance de estas discusiones, dificultando la introducción del contexto más amplio y enfatizando cada elemento adecuadamente. Si te desvías a un tema diferente, corres el riesgo de desviarte al punto donde el equipo pierde el contacto con el tema original.

Bubbles facilita la adición de jerarquía y contexto a tu revisión de código guiando a tu equipo a través de tus comentarios mediante un compartir pantalla. Puedes cambiar entre varias pestañas para abordar lo específico del código en cuestión mientras ilustras cómo se ajusta a la imagen más grande sin perder de vista la línea de código en cuestión.

Prueba la entrada con sello de tiempo en bubbles

Los miembros del equipo pueden agregar su opinión, con sello de tiempo para mostrar a qué se refiere, para que puedan discutir inquietudes relacionadas con el contexto más amplio en un hilo relacionado sin que todos se pregunten, "¿cómo llegamos aquí, y cómo se relaciona eso con esa línea de código?" después de algunos intercambios.

Convierte una revisión unidireccional en una colaboración bidireccional

Con docenas de comentarios en cientos de líneas de código, ¿cómo gestionas múltiples hilos de conversaciones de manera efectiva y eficiente para que todo se aborde?

Con bubbles, puedes dejar comentarios separados, de modo que cada uno se refiera a una línea específica de código o problema en el video. Los miembros del equipo pueden discutir cada uno y hacer un seguimiento para asegurar que esté resuelto sin pasar por una larga lista de retroalimentación en un correo electrónico o documento. 

Cada elemento puede ramificarse en su propia discusión si es necesario para mantener los comentarios manejables. Puedes etiquetar a los miembros del equipo apropiados para que se unan a la conversación en lugar de hacer que todos lean un largo hilo de "responder a todos" que causará una gran confusión y frustración (seamos honestos, ¿quién lee todo?).

Haz que el proceso sea personal, respetuoso y conversacional

Los comentarios percibidos como hostiles o irrespetuosos pueden afectar cómo los miembros del equipo reciben la retroalimentación y su moral. Creemos que las personas no quieren ser abrasivas o impulsivas intencionalmente, pero la mayoría de los métodos de retroalimentación no permiten la oportunidad o el espacio para que los revisores sean reflexivos y empáticos.

La retroalimentación asincrónica a través de una herramienta de revisión de código, correo electrónico o captura de pantalla permite a los miembros del equipo revisar todo antes de comentar. Pero carecen de la inmediatez para comunicar matices a través de gestos y tonalidad, lo que hace que sea más fácil para la audiencia malinterpretar el tono y la intención del comentario.

Por otro lado, las reuniones síncronas (por ejemplo, videollamadas) ayudan a los miembros del equipo a captar los matices de los comentarios. Pero la presión de la respuesta inmediata puede hacer que las personas reaccionen, por lo que la conversación se impulsa por el primer pensamiento en lugar del mejor pensamiento.

¿Cómo obtener lo mejor de ambos mundos?

⚡️ Potencia tu productividad en reuniones
Aprende cómo en menos de 2 minutos:

Comienza ahora
— es 100% gratis

⚡️ Potencia tu productividad en reuniones
Aprende cómo en menos de 2 minutos:

Comienza ahora
— es 100% gratis

Colabore mejor con su equipo

Exprese su opinión mediante mensajes de pantalla, vídeo y audio. Bubbles es gratuito y ofrece grabaciones ilimitadas con solo hacer clic en un botón.

Empieza gratis

Más de Bubbles

Colabore mejor con su equipo

Exprese su opinión mediante mensajes de pantalla, vídeo y audio. Bubbles es gratuito y ofrece grabaciones ilimitadas con solo hacer clic en un botón.

Empieza gratis

Oye, antes de continuar...

mira esta demostración corta sobre cómo dejar de perder tiempo en el trabajo

Con Bubbles puedes convertir conversaciones en acciones:

  • Usa AI para grabar y resumir reuniones con puntos de acción
  • Elimina reuniones en vivo con videos rápidos y grabaciones de pantalla
Desbloquea 14 días gratis
Continúa en 60 segundos...