I read an interesting article yesterday about Backbone.js vs. React that I’ve linked below.
https://backbonenotbad.hyperclay.com/
Now, obviously given the name of the blog, it’s not exactly the most unbiased source. However, I really resonated with the core message of the article and find it to be a problem more than ever with the advent of the "vibe coding" era. It begs the question: Are we becoming framework developers or are we truly JavaScript developers anymore?
My experience with Backbone.js is not extensive. I had to mess with it some at my last job during a legacy code rewrite. It was vanilla JS, PHP, and Backbone.js, and at the time I thought nothing of it other than, wow, this is a bit verbose. So, it tickled me to see it brought up in the article.
However, as I’ve been diving more deeply into foundational JavaScript again, I’ve been viewing it in a different lens in a post-framework world. I find myself wondering, is React even JavaScript anymore? I fondly remember Kyle Simpson of You Don’t Know JS disagreeing with the syntactic sugar of the Class keyword, and I can’t help but wonder what he thinks of React now. The level of abstraction is just so profound.
This is not to say that React is a bad thing. I think it’s great (though I’m a Vue-lover at heart!) and I’m happy that many developers thrive in it. It’s obviously helped us move our projects and work along so much faster. But I’m also beginning to wonder if some people are only framework developers. I think of this quote from the article: “React looks cleaner. It reads better at first glance. But that readability comes at a cost: you're trading explicit simplicity for abstraction complexity.”
As we continue to learn these tools that make development easier for us, I think it’s important to remember where we came from. We should invest our time in learning, remembering, and studying the boring, old fundamentals and not just the shiny, new (admittedly fun!) framework features. To not spend time and effort understanding the real fundamentals feels lazy and short-sighted.
Please continue to use and learn a framework, but only as a tool to shorten the implementation of JavaScript, not the understanding of it.
If you’re looking for a good challenge, try this: Take a feature you recently built in React/Angular/Vue and challenge yourself to build the exact same thing using only vanilla JavaScript and the native browser APIs. I guarantee you'll learn something new!
Top comments (7)
This perspective is pretty spot-on IMO. Depending on frameworks can definitely be a way to be more productive, but not at the expense of deeper JavaScript knowledge, which you get from learning the fundamentals.
Frameworks are pretty amazing, but knowing the language behind them is key for sure, especially when things go wrong or you need to optimise. And I do believe that it’s a good thing to challenge ourselves to build features with vanilla JS for the sake of practising those core skills.
Great points made!
Thank you for saying so! I truly believe it's so important to understand the building blocks.
This is such a fascinating and controversial topic and it just keeps evolving. As a full-stack engineer with a stronger focus on the back end, I've written front-end code both in vanilla JavaScript and with React, and I can clearly see the pros and cons of each approach.
Frameworks exist for a reason: to save us from repetitive tasks and make the development process more efficient. For example, without .NET, building back-end systems purely with C# would be a huge hassle and take significantly more time. So, if you're a real developer focused on building actual products, you simply have to go with frameworks.
HOWEVER, that doesn't mean you can just gloss over the fundamentals of the language. Especially now, when frameworks have become so heavily abstracted, things will go wrong and when they do, if you don't understand what's happening at a lower level, you'll end up stuck. And that's one of the loneliest places to be as a software engineer.
And again, in today's era of “vibe coding” even framework development is considered as low-level engineering which is absolutely CRAZY to me. Then again, maybe that's just the millennial in me talking 😄💾 I was born just in the era when frameworks were just starting to emerge.
Yea, I do consider it one of my hotter takes. :)
I've definitely been a person stuck in a framework, confused bc it wasn't working as it should. That's part of what inspired me to write this!
Yeah, I figured that - I've been in the similar kind of situation. It's not fun at first but it teaches you a lot of things you didn't know before.
Reminds me a lot of what I encountered with jQuery
It felt like a whole generation of developers knew jQuery, not Javascript.
So whilst there might be a simpler or cleaner solution in "vanillar" JS, they couldn't function without jQuery.
With a lot of React codebases, I feel it's similar, but they don't know what HTML can do already, instead dooming themselves to reimplementing existing functionality (usually poorly) in JS/React.
These are both good tools, and can help you a lot; but it's just as important to understand what thy're helping you with, and how.
Oh man, I remember jQuery! and I don't disagree. I think people reach for React because it's all they've ever known.