Un antipattern è qualsiasi attività che si ripete nonostante sia controproducente. Sebbene il termine abbia avuto origine e abbia acquisito un uso diffuso nel campo della programmazione informatica, può applicarsi a qualsiasi forma di comportamento di routine. Identificare e descrivere gli antipattern può migliorare la razionalità complessiva commettendo errori comuni nel ragionamento più facili da individuare. In questo senso, l’antimodello sta alla razionalità generale come l’errore sta alla logica deduttiva.
Affinché un batch di codice o un insieme di comportamenti costituisca un antipattern, deve verificarsi ripetutamente. Deve anche, per qualche osservatore, essere contrapposto a uno schema noto che quasi certamente funzionerebbe meglio. Errori isolati non possono quindi essere antipattern, e nemmeno i tentativi falliti di risolvere un problema per il quale non esiste ancora una soluzione. Questa definizione lascia ancora spazio a una vasta gamma di processi difettosi.
Anche all’interno della categoria originale della progettazione del software, esistono molti tipi diversi di antipattern. Alcuni comportano errori nell’anticipare le reazioni degli utenti. “Interface bloat” e “Creeping Featuritis” – a quasi tutti gli antipattern sono stati dati nomi carini – si riferiscono a un programma con un’interfaccia utente così complicata da diventare ingestibile.
Altri antipattern comportano errori di programmazione tipici. “Programmazione copia e incolla” e “Programmazione Cargo Cult” descrivono situazioni in cui i programmatori si affidano troppo a materiale preesistente invece di adattare il loro codice al programma che stanno attualmente sviluppando. “God Class” è un insieme di oggetti all’interno di un programma che sono diventati troppo potenti; l’intera cosa è vulnerabile perché tutto si basa su questi elementi.
Molti antipattern sono stati individuati anche all’interno del mondo aziendale, in particolare come contesto per lo sviluppo del software. “Specify Nothing” e “Vietnam War” comportano errori di chiarezza nelle istruzioni della direzione ai propri dipendenti. “We Are Idiots” implica il presupposto che i clienti, e non i programmatori, debbano prendere ogni decisione su come viene sviluppato un particolare articolo.
Altri antipattern possono applicarsi a molti tipi di sociologia organizzativa. Il “pensiero di gruppo” si verifica ogni volta che un insieme di persone è in grado di sostenere un’illusione collettiva isolandosi da input esterni. Una “marcia della morte” si verifica quando tutti coloro che lavorano su un particolare progetto sanno che il fallimento è inevitabile ma non comunicano o non possono comunicare queste informazioni a un leader potente. “Se non è rotto, non aggiustarlo” è un pezzo di saggezza convenzionale che può essere un antipattern in contesti in cui un’eventuale rottura sarebbe inaccettabile.