
The purpose of abstraction is not to be vague, but to create a new semantic level, in which one can be absolutely precise.
Edsger W. Dijkstra, computer scientist
Poem: Abstraction Towers
Abstraction on abstraction, Put some more on top of that; Abstraction's the attraction, Till it crumbles down to scrap.
I don't like abstractions; I feel they blur your vision and make you weaker. In almost all scenarios I could think of.
Take for example, on the web. I like using HTML, CSS and JavaScript without any frameworks or web builders. I do this and I'm happy I don't have to deal with all the crazy terminology that would otherwise not be known like useEffect() or bundling or any of the other crap1. They distract you from the goal at hand (i.e. why you decided to code the website or web app in the first place) and make you less knowledgeable about the web platform and its values.
But with all this avoidance, I still use abstractions! I use a browser to run my code, which is a complex layer of abstraction from the operating system. Without it, I would have to write a native program in another programming language like C or C++ to get the same result, but it would take much longer (and would probably be full of bugs). But even if I do that, using C or C++ is abstraction over the bits and bytes that are run on the computer.
And guess what? That's still an abstraction over the computer hardware. And (you may have guessed it by now) that is still an abstraction over the transistors and integrated circuits used to build the computer hardware. You see where I'm going with this?
So, the layers are infinite! We can't escape it. And that's why we have to allow people to choose their abstractions, because we're all going to have different abstractions. And that's okay.
Mind you this won't stop me from criticizing bloated frameworks and web builders (like React and WordPress). I can do that because it's true 🤪. I'm just not critical of the people using the technology2.
I don't think they are dumb or lazy. I think they are that way because it works for them and they see reason to make those decisions. Who am I to criticize the anybody's taste?
So yeah, call me a hypocrite. I don't think there is any way to escape this. And I don't care to do so anytime soon.
In conclusion, choose your abstractions wisely. Or don't. It's up to you3.
-
Crap like hydration or minification or client-side rendering or rehydration or middleware or hot module reloading or virtual DOM or server actions or single-page application or CSS-in-JS or tree shaking or micro-frontend etc. There's many more, sadly. ↩
-
On the other hand, the creators of the frameworks and web builders know what they are doing, because they are usually more tech-savvy. They're modern-day Pharisees and indirect gatekeepers. ↩
-
You were always going to do whatever you wanted anyway 🤷♂️. ↩