L’elettricista era davanti al mio quadro elettrico.
File di interruttori. Nessuno etichettato.
Aveva un pennarello. Lo ha rimesso in tasca.
Gli ho chiesto perché.
“Perché non sono sicuro di cosa fa ognuno. E un’etichetta sbagliata è più pericolosa di nessuna etichetta.”
Il prossimo elettricista si fiderebbe ciecamente.
Se n’è andato. Gli interruttori sono rimasti senza etichetta.
Ci ho pensato a lungo.
Poi ho riconosciuto lo stesso schema ovunque nel software.
La Bugia del 100% di Copertura
L’hai visto. Un codebase con il 100% di copertura dei test. Badge verde nel README. Il tipo di numero citato nelle retrospettive come segno di maturità.
Poi leggi i test.
def test_user_creation():
user = User(name="test")
assert user is not None
Quel test afferma l’esistenza, non il comportamento. Passerebbe anche se la validazione dell’email fosse completamente rotta. Passerebbe se la funzione ingoiasse silenziosamente gli errori. Ma il badge dice 100%.
Il prossimo sviluppatore che tocca quel codice si fiderà. Non scriverà nuovi test perché la copertura è già “completa.” Costruirà sopra fondamenta che non sono mai state solide.
La fiducia è il problema. Non il test. La fiducia.
CI Verde, Falsa Sicurezza
Lo stesso schema si ripresenta nelle pipeline. Una pipeline veloce non è una pipeline corretta.
Test segnati come skip. Test instabili messi in quarantena in una cartella che nessuno monitora. Test di integrazione sostituiti da mock che hanno smesso di riflettere la realtà sei mesi fa. La pipeline finisce in quattro minuti. Nessuno si chiede perché prima ne impiegasse dodici.
Verde significa sicuro. Verde significa si rilascia.
Finché non è più così.
Il fallimento, quando arriva, non sembrerà un fallimento di test. Sembrerà un incidente in produzione. Perché il segnale diceva che andava tutto bene, e tutti ci hanno creduto.
Documentazione Che Una Volta Era Giusta
Terza variante: documentazione che era accurata quando qualcuno l’ha scritta, e da allora mente in silenzio.
Il README dice “esegui make setup.” Il Makefile è stato eliminato in un refactoring diciotto mesi fa. Il diagramma architetturale mostra tre servizi. Ora ce ne sono sette.
I nuovi sviluppatori seguono la documentazione. Passano ore a fare debug di qualcosa che sarebbe ovvio se la documentazione semplicemente non dicesse nulla. Assumono che l’ambiente sia sbagliato. Si incolpano. Non mettono in discussione il documento perché i documenti sono autorevoli.
Una pagina vuota è onesta. Una pagina obsoleta è una trappola.
L’Elettricista Aveva Ragione
Il filo conduttore è la fiducia nel momento del passaggio di consegne.
Quando un segnale dice “sicuro,” la persona successiva smette di indagare. Assume che il lavoro sia stato fatto. Costruisce sopra. L’etichetta sbagliata non si limita a non aiutare: impedisce attivamente il comportamento corretto, che è guardare, interrogarsi, verificare.
Nessun segnale forza l’attenzione. Un segnale falso la rimuove esattamente nel momento sbagliato.
Questo non è un argomento sulla metodologia di copertura. Non riguarda se il 100% sia l’obiettivo giusto. Riguarda la disciplina di creare solo segnali che puoi effettivamente difendere. Se il segnale non significa quello che le persone pensano significhi, sta lavorando contro di te.
Cosa Fare
La soluzione non è più strumenti. La soluzione è onestà su cosa misurano effettivamente i tuoi segnali.
- Se il tuo numero di copertura include test superficiali, privi di comportamento: dillo. Aggiungi un commento. Aggiungi una sezione alla tua guida per i contributori.
- Se la tua CI salta il livello di integrazione: rendilo visibile. Un passaggio fallito è più onesto di uno saltato. Un passaggio saltato sembra un passaggio superato da lontano.
- Se la tua documentazione è obsoleta: elimina le parti sbagliate. Un vuoto è un invito a investigare. Il contenuto sbagliato è un vicolo cieco in cui qualcun altro camminerà.
Segna le cose come provvisorie. Scrivi OBSOLETO in cima ai documenti che non puoi mantenere in questo momento. Aggiungi un commento sopra un test superficiale: # solo smoke test -- non valida il comportamento. Queste non sono ammissioni di fallimento. Sono atti di rispetto verso chiunque legga questo dopo di te.
Il silenzio è più difficile da fraintendere di un’etichetta sbagliata.
Il quadro ha ancora gli interruttori senza etichetta. Non perché l’elettricista fosse pigro. Perché rispettava quello che la persona successiva avrebbe fatto con quella informazione.
Si fidava dell’assenza di un’etichetta più di quanto si fidasse di un’ipotesi.
Tieni i tuoi segnali allo stesso standard. Se non puoi essere sicuro, lascia in bianco. Il prossimo sviluppatore merita un punto interrogativo onesto, non una risposta falsa.
