The term is based on the concept of action at a distance in physics, which may refer to a process that allows objects to interact without a mediator particle such as the gluon.
Software bugs due to action at a distance may arise because a program component is doing something at the wrong time, or affecting something it should not.
A proper design that accurately defines the interface between parts of a program, and that avoids shared states, can largely eliminate problems caused by action at a distance.
Proper design severely limits occurrences of action at a distance, contributing to maintainable programs.
One of the advantages of functional programming is that action at a distance is de-emphasised, sometimes to the point of being impossible to express at all in the source language.