But what about bad abstractions—or perhaps more accurately, what about layers of indirection that masquerade as abstractions? These "abstractions" don't hide any complexity: they often just add a layer whose meaning is derived entirely from the thing it's supposed to be abstracting. Think of a thin wrapper over a function, one that adds no behavior but adds an extra layer to navigate.