Obligatory reference to the Law of Leaky Abstractions:
https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-a...
Layers work to the degree that they are trivial, but we really only need them when they are non-trivial.
https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-a...
Layers work to the degree that they are trivial, but we really only need them when they are non-trivial.
There are good abstractions and bad ones, all with varying degrees of leakiness and sharp corners. The good ones definitionally prevent you from needing to understand much about what they're abstracting.
Small leaks in an abstraction are survivable. Small leaks in many layers of abstraction are ruinous.