Il registro

Venti guasti veri, e cosa ho fatto ogni volta

Ogni sistema prima o poi si rompe. La domanda non è se succederà, ma cosa succede dopo — e questa è la risposta più onesta che posso darti: l’elenco completo, compresi i casi in cui l’errore l’avevo fatto io.

Per ogni caso: cosa succedeva, come me ne sono accorto, come l’ho sistemato. I nomi dei clienti e i dettagli riservati non ci sono: restano il guasto e la regola che ne è uscita.

01 Un sistema è rimasto fermo un giorno intero, e nessun allarme è suonato

Cosa succedevaDei programmi che dovevano lavorare da soli avevano smesso di farlo. Tutto sembrava acceso e in ordine: nessun errore da nessuna parte.

Come me ne sono accortoUn documento era in attesa da ventiquattr’ore in una coda che di solito si svuota in pochi minuti.

Come l’ho risolto

C’era un controllo automatico che ogni cinque minuti rimetteva a zero l’orologio di tutti i lavori programmati: nessuno arrivava mai al proprio turno. L’ho fatto intervenire solo quando qualcosa cambia davvero. Poi ho aggiunto un allarme che suona se un lavoro non parte da troppo tempo — prima il silenzio veniva scambiato per normalità.

02 Una procedura automatica falliva ogni notte, e tutte le verifiche dicevano che funzionava

Cosa succedevaUn’operazione notturna non andava a buon fine da giorni, e nessuno se ne era accorto.

Come me ne sono accortoHo smesso di provarla a mano e sono andato a leggere cos’era successo davvero nelle esecuzioni notturne.

Come l’ho risolto

Provandola io usavo strumenti diversi da quelli che il computer usa quando lavora da solo: funzionava per me e falliva per lui. Ora la prova si fa nelle stesse condizioni in cui il lavoro gira davvero, e quella differenza non si può più nascondere.

03 Un controllo segnalava centoquarantadue errori. Non ne esisteva nemmeno uno

Cosa succedevaUno strumento di verifica dichiarava rotti centoquarantadue collegamenti, tutti concentrati in cinque documenti.

Come me ne sono accortoErano troppo uguali fra loro. Un guasto vero è disordinato; quello era regolare.

Come l’ho risolto

Prima di toccare qualsiasi cosa ho aperto tre casi a campione, e stavano benissimo: sbagliava lo strumento, non i documenti. Se avessi lanciato la correzione automatica che stavo per fare, li avrei rotti io tutti e centoquarantadue.

04 Novanta documenti dichiarati mancanti. Erano tutti al loro posto

Cosa succedevaUn controllo periodico segnalava come irreperibili decine di documenti collegati fra loro.

Come me ne sono accortoHo cercato a mano il primo della lista e l’ho trovato in due secondi, nella cartella giusta.

Come l’ho risolto

Lo strumento, per sapere quali documenti esistevano, ne guardava un solo tipo: tutti gli altri risultavano assenti per definizione. Gli ho fatto guardare tutto. Il tempo perso non è stato quello della riparazione: erano tre settimane in cui avevo costruito ragionamenti su un problema che non c’era.

05 Quattro controlli dicevano che il sito funzionava. Il sito era completamente fermo

Cosa succedevaDopo una pubblicazione, la pagina si vedeva tutta e non rispondeva a niente: nessun pulsante faceva nulla.

Come me ne sono accortoProvandola con le mani, non guardando i controlli automatici — che erano tutti verdi.

Come l’ho risolto

I controlli verificavano che una risposta arrivasse e fosse della lunghezza giusta. Nessuno verificava che fosse la stessa cosa che era partita: qualcosa, lungo la strada, la stava riscrivendo. Ora il controllo confronta ciò che parte con ciò che arriva. Una risposta positiva dice che è arrivato qualcosa, non che è arrivato quello che avevi mandato.

06 L’applicazione aveva un errore, e il messaggio che lo spiegava era nascosto proprio dall’errore

Cosa succedevaQuando qualcosa andava storto, la schermata diventava muta: nessuna spiegazione, nessun avviso.

Come me ne sono accortoCercando perché non comparisse mai il messaggio d’errore che avevo scritto io.

Come l’ho risolto

Il messaggio era scritto dentro il riquadro che, in caso di errore, veniva nascosto. L’ho spostato fuori. È un errore che si commette senza accorgersene ogni volta che si nasconde un blocco e non si rilegge cosa c’era scritto dentro.

07 Una schermata perfettamente in ordine che non salvava niente

Cosa succedevaPer venti minuti l’applicazione ha mostrato un modulo completo e credibile — campi, pulsante, tutto — che non registrava niente di quello che ci si scriveva.

Come me ne sono accortoHo provato a salvare e sono andato a controllare se il dato fosse arrivato. Non c’era.

Come l’ho risolto

Quel modulo era visibile per impostazione predefinita, e a nasconderlo doveva pensarci una parte del programma che quel giorno non partiva. Ho invertito la regola: adesso, se qualcosa non parte, la schermata lo dice invece di restare in piedi facendo finta. Quello che si vede quando tutto il resto si è fermato non è un dettaglio: è il comportamento nel giorno peggiore.

08 Tre verifiche superate, e il comando che tocca i dati non partiva nemmeno

Cosa succedevaTutti i controlli automatici erano verdi, ma l’operazione che serviva davvero — quella che scrive i dati — si fermava subito con un errore.

Come me ne sono accortoLanciandola. Nessuno dei tre controlli la copriva.

Come l’ho risolto

Le tre verifiche sembravano indipendenti e in realtà poggiavano tutte sullo stesso meccanismo: erano una sola prova ripetuta tre volte. Ne ho aggiunta una che passa dalla strada che nessuna delle altre attraversava. Contare tre spie verdi come tre prove è un errore di conteggio, se tutte e tre poggiano sullo stesso assunto.

09 Un rapporto diceva «tredici su ventisette». Il ventisette era sbagliato

Cosa succedevaUn documento di avanzamento riportava una percentuale di completamento errata da settimane, e nessuno l’aveva notata.

Come me ne sono accortoHo provato a ricalcolare il totale invece di rileggerlo.

Come l’ho risolto

Metà del rapporto si calcolava da sola, l’altra metà era scritta a mano nel testo e nessuno la rileggeva più. Ora si calcolano entrambe dalla stessa fonte. Automatizzare metà di un conto è peggio che lasciarlo tutto a mano: la metà automatica dà all’altra un’aria di controllata che non le spetta.

10 Ho letto le impostazioni dei salvataggi. Erano quelle di un sistema spento da mesi

Cosa succedevaDovevo sapere se un file nuovo sarebbe finito nelle copie di sicurezza. Ho letto la configurazione e mi sono risposto di sì.

Come me ne sono accortoPrima di fidarmi sono andato a controllare quale programma girasse davvero ogni notte. Non era quello.

Come l’ho risolto

Ho corretto la configurazione giusta, quella del sistema attivo. E ho preso l’abitudine di partire sempre da lì: un programma disattivato resta perfettamente leggibile, e la sua configurazione sembra la configurazione.

11 Un documento descriveva un formato che nessuno aveva mai prodotto

Cosa succedevaC’era una specifica scritta con cura su come esportare i dati. Il giorno in cui l’esportazione è stata fatta davvero, la specifica era sbagliata in tre punti.

Come me ne sono accortoProducendo l’esportazione per la prima volta e confrontandola riga per riga con quello che il documento prometteva.

Come l’ho risolto

Adesso, quando descrivo un formato, lo produco subito almeno una volta — anche vuoto. Un documento che descrive una cosa mai prodotta è un’ipotesi che invecchia con l’aria di una decisione.

12 Due programmi usavano lo stesso archivio, e uno solo sapeva come non rovinarlo

Cosa succedevaIl primo programma aveva un avvertimento chiaro su una precauzione da rispettare. Il secondo, scritto mesi dopo, non ne sapeva nulla — e stava per togliere a entrambi la possibilità di scrivere.

Come me ne sono accortoPrima di lanciarlo sono andato a vedere chi altro toccava quell’archivio.

Come l’ho risolto

Ho spostato la regola sull’archivio, invece di lasciarla dentro il programma che l’aveva imparata per primo, e l’ho resa obbligatoria per chiunque entri. Se una regola resta chiusa dentro un solo programma, il prossimo la impara rompendosi — e quel prossimo non è ancora stato scritto.

13 Una funzione nuova non faceva niente. Nessun errore, nessun messaggio

Cosa succedevaUn tipo di operazione appena aggiunto veniva semplicemente ignorato: nessun avviso, nessuna traccia, come se il comando non fosse mai stato dato.

Come me ne sono accortoL’effetto atteso non arrivava, e nei registri non c’era niente da leggere.

Come l’ho risolto

L’elenco delle operazioni ammesse era scritto in due punti del sistema, e ne avevo aggiornato uno solo: il secondo scartava in silenzio ciò che non riconosceva. Ora l’elenco è uno solo, e se le due parti divergono un controllo lo segnala. Ogni lista duplicata è un guasto che aspetta.

14 Un programma non trovava uno strumento che dalla mia tastiera funzionava benissimo

Cosa succedevaUn’operazione automatica falliva sempre; la stessa identica operazione, lanciata da me, riusciva ogni volta.

Come me ne sono accortoConfrontando cosa vedeva il computer quando lavorava da solo con cosa vedevo io.

Come l’ho risolto

Quando lavora da solo, il computer ha a disposizione molto meno di quando lo guido io: strumenti che per me sono a portata di mano, per lui non esistono. Ora ogni strumento esterno è indicato per intero, senza dare per scontato che si trovi.

15 Ho concesso un permesso, e non è cambiato niente

Cosa succedevaUna funzione veniva bloccata. Ho aggiunto l’autorizzazione che mancava, più volte, e ha continuato a restare bloccata.

Come me ne sono accortoDopo il terzo tentativo, invece di aggiungere permessi ho letto i divieti.

Come l’ho risolto

In quel sistema un divieto vince sempre su un’autorizzazione, per quanto specifica. Non serviva concedere di più: serviva restringere il divieto, dicendo con precisione cosa resta protetto. Un minuto di lavoro, dopo un’ora passata a girare dalla parte sbagliata.

16 Un comando lanciato con l’utenza sbagliata avrebbe bloccato tutto qualche ora dopo

Cosa succedevaStavo per eseguire un’operazione con privilegi più alti del necessario. Sarebbe andata a buon fine, e avrebbe lasciato dietro di sé file che il servizio vero non avrebbe più potuto toccare.

Come me ne sono accortoIl guasto non sarebbe arrivato subito, ma ore dopo, senza che nel frattempo nessuno avesse fatto niente. Me lo sono chiesto prima di lanciarlo.

Come l’ho risolto

Ho messo il controllo al confine dell’operazione: adesso, se viene lanciata con l’identità sbagliata, si rifiuta di partire e spiega perché. Non è più una cosa da ricordarsi.

17 Il cruscotto diceva «dati vecchi di due giorni» su dati di cinque minuti prima

Cosa succedevaUn pannello segnalava da settimane un allarme di dati non aggiornati che non aveva alcun fondamento.

Come me ne sono accortoHo confrontato l’orario che il pannello mostrava con quello scritto nel file di origine. Non coincidevano.

Come l’ho risolto

La data veniva letta in un formato diverso da quello atteso e finiva per risultare vuota — quindi sempre vecchia. Nessun errore, solo un valore mancante. Ora il caso è gestito: se una data non si riesce a leggere, il sistema lo dice invece di fingere di averla letta.

18 Le colonne di una tabella erano tutte spostate di uno, ma solo in alcune righe

Cosa succedevaIn un elenco, alcune righe mostravano l’informazione sbagliata in ogni colonna: la data al posto dello stato, lo stato al posto della città.

Come me ne sono accortoLe righe sbagliate erano tutte e sole quelle con un campo non compilato.

Come l’ho risolto

C’era una pulizia automatica che eliminava i campi vuoti — compresi quelli in mezzo, facendo scalare tutti gli altri di una posizione. Ora si tolgono solo quelli agli estremi, che sono gli unici da togliere.

19 Un anno dopo ho rifatto lo stesso errore. Stavolta l’ha trovato una prova automatica

Cosa succedevaCostruendo uno strumento nuovo ho ripetuto esattamente lo sbaglio del caso numero 3, quello che credevo di aver imparato.

Come me ne sono accortoUna prova automatica scritta un’ora prima è diventata rossa all’istante, prima che quel codice uscisse dal mio computer.

Come l’ho risolto

Ho corretto lo strumento, non la prova. E ne ho ricavato la regola che uso ancora: una lezione imparata non resta imparata. O diventa una prova automatica, o torna dentro il primo lavoro nuovo che fai.

20 Un salvataggio che sembrava fatto e non c’era

Cosa succedevaLe copie di sicurezza risultavano completate regolarmente. Alcune cartelle, dentro, erano vuote.

Come me ne sono accortoHo provato a recuperare un file, invece di limitarmi a leggere il resoconto del salvataggio.

Come l’ho risolto

Quei file non erano davvero sul disco: erano segnaposto che rimandavano a una copia altrove, e venivano salvati vuoti senza che niente segnalasse un problema. Ora vengono resi disponibili prima del salvataggio, e il controllo verifica il contenuto, non l’esito dell’operazione. Un salvataggio che non hai mai provato a recuperare è una speranza, non una copia.

Se una di queste ti è già successa, o temi che ti succeda, è esattamente di questo che parliamo nei primi venti minuti.

Parliamone