18/12/2025

Quando pensiamo alla qualità del software, la mente va subito a test, performance, architettura.
Eppure, un’enorme parte degli attriti nei team nasce da una cosa molto più banale: 👉 il modo in cui scriviamo il codice.
Non è glamour come parlare di distributed systems.
Non è affascinante come il machine learning.
Ma è fondamentale quanto la scelta del linguaggio o del framework.
E la cosa sorprendente? Il motivo non è “avere il codice bello”.
È qualcosa di molto più profondo.
Siamo nel 1978.
UNIX sta esplodendo nei Bell Labs. Il C è giovane, flessibile… e terribilmente permissivo.
I sistemi informatici cominciano a controllare:
Un bug non è un fastidio: è un potenziale incidente.
E qui arriva Stephen Johnson. Non voleva “migliorare lo stile”.
Voleva prevenire bug prima che diventassero problemi reali.
Il primo lint analizzava il codice in cerca di:
Era un early warning system. Non un’estetica. Una cintura di sicurezza.
Negli anni ’90–2000, i team crescono.
Internet esplode. Git arriva e improvvisamente più persone lavorano sugli stessi file ogni giorno.
Il problema non è solo il codice disordinato: è che le differenze stilistiche rallentano il cervello umano.
Ci sono studi cognitivi che dimostrano che:
👉 il nostro cervello riconosce pattern visivi, non solo testo
👉 un linguaggio visuale incoerente aumenta lo sforzo cognitivo
👉 l’assenza di regole chiare genera attrito nei team
Il formatting automatico nasce per un motivo molto più pragmatico di quanto crediamo:💡 ridurre la fatica mentale.
Una PR da leggere diventa più leggera.
Un file scritto da un collega diventa familiare.
La revisione si concentra sulla logica, non sulle parentesi.
Per questo i team che hanno un formatter ben configurato sono più veloci del 20–40%.
Il codice che scrivi non è “tuo”. È un oggetto condiviso, come una lingua parlata dal team.
E come tutte le lingue:
La standardizzazione non toglie creatività. La libera.
Ti permette di concentrare le energie sul problema reale, non sulla forma.
Ecco alcuni segnali tipici di un team senza regole di formatting/linting:
❌ PR piene di cambiamenti inutili
❌ discussioni infinite su tab/spazi
❌ warning ignorati “perché tanto funziona”
❌ conflitti di merge inutili
❌ standard diversi tra membri del team
❌ developer che si sentono giudicati sullo stile
Ogni singolo problema costa pochi secondi.
Ma in un team, quei secondi moltiplicati per mesi diventano:
⚠️ ritardi
⚠️ tensioni
⚠️ drop di qualità
⚠️ perdita di focus
Automatizzare vuol dire eliminare attrito invisibile.
Il grande salto degli ultimi anni non è concettuale, è tecnologico.
Biome, Ruff, Rome, Lefthook, Trunk… tool scritti in Rust o Go, progettati per essere centinaia di volte più veloci.
La velocità cambia tutto.
Se un controllo richiede millisecondi, puoi eseguirlo:
I linter moderni non si limitano a trovare errori banali.
Analizzano:
È come avere un reviewer senior che controlla automaticamente i punti deboli.
Il formatting, invece, lavora a un livello “visivo”:
Due ruoli diversi, un obiettivo comune: rendere il codice più prevedibile.
Automatizzare non significa “bloccare gli sviluppatori”.
Significa:
Git Hooks = protezione locale
CI = protezione globale
Questa architettura riduce i costi cognitivi e organizza il lavoro su due livelli:
💻 developer experience
⚙️ team reliability
Non è questione di “codice bello”.
È comunicazione, perché tutti leggono il codice allo stesso modo.
È velocità, perché sparisce il tempo perso su dettagli di stile.
È collaborazione, perché il team lavora come un’unica mente.
È progettualità, perché un codice coerente è più facile da estendere e mantenere.
I team migliori non sono quelli con i migliori sviluppatori.
Sono quelli che riducono al minimo gli attriti invisibili.