Learning JavaScript

Thursday, May 6th, 2021

The collective wisdom of my JavaScript fluent friends on learning JS, Typescript, web frameworks, etc.

At the start of the COVID-19 pandemic, I resolved to revisit my blog, as discussed in my previous post looking back on my Statcast Data Science project. One thing I was hoping to spend my newfound, indoor free time on was learning a new programming language, specifically JavaScript. At the time, I reached out to a handful of friends and current/former colleagues for advice:

Any suggestions for a decently experienced developer completely new to JS? I’m kinda excited by TypeScript and React, but it seems like I’ll need to spend some time learning the basics first.

  • How should I get setup to play around with the language? Especially excited about options for developing in VSCode.
  • Do you have any favorite blogs/books/example projects I should take a look at?
  • I’m mostly self-taught, but also open to great tutorials or more directed online learning resources.

I got so much great advice in response, I figured I'd summarize it here. First off, credit where credit is due, thanks to everyone with their replies

VSCode

As Div put it, "In terms of editors, ... most popular editors have on the spectrum of good to superb support for ts/react. VSCode is on the latter end based on what I’ve heard, and comes functional out of the box." This was my experience. My setup today includes only one VSCode extension, ESLint, but the general environment is great.

Typescript

My experience was similar to Ivan's perspective: "I would definitely learn the basics of JS before diving into frameworks like React; it’s really helpful to understand how things work under the hood. That said, TypeScript is such a huge improvement on JS you can jump into it pretty quickly." Despite coming out of Microsoft as a solution to writing reliable, production JavaScript, as Nick mentioned "handy for increasing the reliability of production software," I found it useful to start with TypeScript. Combined with the powerful linting tools native to VSCode, it helped me quickly learn the syntax of JS, speeding up my development loop.


That said, I wouldn't summarily suggest you go straight to strict mode with TypeScript. I spent a couple days beating my head against the wall dealing with the loosely typed interface of the AWS SDK, where everything is optional. The best solution was to selectively turn on as many strict features as possible, but this didn't include strictNullChecks.

Learning Resources

First off, as Nick put it, "the Mozilla Developer Network is the definitive go-to resource for any questions you have as you’re going along. Any time you have a question about how something in JS, HTML, or CSS works, MDN usually has the answer." Ivan similarly said he'd "100% recommend [MDN] over the crap like w3school that shows up first on google."


When it came to learning React, Div, Luke, Sarah, & Nick all recommended the Intro to React Tutorial, and I couldn't agree more.


Matt (as an App Academy alum) and Asher (as their former head instructor then lead software engineer) both recommended the App Academy content on JS. This seems like a great approach for someone with Ruby experience (that comes first in their curriculum), but I ended up skipping it for that reason.


Matt also sent me a really useful website, Full Stack Python, which itself contains some great resources for learning JS.


Finally, for those looking for book recommendations, multiple folks suggested Eloquent Javascript by by Marijn Haverbeke.

Web Frameworks

Web frameworks seem to come and go with such frequency that any blog post will almost immediately become out-of-date. That said, the consensus seemed to be that React would be a great place to start, given its popularity. Also mentioned were Vue and Svelte, and I was discouraged to try Angular given its steep learning curve and (apparent) downswing in popularity.


With React, multiple folks suggested create-react-app as a great way to get started, along with NextJS. I got pretty excited about Jamstack, and ended up using NextJS for that reason, and I enjoyed going through their tutorial.

 

Questions | Comments | Suggestions

If you have any feedback and want to continue the conversation, please get in touch; I'd be happy to hear from you! Feel free to use the form, or just email me directly at matt.e.fay@gmail.com.

Using Format