‘In computer programming, indirection is the ability to reference something using a name, reference, or container instead of the value itself. The most common form of indirection is the act of manipulating a value through its memory address. For example, accessing a variable through the use of a pointer. A stored pointer that exists to provide a reference to an object by double indirection is called an indirection node. In some older computer architectures, indirect words supported a variety of more-or-less complicated addressing modes.
A famous aphorism of David Wheeler goes: All problems in computer science can be solved by another level of indirection; this is often deliberately mis-quoted with “abstraction layer” substituted for “level of indirection”. Kevlin Henney’s corollary to this is, “…except for the problem of too many layers of indirection.”