Background Image
DESARROLLO DE SOFTWARE

Déjelo todo y revise

May 29, 2024 | 4 Minuto(s) de lectura

Los bucles de desarrollo interno y externo

La retroalimentación es fundamental en el desarrollo de software; cuanto antes se dé, mejor. Las herramientas de análisis estático del código inmediatamente escribirán garabatos rojos debajo del código, mientras se escribe, para que el programador sepa que hay un error de sintaxis. (De hecho, mientras escribo esta entrada, mi corrector ortográfico me está subrayando en azul). Las pruebas unitarias, del mismo modo, proporcionan información muy rápida, validando la lógica de cualquier código recién escrito y garantizando que no haya regresiones (que el nuevo código no provoque que las pruebas escritas anteriormente se rompan).

Este rápido bucle de retroalimentación código-construcción-prueba suele denominarse el bucle interno del desarrollo de software. No requiere la intervención de otras personas, y el tiempo de un bucle completo puede ser tan corto como el tiempo que tarda en ejecutarse el análisis estático, que puede ser de sólo unos cientos de milisegundos. Los únicos obstáculos en el bucle interno son la velocidad del compilador o intérprete y la velocidad a la que el desarrollador puede programar.

El bucle externopor el contrario, suele referirse al proceso de despliegue del código en un entorno real y la iteración basada en la integración con el sistema más amplio, las pruebas de aceptación, las pruebas de rendimiento, etc. (aunque diferentes fuentes discrepan sobre qué pasos deben incluirse en el bucle externo). Este bucle es mucho más complejo y, en consecuencia, se tarda mucho más tiempo en proporcionar información al desarrollador. Dependiendo de la velocidad a la que se ejecute su canal de CI / CD, y de si sus pruebas de control de calidad son automatizadas o manuales, podría llevar desde minutos hasta días.

Pero yo propongo que haya un bucle intermedioque a menudo se engloba incorrectamente en el bucle externo: el bucle de revisión del código.

El bucle intermedio

El bucle de desarrollo intermedio implica recibir comentarios de los desarrolladores y otras partes interesadas, ajustar el código en función de esos comentarios y, a continuación, solicitar comentarios adicionales. Es distinto del bucle interno, que es trazado por un único desarrollador en una única base de código en un único entorno, así como del bucle externo, que es trazado por muchos desarrolladores en muchos entornos. La diferencia clave es que es la primera vez que varias partes interesadas examinan el mismo fragmento de código.

Esto suele ocurrir durante la revisión del código, pero la retroalimentación puede darse de muchas formas: programación en parejas, programación en grupo, revisión sincrónica del códigoasí como la tradicional revisión asíncrona del código. Esta última es, en muchos lugares de trabajo, la norma: creas un RP, añades algunos revisores y te vas a hacer otra cosa mientras esperas los comentarios.

Asset - Cartoon Review

Esto suele estar bien, siempre y cuando tengas muchas tareas en las que trabajar y puedas pasar fácilmente de una a otra mientras esperas las revisiones. Y aunque a menudo es así, según mi experiencia, lo contrario ocurre con la misma frecuencia: estás construyendo una función a través de varias bases de código, o en varios pasos, y necesitas revisiones y aprobaciones en cada etapa. En este caso, cada vez que se requiere una revisión, se convierte en un bloqueador.

Los desarrolladores pueden sentirse frustrados esperando revisiones y agrupar varias correcciones en un único PR para reducir el número de revisiones necesarias, o pueden enviar un mensaje directamente a otros desarrolladores para solicitar revisiones. Aquellos a los que se envíe un ping pueden ser sacados de su estado de flujoo incluso sentirse acosados, si se les contacta una y otra vez.

Para todas las partes implicadas, puede ser una experiencia muy frustrante.

Si tienes el poder de hacerlo en tu organización, presiona para que se realicen revisiones síncronas del códigoque reducen en gran medida el tamaño del bucle intermedio, o la sincronizadacomo la programación en parejas o en grupo, que elimina por completo el bucle intermedio. Sin embargo, sé que muchos de los que están leyendo esto no tienen esta opción. Tienes revisiones de código asíncrono y estás atascado con ellas. En ese caso, vamos a intentar sacar lo mejor de una situación poco ideal: ¿qué es lo que hace que la revisión asíncrona sea frustrante?

El problema con la revisión de código asíncrona es que a menudo infla innecesariamente la duración del bucle intermedio.

La revisión de código puede ser un trabajo ingrato. ¿Cuándo fue la última vez que oíste que ascendieran a alguien por ser el revisor más minucioso de un equipo? Además, es fácil esconderse entre la multitud, y si 10 desarrolladores son añadidos como revisores a un PR que sólo necesita 2 aprobaciones, pueden ignorar la solicitud, asumiendo que sus compañeros de equipo se harán cargo. Incluso cuando un desarrollador lo hace un desarrollador revise algo de código, puede que se retrase en hacerlo. Esperar hasta terminar su tarea actual, o hasta después de comer, o incluso hasta después de su próxima reunión, para revisar un RP puede no parecerle un retraso. De hecho, puede parecerle muy rápido. Pero para el desarrollador que espera una revisión para continuar su trabajo, está bloqueado.

La próxima vez usted ponga un RP, usted también necesitará revisiones. Y al igual que tus compañeros, las querrás lo antes posible. Así que recuerda que cuando alguien solicita una revisión del código, lo cortés es Déjalo todo y revisa (DEAR).

Minimice el bucle intermedio, querido

Después de gestionar cualquier incidente de producción activo, lo primero que debe hacer un desarrollador es // TODO de un desarrollador siempre siempre debería ser revisar el código.

Si te acabas de sentar en tu escritorio y estás buscando algo en lo que trabajar, comprobar a qué pull requests has sido asignado debería convertirse en un reflejo.

No empieces esa pequeña corrección de errores, no leas esa próxima entrada del blog (a menos que sea esta), no compruebes tu bandeja de entrada.

Recuerda DEAR y haz lo cortés: Déjalo todo y revisa.

Desarrollo de software

Reflexiones más recientes

Explore las entradas de nuestro blog e inspírese con los líderes de opinión de todas nuestras empresas.
Asset - Image 1 Data Storage in a Concurrent World 
DATOS

Data Storage in a Concurrent World 

Data storage and event ordering in concurrent systems can spark challenges, but there are ways to be prepared.