All Problems in Computer Science Can Be Solved by Another Layer of Indirection

This is a quote attributed to David Wheeler, an early computer scientist who also invented subroutines among other things. Indirection refers to operating on a higher level of abstraction by implementing indirection such as dynamic dispatch or creating object hierarchies in object oriented programming. However, too many layers of indirection can also cause duplication of lower level code so this popular adage is sometimes suffixed with “except the problem of too many layers off indirection”.