loading...
Cover image for Don't Learn JavaScript and React at the Same Time

Don't Learn JavaScript and React at the Same Time

alexlsalt profile image Alex Morton ・2 min read

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. Did you know I have a podcast with new episodes each Wednesday? Go listen right over here >>

Posted on by:

alexlsalt profile

Alex Morton

@alexlsalt

I'm Alex and I'm a self-taught web developer, writer, and speaker. I host The Ladies Code Collective Podcast and I haven't missed a meal since 1992.

Discussion

pic
Editor guide
 

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!

 

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!

 

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

 

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.

 

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.

 

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

 

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.

 

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.

 

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.

 

I’ve been on the fence as of late if I really want to dive into a framework. Decided that it would be worth spending more time with JavaScript before pursuing a framework. I might end up going with Vue instead of React.

 

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!

 

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.

 

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.

 

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.

 

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

 

No better time than the present :D

 

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?

 

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)

 

I took the same course hes awesome.