The fundamental theorem of software engineering (FTSE) is a term originated by Andrew Koenig to describe a remark by Butler Lampson attributed to David J. Wheeler:
"We can solve any problem by introducing an extra level of indirection."
The theorem is often expanded by the humorous clause "…except for the problem of too many levels of indirection," referring to the fact that too many abstractions may create intrinsic complexity issues of their own.
It's a funny aphorism at best but I don't think software would work nearly as well if there were more than a grain of truth to it.
Think of all the layers of abstraction that have led to this moment, you reading this comment, me writing it: the hardware, the operating systems, libraries, run-times, the network... it's immense. And it's a wonder that it works so well let alone at all.
I like this quote but I think it applies to weak abstractions; ie: not abstractions at all but, as they say, indirection and obfuscation. Using the word "abstraction" has done a lot of harm to efforts to convey the importance and utility of various formal methods from property testing to proof automation. A solid abstraction has fundamental laws and properties. It aids in mastering complexity rather than hinders.
> "We can solve any problem by introducing an extra level of indirection."
It's worth keeping in mind that this isn't a fundamental law of the Universe. Not all abstraction layers are equally good. Just because it's possible to do a bad job at something doesn't mean we can't try and do a good job.
Yes, written by someone who has never inherited a code-base hundreds of juniors patched over 12 years. At that point, you launch a separate division, slowly transfer functional support, and jettison the old structure after a year.