TL;DR
- There is a lot of hype online around statements such as "things you need to learn before learning a framework".
- While skipping the basics of a language completely is not a good idea, it is perfectly possible to learn the foundations of a programming language, parallel to learning a development framework for that language.
- A better rule of thumb is: "never stop learning your programming language".
My story
I started learning JavaScript in the spring of 2020. Due to the covid lockdowns of Berlin I had a lot of spare time to learn programming. If you're learning a programming language with even remotely as broad a usage as JS, you will know that it's impossible to learn the language well in a couple of months.
Needless to say, when I started learning Vue.js through a Udemy course after 2 months of coding, I was still a proper noob.
Having spent the first 5 years of my professional career as a teacher, I know how crucial motivation is for achieving learning results. If a student is not motivated, chances are high their results and grades will tank. If a student remains motivated and is having fun while learning, chances are way higher they will also achieve some sort of academic success.
Coding is not an exception.
It therefore didn't take me much consideration to ignore all the warnings, and start learning Vue.js, even though I wouldn't know how to use any of the Array.prototype
methods by heart, except maybe push
. Even less so did I understand even a fragment of how JavaScript objects work.
But wait! If you don't learn all the JS-basics before learning Vue, you will always be a noob!
I call bullshit.
Going forward, I kept learning not only Vue, but also React and Node.js during that first year. I was having a blast and and was programming almost around the clock when not working. I was super excited about building full-stack applications, and using the best tools for doing so. I couldn't limit myself to learning programming basics, without dealing a blow to my high level of motivation. What might have set me apart from some people who never truly learn the intricacies of JavaScript is this: Sure, I started using frameworks right away, but I never stopped learning the foundations of JS.
A better attitude
And I think this is the correct attitude to promote: never stop learning your programming language. We shouldn't discourage people from having fun and learning stuff they are interested in. But we should encourage people to never neglect the basics of a programming language.
You can start learning Vue without understanding all the ins and outs of the this
keyword. But in the long run you will be a much better developer if you have a strong understanding of this complicated little word.
You can learn how React hooks can help you manage state and build some nice little learning projects with it. But in the long run you will be better off if you also understand reactivity in JavaScript through concepts like Proxies, getters and setters.
I don't see anything stopping people from learning these concepts in parallel though.
As a matter of fact, if I had to try and teach someone how reactivity works in single page applications, I'm pretty sure I would NOT start by trying to teach someone Proxies and ES6 classes with getters and setters. Using React hooks or Vue.js ref
might even be better abstractions to learn JavaScript reactivity with for a beginner. Then one could tackle more advanced "vanilla JS" topics later.
A word of caution
Okay, so learning a development framework is possible to do parallel to learning a language. Still, I would not have peace with this text without ending it with a few words of caution:
Sure, you can skip the basics and start learning a framework.
❗️For now❗️
If you cheat, and just skip learning the basics of your programming language forever, you will likely forever stay a noob.
You will try to debug the state of your Redux or Pinia store, and not understand when state mutated in an unexpected way, and even less understand why. You will assign new objects to objects passed a function parameters, and desperately scroll through Stack Overflow to try and understand why the damn object doesn't update as you'd expect. You will curse when you have memory leaks, because you didn't understand that a class method doesn't have the same reference value when referenced once in document.addEventListener
and then later in document.removeEventListener
.
For me, a couple of courses on Udemy helped me build up a level of understanding for JS, which I am now very grateful for having learned parallel to learning frameworks:
JavaScript - The complete Guide
Accelerated ES6 JavaScript Training
If the message here resonates with you: glad to hear from you! If this triggers you and you strongly disagree, don't hesitate to let me know 😊
Top comments (0)