Número 61
28 de xuño de 2023

Os cabos

A casa na que vivo ten cen anos. Fica preto de onde Edison inventou a lámpada incandescente, así que tivo electricidade desde o primeiro día. Cada vez que baixo ao soto, vexo un incrible enredo de cabos eléctricos que se foron instalando durante todos estes anos: electricidade, teléfono, termóstatos, televisión por cabo…

Un home operando un aparello electrónico rodeado de cabos.

Hai moitos cabos que non sei de onde veñen nin onde van ou para que serven. Cando veñen os electricistas engaden novos cabos sen quitar os vellos que atopan polo camiño (só os apartan se estorban) porque non teñen tempo de se poñer a investigar neles, e tampouco lles pago eu para que o fagan.

Teño pensado unhas poucas veces en baixar e facer unha limpeza de cabos, pero sería un labor algo complicado e perigoso: a ver que ocorre se agarro un cabo telefónico de 1947 con illante téxtil e resulta que agora está conectado á rede eléctrica. E, francamente, tampouco estou cualificado para ese traballo.

Para o que si estou cualificado é para facer limpezas no software. Nestes días estou a traballar nun programa bastante antigo que agora está cheo de liñas de código que ninguén sabe exactamente o que fan ou se son necesarias.

Por exemplo, unha das funcións dese programa é analizar un sistema e detectar problemas nel. Como un problema pode ter moitas causas distintas, o programa utiliza unha “cola de prioridades” para gardar a lista ordenada por importancia e despois indicar a causa máis importante.

Ou esa era a idea. Cando mirei o código do detector de problemas, resultou que todo isto que expliquei no parágrafo anterior era irrelevante porque a cola de prioridades que contiña as posibles causas só podía estar baleira ou conter un só elemento: nunca ía ter dous ou máis. Polo tanto, todo o código relacionado coas prioridades era innecesario, e despois de borralo o programa funcionou exactamente igual que antes pero con menos liñas de código, usando menos memoria, e era máis doado de entender e modificar.

Cando mirei no historial do control de versións, descubrín o que pasara. Co pasar do tempo, a lista das causas que o programa podía detectar mudou e simplificouse ata que, un día, xa non era necesario levar a conta das prioridades: abondaba con informar da primeira causa que o programa detectara.

Porén, como o programa era tan grande e vello e tiña cabos eléctricos que non se sabía de onde viñan e onde ían, ningún dos programadores que traballou nel nos últimos anos se decatou diso e todos seguiron mantendo o sistema de prioridades innecesariamente. Ata que cheguei eu, claro, que por algo son eu o heroe desta historia.

O motivo polo que ese código innecesario sobreviviu todo ese tempo non é que os meus compañeiros de traballo sexan parvos ou preguiceiros ou neglixentes. Todo o contrario: son xente moi intelixente, moi detallista e moi concienciuda. O que ocorre é que, cando teñen que traballar neste código, o seu obxectivo non é limpalo, senón engadir unha función ou reparar un erro. Igual que o meu electricista non ten tempo para investigar se os cabos que lle estorban son necesarios, os meus compañeiros teñen unha tarefa que facer e hai que apurar, que despois hai máis.

Non o facemos máis frecuentemente porque moitas veces é difícil xustificar o investimento de tempo, pero é importante facer unha limpeza de cando en vez: botar unha ollada para ver se ese código que tanto nos estorba é necesario. Con sorte podemos simplificado ou eliminalo completamente, e no futuro será máis doado traballar no noso programa.

A ilustración desta Folla foi producida mediante intelixencia artificial.