Un effetto collaterale nella programmazione si verifica quando l'esecuzione di una funzione si traduce in qualcos'altro che accade oltre a eseguire rigorosamente la funzione e ricevere l'output standard. Ciò potrebbe significare che il valore di una variabile cambia durante il calcolo in una funzione. I linguaggi di programmazione dichiarativi hanno raramente effetti collaterali; il codice è semplice e non descrive in dettaglio ogni passaggio necessario per completare una funzione. Se gli oggetti che usano sono immutabili, cosa che nella programmazione dichiarativa sono tipicamente, le funzioni si comporteranno allo stesso ogni volta che vengono eseguite, senza avere effetti collaterali in un'altra parte del programma.
Un effetto collaterale spesso cambia lo stato del programma stesso, non solo l'area locale in cui appare. Questo a volte è noto come cambiamento "globale", quando cambia i valori delle variabili al di fuori dell'area locale di quella particolare funzione. Ovviamente, affinché un'applicazione o un programma per computer funzioni, deve consentire la modifica tramite effetti collaterali: gli output a volte devono cambiare. E i database avranno molti effetti collaterali quando i dati cambiano e mutano. Ma ci sono anche vantaggi nella programmazione puramente funzionale.
La programmazione funzionale, che evita gli effetti collaterali, è più facile da leggere e analizzare per gli sviluppatori. Le funzioni pure (che non hanno effetti collaterali) eseguono lo stesso calcolo ogni volta che vengono ripetute, senza variazioni o effetti collaterali. Evitare gli effetti collaterali in un programma lo rende più leggibile e affidabile.