Un antipattern è una soluzione usata frequentemente ma in gran parte inefficace a un problema. Il termine era originariamente usato per riferirsi a uno schema andato storto. Proprio come un modello praticabile descrive il percorso da un problema a una soluzione valida, un antipattern descrive il percorso da un problema a una soluzione scadente. Inoltre, aggiungendo più difficoltà a quelle originariamente esistenti, un antipattern potrebbe lasciarti in una posizione peggiore rispetto a prima di iniziare. Diversi scrittori hanno pubblicato libri o articoli su come riconoscere ed evitare di adottare un antipattern, specialmente nello sviluppo della programmazione per computer.
Il termine modello di miglioramento (a migliorare significa migliorare, e soprattutto migliorare una brutta situazione) è stato coniato per uno schema che descrive come passare da una cattiva soluzione a una migliore.