DEV Community

Cover image for Don't Learn JavaScript and React at the Same Time
Alex Morton
Alex Morton

Posted on • Updated on

Don't Learn JavaScript and React at the Same Time

This post was originally published on August 21, 2020 on my blog.

(NOTE: I'm hosting a webinar TODAY (August 21) at 12pm (noon) EST: 5 Steps to Starting and Following All the Way Through on Your Side Projects!

Sign up here >>)

Hello and happy Friday! I'm finding I don't have anything too inspiring to blog about this week. Must not be in that frame of mind (and that's ok!)

I can, however, write a little bit about the progress I've been making with learning React (for what seems like the third or fourth time).

Currently, I'm going through an ebook I purchased some months ago called Pure React by Dave Ceddia. It's pretty great, and I started in on it after buying it in the past only to realize that I was quickly lost because I hadn't spent too much time getting solid JavaScript foundations.

There's a lot of debate in the developer community, I've noticed, around whether or not it's OK to learn React at the same time as you're learning JavaScript. Every developer who has experience with it will have a different opinion.

After my few false starts with trying to learn React (while not have JavaScript basics dialed in), I'm definitely a proponent of learning JavaScript fundamentals and being comfortable on a high level with it before trying to pick up a framework like React (or Angular or Vue).

In my experience, there was a lot of confusion for me around where JavaScript ended and what exactly was a specific feature of React. And that can be tricky, especially if in the future you're just using JavaScript (no framework) and you find yourself confused about not being able to lean on features from a framework instead.

Anyway! I'm making my way now through Pure React with a much more solid foundation with JavaScript. And it's helping enormously.

Seriously, not only is the information just overall making so much more sense, but it's actually just a lot more fun being fully aware of the concepts that are being taught and talked about.

I don't have any specific examples to give right now, but I'm looking forward to continuing on with it and hopefully being able to share more of my experiences here in these posts.

Also, instead of trying to rush through the course as quickly as I can (just to be able to 'check it off' and move on to the next one), I've given myself a full six weeks to do it.

Within that six weeks, I've broken it down into working on it three times a week - on Mondays, Tuesdays, and Thursdays for a couple hours each day.

This is exactly the sort of thing I talk about in my 5-step blueprint for starting and finishing/following through on side projects, so if you want to check that out, you can do so right over here! >


P.S. I'm launching a new course - Crafting Your Come-Up - for early-career developers to set themselves apart along their coding journey!

Sign up here for updates!

Craft Your Come-Up course announcement

Top comments (19)

Collapse
 
jamesncox profile image
James Cox

I was almost the exact opposite. I struggled so much with JavaScript and it wasn't fun to learn at all. I remember being so frustrated that anything I wanted to see on the screen felt like pulling teeth. Then when my school's curriculum switched to React it all started to click! And I was enjoying coding and learning again. And anytime I needed to inject pure javascript into my project, I had to go look it up, figure out how it works, and I learned a lot more thoroughly this way.

I can ABSOLUTELY see how learning JS first would be extremely beneficial. And those who can and do before taking on something like React are probably better developers than myself.

I didn't set out to learn React/JS in that order. I guess one thing I really learned about myself is if I am not enjoying the process good luck getting me to absorb any of the information!

I am actually really excited to go back to building apps/projects with plain old JavaScript now and improve my fundamentals even moreso.

Great article! I think all different POVs are valid and I love reading about others' experiences and insights!

Collapse
 
alexlsalt profile image
Alex Morton

That makes a lot of sense, James! Especially since the concepts we learn aren't always so evident when we're just learning them theoretically (as in JS first before anything else).

Thanks for commenting and sharing your experience!

Collapse
 
pengeszikra profile image
Peter Vivo

My experience is: learning pure js (without jQuery or any other frameworks), then meet with React ( Preact ), meanwhile paralel development small programs in pure js. I think you right, stable js experience is important.

Collapse
 
alexlsalt profile image
Alex Morton

Yeah, I'm finding learning pure JS first helps me know where JS ends and any framework starts :)

Collapse
 
intrnl profile image
intrnl

This really depends on the person. I find it much harder to learn the fundamentals first because there would be no reason for me to churn through all of this beforehand.

Every time, I would always go "what is this, why do I have to learn this now, and when would I ever use this?"

Meanwhile if I learn React first and encounter some new stuff, it's always been "ooh, this is interesting, what is this for? let's check it out!" because now I finally have a reason as to why I should learn that bit.

I feel like Dan Abramov's tweet really summarizes that experience for me

Collapse
 
alexlsalt profile image
Alex Morton

Makes a lot of sense! And yeah, I saw this tweet too - always depends on the individual person and their experience/what works for them.

Collapse
 
bytebodger profile image
Adam Nathaniel Davis

I truly appreciate and respect your experience. But I'm not sure if this is a good thing to be taken as a universal best-practice. As has been alluded to in other comments, the most important thing about learning a language is: What interests you about that language??

As much as I love JS, it's easy now to forget just how frustrating it can be to try to build anything (of note) in pure JS. Specifically, despite all its utility, a lotta first-time devs look at "raw" JS and think, "Yeah, sure - but... how do I actually create something that I can see??" In that respect, React can be pretty damn cool cuz it can get you right into the UI side of things faster and easier than with basic JS.

Also, keep in mind that, with modern apps, it's probably challenging to dive into any platform if you don't know the core JS fundamentals. I can't imagine that it'd be much fun for a pure noob to dive head-first into Angular if they didn't know the first thing about JS. But there are times when a framework's conventions force you to learn more about the underlying language.

Collapse
 
stereoplegic profile image
Mike Bybee

I recently connected with someone on LinkedIn who, like me, wants to create a free educational platform for JS devs. One unique perspective he brings is that a lot of the failings of core JavaScript education is that it's usually bolted on to HTML/CSS education as an afterthought, at least in the early stages. His answer is going the opposite route: Learning JS on the backend (via Node.js) first, then moving to frontend development.

If you're interested, his project is available at github.com/HansUXdev/JavaScript-First.

Collapse
 
bytebodger profile image
Adam Nathaniel Davis

Very cool!

A tangent to this is the fact that, at this point in my career, I've basically forgotten how challenging it can be to do "just" HTML/CSS. Granted, HTML is "just" a markup language. And it doesn't have nearly as much complexity as handling loops, and conditionals, and API calls, and...

But some years ago, I took up the task of teaching a friend how to code. And I didn't realize just how much "base" knowledge I've acquired over the years that is often applied before you write even your first line of logic. To me, writing HTML/CSS is like coloring. But for brand-spankin-new devs, that's not always the case.

And when you throw in more "advanced" concepts, like responsive design and the flex model, well, it's not always as simple as just throwing some tags around some content.

Collapse
 
stereoplegic profile image
Mike Bybee • Edited

I do believe a solid understanding of JavaScript is critical to anything based on it, especially to prevent React from becoming the new jQuery (before and during the early years of the modern framework/library wars, there were a ton of really good jQuery developers who couldn't write vanilla JS to save their lives).

I especially urge junior JS devs to dive into the what and why of JavaScript (as a prototype-based, dynamically typed language) before adding TypeScript and even ES6 classes to their learning curve (if you use them at all; contrary to seemingly most these days, I advise against both - admittedly, this becomes much harder when so many third party React libraries are still class-based, and many have been written in or have moved to TypeScript, making it more difficult for less experienced devs to gain understanding from navigating their source code). Kyle Simpson's You Don't Know JS Yet series of books is your friend in this regard. You need to understand that, if you avoid the "bad parts" or "weird parts" (as Simpson says, they're actually just JavaScript parts, and you need to know how and why they work the way they do), or try to hack JavaScript into behaving like some other language (again, failing to understand why it behaves the way it does), you're going to have a bad time.

With that said, we all need motivation to dig deeper. If React is what does that for you, then go forward; however, remember to continue with the actual digging, into actual JavaScript. When something stumps you, don't just reach for the React-specific answer. At the end of the day, React is just JavaScript.

While I haven't reached for Redux in my own projects for a while (since hooks emerged), just last weekend I told a class of newbies learning it to bear with it because a lot of the concepts it teaches apply to programming in general, particularly modern JavaScript (e.g. actions, reducers, middleware). After you gain a better understanding of React, Redux would be good to learn for that reason as well as the high likelihood that you'll be using it in React projects you may get hired for in at least the near future.

Collapse
 
alexlsalt profile image
Alex Morton

It really worked for me to take a step back and focus on JS fundamentals. Before, I tried to do both and it didn't really work for me. Now that I spent more time on JS, React is really 'sticking' and making more sense to me!

Collapse
 
ucefidel profile image
Youssef Idelhadj

Very interesting. Thank you for the advices, I think it's the same about PHP Developers, they start to learn Symfony/Laravel without a strong knowledge about OOP.

Collapse
 
stereoplegic profile image
Mike Bybee

To her point, though, I doubt I would have spent a solid decade with PHP if I hadn't taken an interest in PHP-based CMSes (primarily Drupal, now based on Symfony - though, while I don't really use it anymore, calling it a mere CMS doesn't even begin to do it justice), shopping carts, CRMs, etc.

Collapse
 
lucrp profile image
Lucas Ramos Paiva

I'm learning React now after taking the JS fundamentals at Freecodecamp a while ago, but I forgot some concepts and I need a refresh. Which course or book did you use to learn the fundamentals of JS?

Collapse
 
alexlsalt profile image
Alex Morton

I took Jonas Schmedtmann's JS course on Udemy - highly recommend! (I'd also recommend waiting for a Udemy sale to come around - they're pretty frequent)

Collapse
 
andrewbaisden profile image
Andrew Baisden

I took the same course hes awesome.

Collapse
 
vfulco profile image
Vincent Fulco (It / It's)

Really great perspective here. Wish I came across 6 months ago.

Collapse
 
alexlsalt profile image
Alex Morton

No better time than the present :D