Batalletes d’un enginyer informàtic del Segle XX

Porto més de 40 anys en el negoci de l’enginyeria informàtica i mai no he estat tan feliç com quan programava, és a dir, escrivia codi. Crec que aquesta frase és compartida per molts dels que ens dediquem a això i hem tingut la fortuna d’anar escalant en els diferents rols d’aquest sector.

Vaig començar al 1986, quan ja enrere quedaven aquells herois de les targetes perforades i les cintes. Eren temps en que encara escrivíem el codi en un paper, però ja no vestíem bata blanca.

Era una època en que l’error era un error i te’l recordaven a la mínima ocasió. No era un “bug” concebut com part del procés de maduració, com si els programes s’haguessin d’acabar de fer al sol.

Actualment el nostre sector és excessivament tolerant amb l’error i això ha anat empitjorant a mida que han anat avançant els llenguatges de programació i els seus entorns.

El “copy/paste”, el “debug”, “l’autocomplete” o “l’intellisense” i les IA han anat conduint a una sistemàtica en que es construeix assumint l’errada, pensant poc, fent desenvolupament a base d’assaig i error, abandonant l’algorítmica pròpia i confiant a cegues en la reutilització.

Per mi, un dels estímuls de programar era aconseguir zero errors en el primer intent, com un “hole in one”. Era certament un mite, però perseguir aquesta fita em permetia gaudir de la concentració que suposava la programació. Tot al meu voltant desapareixia durant hores, dies i, fins i tot, nits. Si quan feia el “run” el resultat no era l’esperat, ja era un error perquè hauria d’haver funcionat a la primera.

L’altre plaer relacionat amb la programació era diagnosticar. Antigament, calia actuar un xic com el Dr. House. Com a partir de certs fets i proposicions podíem ser capaços de diagnosticar la causa d’una incidència i corregir-la. Vull recordar que no existia la opció de “debug”, ni el control remot. Ho dic pels programadors més joves, en aquella època posàvem “xivatos” en el codi per comprovar continguts de les variables, que, a més, havies de mirar d’estalviar per no ocupar massa memòria.

Reconèixer un error era una vergonya perquè quedaves molt assenyalat. A més, no et podies amagar.

Refer una versió i fer-la arribar als teus clients era tot menys immediat. Estava lluny això de fer un “push” a la branca master. L’impacte per remuntar un paquet d’instal·lació i fer-lo arribar als clients era un trajecte que podia durar una setmana.

I es que estem parlant de l’època abans d’Internet. Cal que sabeu, programadors novells, que hi havia informàtics abans d’internet i no hi havia “github”, ni codi obert, ni IA, ni correu electrònic.

Aquests joves programadors es preguntaran com ens ho fèiem al segle XX per fer les entregues a client. Doncs sapigueu que preparàvem una imatge màster per gravar en uns disquets. Muntàvem màsters de fins a 5 disquets de 5 ¼” o de 3 ½”. Els de bata blanca havien utilitzat els de 8” que jo ja vaig veure de resquitllada. Amb el temps ens vàrem proveir d’una màquina duplicadora que ens permetia automatitzar les còpies. Això ja era un luxe perquè abans es feia a mà. Preparàvem el full d’instal·lació, els sobres i les etiquetes per cada client. En el nostre cas, podíem tenir prop de 1000 clients segons l’aplicació.

S’avisava a correus i es feia l’entrega dels sobres que calia enviar. No hi havia altres medis i correus funcionava molt bé.

Segons si l’havies “liat molt parda”, pagaves servei urgent que podia trigar 2 dies en arribar arreu de l’Estat.

Ara, programador novell, imagina’t fer tu la “cagada” perquè no has provat prou bé un algorisme, quan ja s’han replicat 3.000 disquets: Només per fer les còpies t’hi has passat 2 dies, has pagat (en pessetes) tots els enviaments i que, per acabar-ho d’adobar, qui t’ho detecta és un client de les Illes Canàries.

Cada “bug” i el seu “hotfix” el tenies gravat a la memòria de tothom la primera vegada que n’eres el causant i si la tornaves a “cagar” passaves a millor vida.

Sóc de la generació que va superar l’efecte 2000! No cal dir res més… Tot havia de funcionar a la primera quan va canviar el segle. No podies esperar al següent canvi de segle per fer-ho millor.

Ara, m’explicava un enginyer, com és la vida del programador avui: ha d’implementar una API a partir d’un PDF que li han fet arribar; Li fa mandra teclejar-ho i li passa a la IA per tal que li parsegi el document i li creï un DTO. Com que hi ha una altra classe molt similar documentada però no té clar si és igual, li demana a la IA que li digui les diferències i troba que li mancaven dos camps (que segurament qui va documentar l’API se’ls havia deixat). Com que el PDF talla la classe en dues pàgines, li demana a la IA que afegeixi els camps de la segona pàgina al DTO inicial i que li implementi un seguit d’inicialitzacions i conversions.

Amb tanta IA pel mig, una feina que representava de 1 hora, ara es pot fer en 5 minuts mal comptats.

Però ara cal valorar si aquesta acceleració de la productivitat no és inversament proporcional a la robustesa.

Abans, hi havia múltiples sistemes operatius: OASIS, THEOS, MS-DOS, XENIX, UNIX ATT, UNIX SCO, AIX… Alguns fabricants d’aplicacions ens creàvem llenguatges interpretats amb “runtimes” per plataforma i així minimitzar  el cost de programació i de proves. Per això es van inventar els “frameworks”: anivellar a tots els programadors per tal que tot es fes de la mateixa manera i tothom pogués mantenir el codi. No és molt diferent del que passa ara amb les App, les Webapp i els frameworks per disposar solucions crossplatform, però potser també ja ha quedat desfasat mentre estic redactant aquestes reflexions.

No sé si aquest joves programadors d’avui gaudeixen tant com vaig gaudir jo.

Nosaltres vàrem desenvolupar compiladors, “runtimes” multi-sistema operatiu o generadors de codi. Vàrem crear llenguatges de 4G i som els inventors dels frameworks. Vàrem aprendre a passar de la codificació en paper al disseny UML i diagrames estàtics de classes. Vàrem inventar els patrons de disseny i vàrem viure les transicions entre aplicacions de servidor, aplicacions desktop, aplicacions client-servidor i de nou cap el cloud i de nou cap al mòbil.

D’alguna manera que encara desconec, vàrem ensenyar a les IA a deixar-vos sense feina en breu.