Un venerdì pomeriggio di un paio di anni fa mi sono trovato a guardare per la terza volta la stessa cartella Excel, cercando di capire perché due colonne che dovevano coincidere non coincidevano. Succedeva ogni mese, più o meno sempre alla stessa persona dell'ufficio acquisti: scaricare un estratto da un gestionale aziendale, incrociarlo a mano con un file di lavoro, e segnare in giallo le righe sospette. Due giorni buoni, ogni volta. A volte tre.
Il problema non era la complessità del controllo in sé. Erano controlli abbastanza semplici, in fondo: valori che dovevano corrispondere, codici che dovevano esistere in entrambi i file, date che non potevano essere nel futuro. La fatica era tutta nella ripetitività e nella distrazione che ne derivava. Dopo la quinta colonna da controllare a occhio, capita di perdere concentrazione, ed è proprio lì che si nascondono gli errori peggiori.
Ho iniziato a scrivere uno script Python quasi per curiosità, nei ritagli di tempo. L'idea era semplice: automatizzare i controlli più meccanici e lasciare alle persone solo i casi ambigui, quelli che richiedono davvero un giudizio umano. Con tkinter ho messo su un'interfaccia minimale, giusto il necessario per caricare i due file e vedere un riepilogo delle anomalie.
La parte interessante, come spesso succede, non è stata scrivere il codice ma capire davvero le regole. Un controllo che sembrava banale su carta ("il valore X deve essere maggiore di zero") si è rivelato pieno di eccezioni non scritte da nessuna parte, che esistevano solo nella testa di chi faceva quel lavoro da anni. Ho passato più tempo a fare domande che a scrivere righe di codice, e va bene così: è normale, quando automatizzi qualcosa che prima veniva fatto a mano, scoprire che le regole reali sono più complicate di come te le hanno raccontate.
A un certo punto ho provato ad aggiungere un sistema di aggiornamento automatico, pensando di appoggiarmi a uno spazio condiviso già esistente in azienda. Ho perso più di una giornata a inseguire errori 403 che non avevano alcun senso apparente, finché non ho capito che il problema era un'autenticazione pensata per tutt'altro scopo. Alla fine ho mollato quella strada e sono tornato a una distribuzione più semplice, in cartella compilata: meno elegante, ma affidabile, e soprattutto qualcosa che potevo capire fino in fondo se qualcosa si fosse rotto.
Oggi quello strumento fa in pochi minuti quello che prima richiedeva due giorni di lavoro manuale, e soprattutto lo fa in modo costante: non si stanca, non perde concentrazione alla quinta colonna. Le persone che lo usano si occupano solo delle anomalie vere, quelle che effettivamente richiedono di capire cosa sia successo.
Se c'è una cosa che mi porto a casa da questo progetto è che il codice più utile spesso non è quello tecnicamente più sofisticato, ma quello che nasce da un problema visto da vicino, magari guardando qualcuno lavorare e chiedendosi: "ma questo non si potrebbe automatizzare?". Le soluzioni difficili da scrivere in genere sono quelle in cui non hai capito bene il problema.