Learn JavaScript: The best methods and resources according to 25 JavaScript experts

Learn JavaScript

Get free updates of new articles, interviews & roundups here, or subscribe to our RSS feed.

Many developers think JavaScript is awful because you simply can’t learn it within a short period of time. If you really want to become a JavaScript expert, you’ll need to invest a lot of time in order to master it. People learn to code in different ways. Where one person likes to read a book, the other person likes to follow a course or read blogs about it. JavaScript can also be learned in different ways which made me wonder which methods there are for learning JavaScript. To find out which methods and resources there are to learn JavaScript, I decided to do a roundup under 25 JavaScript experts and ask them a pretty straight forward question:

What is in your opinion the best way to learn JavaScript?

Conclusion

The best way to learn JavaScript

Based on the insights of 25 JavaScript experts

The conclusion of this roundup is that there isn’t one way or a best way to learn JavaScript. What most JavaScript experts recommend is that you first make sure that you know the basics, which you can best learn from a book, from an online course or from reading blogs. Once you know the basics of JavaScript, you can dive deeper in it and become a true expert. Use your basic JavaScript knowledge to build things or solve a problem, and while you’re building things you will improve your skills simply by doing.

Recommended books

Randomly ordered

  1. JavaScript & jQuery by Jon Duckett
  2. JavaScript for Kids by Nick Morgan
  3. JavaScript & jQuery by Jon Duckett
  4. JavaScript for Cats by Maxwell Ogden
  5. Learn Javascript Design Patterns by Addy Osmani
  6. JavaScript: The Definitive Guide by David Flanagan
  7. JavaScript: The Good Parts by Douglas Crockford
  8. ECMAScript Language Specification by Ecma International
  9. Structure and Interpretation of Computer Programs by Abelson and Sussman
  10. Smalltalk-80: The Language and its Implementation by Goldberg and Robson
  11. React.js Essentials by Artemij Fedosejev
  12. JavaScript Patterns by Stoyan Stefanov
  13. You Don't Know JS by Kyle Simpson
  14. Google Web Fundamentals by Google
  15. JavaScript glossary on demand by Andrea Giammarchi
  16. Eloquent Javascript by Marijn Haverbeke

Recommended courses

Alphabetically ordered

  1. CodeCademy
  2. CodeEval
  3. Coderbyte
  4. CodeSchool
  5. Egghead.io
  6. FreeCodeCamp
  7. Frontend Masters
  8. Khan Academy
  9. TeamTreeHouse

All 25 JavaScript experts and their insights

All 25 expert reactions are chronologically ordered

Benjamin Lupton

Website
Benjamin Lupton

Pick a non-technical problem to solve, something that affects end-users, a social problem, an environmental problem, a management problem, a education problem, a science problem... something like that, something important to you that can make a dent in the world and your peers, something that will last. Do whatever it takes to solve that problem. Pick the right technology to solve it. Learn the technology on the way. Avoid the rabbit hole of falling down into an endless loop of technical improvements and changes that do not benefit your end-users, that most often only benefit other developers, as that shit will be thrown out in a year with no dent to the universe. Work on what's important, and learn along the way. Let your project speak, not your code.

Jaydson Gomes

Website
Jaydson Gomes

For me, the best way to learn JavaScript is writing JavaScript. Since the first day I started (back in 2000's), I'm always experiment whit the things I want to learn. So basically, I start to study some new spec or new API or language concept and then I try to build something with it.
Example: I started to study ES6 2 years ago. To learn properly I started a open-source project: Harmonic. Which is a static site generator written in ES6.
Also, I'm always reading blog posts and some books. A good tip is to follow the "right" people on Twitter and the precious one, use Github instead of Facebook.

Jan Lehnardt

Website
Jan Lehnardt

I believe that the best way to learn any programming language is to read code in it. I found that larger projects in their early stages are particularly useful to read, because they are very close to the original intent of the developer.

As software progresses, it usually gets optimised and made more thus complicated to understand. For example, see the original mustache.js — It is fairly straightforward.

Today, it include a parser and compiler and the original intent is obfuscated by these abstractions. That is not to say that it’s bad that mustache.js got more complicated. Programming is trade-offs, and execution speed and code size are opposed to beginner-friendly reading and learning.

Another example is the annotated version of the first jQuery release —it is possible to follow. Today’s jQuery is a lot more complicated (again, because of trade-offs).

All that said, reading existing project code is the best way to learn JavaScript.

Peter van der Zee

Website
Peter van der Zee

For beginners books are probably best. There's a new superhero every year so getting a book released this or last year is probably fine.

For advanced you simply read the spec. Takes a long time. Can be very dry. But after plowing through it you'll know everything. If you can remember it all. And keep the high level overview in your head

Donovan Buck

Website
Donovan Buck

It depends on you experience, If you are new to programming check out Max Ogden's JavaScript for Cats. It's a light hearted introduction to fundamental programming concepts.

For more experienced programmers, I recommend Addy Osmani's Learn Javascript Design Patterns. It exposes the important, not-so-obvious differences in the Javascript language and imparts some well established best practices.

Lieke Boon

Website
Lieke Boon

It depends if you're new to coding or if you're an experienced developer. If you're total new to coding and to JavaScript, I recommend to start with some online courses, just to figure out if coding is something for you. I started at Codecademy. The JavaScript course takes you among 10 hours and teaches you all the basics about Javascript and the fundamentals of programming. Disadvantage: you're not using a IDE, text editor or anything like that. After that, it's time to dive in a little deeper and I'm really excited about the JavaScript course on Team Treehouse. In these courses, you’ll learn about different aspects of JS through videos and you’ll be programming yourself in the JavaScript console in your browser. After each video, you have to take a quiz or a coding challenge. Especially the coding challenges are quite fun to do and you really learn a lot by doing it yourself. If you're more experienced, it's easier to switch to books about JS, there are definitely some great books about JS. Once you're more familiar with the basics, you'll have a better understanding of the content of these books. So I'd say: first start with online tutorials, then switch to books. But most important: learn by doing! There are a lot of great resources that make it easy and fun to learn, but once you know the basics, the best way to learn is to build something. Break things, fix things and try again. It will teach you so much more.

Thomas Fuchs

Website
Thomas Fuchs

Easy: Sit down and tinker with it on a side project. For the first project, do a small but useful website, that can be anything.

Nicolás Bevacqua

Website
Nicolás Bevacqua

In general terms, reading and teaching others are the best ways to learn. Teaching is particularly effective because it forces you to organize your understanding in a such a way that the knowledge is easy to consume, and thus you benefit from improving your own understanding. When it comes to JavaScript specifically there's lots of blogs out there. I can recommend ponyfoo.com, 2ality.com, and most of the blogs in this RSS OPML XML file.

Peter Cooper

Website
Peter Cooper

It's not for everyone, but I'm still kinda oldschool and very much a book-based learner (print, not even e-books). I like to crack open a well written book, start following along, then branch off on my own experiments before returning to the book or finding answers to my inevitable questions there. Couple that with a bit of StackOverflow, and we're good.

For anyone who also loves to learn from great books, at the very beginner's end of JavaScript you can't do much better than either JavaScript & jQuery by Jon Duckett or JavaScript for Kids by Nick Morgan, depending on the approach you want to take (the kids book is totally fine for adults, but some may not like the tone).

Moving up the skill levels, Eloquent JavaScript by Marijn Haverbeke is a fine book, although I've never managed to finish it, instead feeling happy enough to move to other books to flesh out my skills, such as Douglas Crockford's JavaScript, The Good Parts and David Flanagan's JavaScript: The Definitive Guide.

Once you're feeling confident, Dr. Axel Rauschmayer's Speaking JavaScript will help you become more rounded and get a better view of modern JavaScript and his Exploring ES6 is a great follow-on so you can get up to speed with the latest version of JavaScript coming down the way.

Sarah Frisk

Website
Sarah Frisk

First of all, accept the fact that if you're not familiar with programming already, learning JavaScript (really learning it, not just learning how to use other people's plugins) will take some time, and that's okay. Start out by doing some of the tutorials on the internet. I would suggest checking out Code Academy and Code School. Khan Academy also has a wide range of JavaScript tutorials ranging from intermediate to advance that you could continue to refer back to as you continue your coding journey.

After you go through a bunch of the tutorials, the next step is trying to make something on your own, without the training wheels of the tutorials. I caution people who are starting out with JavaScript, not to start out too big of a project at first, but instead start doing a bunch of smaller projects first like a Dungeons and Dragons dice roller (seriously, this is like one of the first programming exercise I do when learning a new language). Believe me, I know it's tempting to make some large project you always dreamed of, but you'll find it's easier to get more done than if you tackle a large project that might be too big for you to handle yet. A valuable resource when you want to look up something is MDN's JavaScript documentation and tutorials and also Stack Overflow. Chances are if you have a question about something, someone on Stack Overflow has already answered that question

Another resource I would suggest is various Code Challenge sites (Coderbyte and CodeEval). These exercises help you figure out how to solve problems like a programmer, and they both have a lot of "Easy" challenges you can start with. Also they give you ideas for simple projects that you can work on if you're not sure what you want to do.

When you're pretty familiar with JavaScript as a language - that's when I would start exploring JavaScript frameworks. The JavaScript path on Code School has a lot of different tutorials for various frameworks. I would play through the different tutorials, figure out which one you like, and then make some projects using that language.

Lastly, if you can find someone who knows JavaScript/Programming who is there to help mentor you, that helps a lot too. Code Newbie has some great resources for beginner programmers including forums, links to tutorials, and their Slack channel has a lot of experienced devs who are willing to help beginner programmers with whatever questions they might have.

If you don't want to go with the self learning route, you could also sign up for a bootcamp Before spending your money (and sometimes these bootcamps are a lot of money), research the bootcamp to see if that is the right option for you, works with your schedule, and what other people have said about the bootcamp. Not all bootcamps are the same, and help more than others.

Peach Pellen

Website
Peach Pellen

In my opinion, the easiest way to learn JavaScript is to go and download some very simple sample code that is ready to run. (Sites like Platino.io or Appcelerator.com are good choices.) From there, open the simplest sample, say showing an image, maybe some text - and change something small - then run it. Does it work? Great. Try breaking it in a simple way, like removing a closing bracket, and see what happens. Put it back in, then continue to make changes. Look at the documentation for what you’re using to see a list of APIs, which will show you how to do different things, like change the color, size, position of an image, text, etc. Try adding another image, or a new text object.

This all sounds very simple and manageable; because it is. But in doing so, you will be learning the basics - and from there you’ll be able to build on that. It’s how I’ve learned every language I know, despite having zero experience in coding, not even basic HTML, when I first started out.

Juriy Zaytsev

Website
Juriy Zaytsev

What works for some people won't work for others. Some prefer to explore examples and prefer top-down approach. Others would rather start from the core and only then move onto the higher level.

I started by learning Prototype.js library and then eventually dug underneath to see how things work and why they work certain way. Then I got all the way down to the spec. It was fun and interesting but if I started from the spec, I'd leave from the first page.

Gotta try things and find your way. As long as you're truly curious, you'll get there.

Kent C. Dodds

Website
Kent C. Dodds

The best way to learn JavaScript is by building things. Applications, libraries, tools, IoT, whatever you want to learn about, build something that has to do with it. Building something will solidify the concepts in your brain and give you actual use cases to understand the strengths and weaknesses of different approaches and technologies.

Now, it takes some learning to get to the point where you can actually build something. That's where things are a little subjective. Each of us learns differently. I discuss this a bit on my AMA. Basically, there are a few different types of learning methods that cater to different learners: Visualising, Auditory, and Kinesthetic. Based on the way you learn, you might learn best by watching an egghead.io lesson or conference talk, you may learn better by reading a blogpost, tutorial, or book, or you may learn best by having a mentor help guide you. Based on your learning style, that's where you start.

If you really want to solidify your learning, teach. Propose talks at meetups and conferences. Give workshops. Create screencasts and upload them to YouTube. Write blogposts and tutorials. All of these activities will help you make sure you understand the concept inside and out. It takes a new level of understanding to be able to explain something accurately and simply.

So get the base learning the way you prefer, build something, then teach it. This is how you become a master of a concept.

Watch Kent's recent talk on this topic:

Henrik Joreteg

Website
Henrik Joreteg

Build an app from scratch, using JavaScript. Create something that you wish existed. The challenge these days is not the lack of tutorials, or resources, it's knowing which ones to listen to. Having a tangible, singular, goal of creating a useful thing will help focus your learning on what's actually important.

When you're done, you'll have done something that a surprisingly few number of web developers have done: build and app from scratch, on your own.

A few somewhat more specific tips:

  • Be wary of anything that claims to solve all your problems;
  • Make sure you're actually writing JavaScript, not just learning some high abstraction, like Angular or Meteor;
  • You'll need to know Node.js and npm no matter what, so building a simple node.js server using something like express.js will not be a waste of time;
  • You probably don't need half the stuff you've heard about, this is why focusing on building something real is so important;
  • Get on twitter and connect with and learn from other developers.

Kendrick Coleman

Website
Kendrick Coleman

The best way to learn JavaScript is to start with a front-end programming course. This could be in a class room setting or with online courses such as TeamTreehouse.com. Learning to manipulate the DOM gives you a better understanding of how to use JavaScript to make things happen. After you have your feet wet, it's time to jump head first into Node.js. There are lots of different places to learn Node.js online and each one of them are good in their own regard. Figure out some sort of basic script you want to do first that doesn't require a web stack. This will teach you about callbacks. Once you have standard server-side scripting in your arsenal, you can move to web frameworks such as express.js, meteor.js, and more!

Peter Michaux

Website
Peter Michaux

I doubt there is one best way to learn JavaScript but I learned from books, through discussions on Usenet's comp.lang.javascript, and by experimenting.

David Flanagan's "JavaScript: The Definitive Guide" was an accessible introduction to the language for me. I think almost anyone interested in learning JavaScript would be well served by starting with this book.

Douglas Crockford's "JavaScript: The Good Parts" is a valuable exploration of the flexibility and power of JavaScript's closures. Crockford's teachings have been important in the maturation of the JavaScript community but take his strong opinions with a grain of salt. His advice is not appropriate in all situations.

"Standard ECMA-262: ECMAScript Language Specification" is required reading to transition from JavaScript beginner to JavaScript expert. Beyond learning the exact details of the language, learning how to read a specification document is difficult but worthwhile.

Abelson and Sussman's "Structure and Interpretation of Computer Programs" uses the Scheme programming language for examples but the carryover to JavaScript programming is obvious. Without question, this is my all-time favourite book on programming.

The first 89 pages of Goldberg and Robson's "Smalltalk-80: The Language and its Implementation" are a lucid introduction to object-oriented programming and an absolute joy to read. The proper use of concepts like encapsulation and message passing are daily activities for the expert JavaScript programmer.

After building a strong understanding of the language itself, a front-end JavaScript programmer must learn how to design maintainable applications using the the model-view-controller architecture. The Gang of Four's "Design Patterns: Elements of Reusable Object-Oriented Software" and/or Freeman and Robson's more accessible "Head First Design Patterns" are the best places to start exploring the world of design patterns. Reading the original Smalltalk implementation of the MVC classes is also a valuable exercise at this stage of a front-end JavaScript programmer's evolution.

Unfortunately, comp.lang.javascript is all but dead and I don't know of an equally knowledgable group of JavaScript programmers on the Internet today.

Write your own libraries and frameworks. Then throw them away and write them again but better. Reinvent the wheel many times. The lessons learned during these exercises will serve you well.

Amy Cheng

Website
Amy Cheng

I think what's best is different for everyone. Personally, I learn JavaScript by doing alot of reading of blog posts. Sometimes, I'd re-read a blog post until I've internalized the knowledge, then I would go off and build something using what I've just internalized. This is how I learned Angular!

James Padolsey

Website
James Padolsey

I think the best way is to just learn JavaScript by itself, and not to bother with all the fancy frameworks and libraries. Task yourself with building something using the minimal set of third-party abstractions. Build it all yourself, and then you'll start to gain an understanding of what these abstractions offer. Google and StackOverflow are probably the best starting points for answers. Also: always question peoples' firmly held opinions about what is best in the world of JavaScript. HAVE FUN, too. :)

Brian Rinaldi

Website
Brian Rinaldi

Personally, I am a book leaner, so I think that books (or articles) are a good way to learn to program. This is true for JavaScript as well. However, JavaScript has the benefit of living in the browser, meaning that anyone can simply start programming without any special tools, in their browser. This means there is no complicated installation and setup process just to start coding. This also allows for some great interactive learning tools (places like CodeSchool or CodeCademy, for example), or even the ability to simply start trying out code via the browser console or tools like JSFiddle or JSBin - the latter tools even allowing you to even view and edit other people's code. The point is, more than probably any other language, JavaScript is easy to get up and running and learn by trying.

Denis Radin

Website
Denis Radin

Nice approach to learn from scratch is to start with the book JavaScript & jQuery, then move towards HTML/CSS/JS courses at Code Academy. After finishing them you probably would be able to pick and successfully accomplish some simple freelance HTML coding projects. Practice is a great teacher and to make it even better it is good to find a mentor until starting. Having an experienced mentor goes a long way and makes it way easier to fit into professional landscape.

Proceed making freelance HTML (and read books of course!) until you find it easy (5-10 projects are going to be enough) and pick a JS framework then. Does not matter will it be Angular or React both of them have pros and cons. Just pick one which is closer to your soul. For me ReactJS is good and if you want to go the same way I would recommend to read React.js Essentials

Once you are done with first project built with JS MVC framework proceed with looking for internship job scanning market demand and trying to respond to them by reading corresponding books and tutorials.

Got your first job? Be disciplined, be eager, be flexible, be enthusiastic. Success.

More to read?

Dan Abramov

Website
Dan Abramov

There is no better way to learn JavaScript than to take the libraries you use and help fix their bugs.

Andrea Giammarchi

Website
Andrea Giammarchi

There are many famous books about JavaScript but most of them are outdated. Don't get me wrong, all basis are there and it's good to know JS background, but at the same time JS changed a lot in the last 10 years. The 5th version published in 2009, and today still the most deployed and compatible version, introduced already many new language features and latest specifications added new syntax and even more features.

This is one of the reasons I've recently published on Leanpub a book entitled "JavaScript glossary on demand", that welcomes both people completely new in the programming field and those that would like to better understand where we are with the language, and what's possible or what's new in these days.

The TL;DR of using books to learn is that these becomes quickly outdated, which is why I believe smaller books like mine better help to ramp up with modern JavaScript and modern techniques.

After all, the most updated way to learn JavaScript, full of options and also for any level, is the Web: thanks to the enormous amount of material created daily from all community's developers, once one masters all terms and basic concepts behind modern JS programming, the rest becomes accessible and easier to follow.

One thing is still very important though: try to write by your own some code, even if it looks like the simplest thing on Earth, don't consider it that easy until you've implemented, and mastered, all steps needed to reach the goal.

Forget the copy and paste, forget forums with ready-to-use solutions for problems maybe not even similar to yours; use other people experience to learn, rather than quickly solve something as if it was a "magic spell" on your file, that won't bring you anywhere and won't help for the next time you'll encounter a similar issue.

Jennifer Dewalt

Website
Jennifer Dewalt

I'm a big fan of learning by doing. Books and tutorials fine for getting started with the basics but building real things gives you so much more context for what your learning. Start by setting a small goal to hit and get Googling! Sites like Stack Overflow, Mozilla Developer Network and CSSTricks are full of information and tutorials to help you. Then do it again, and again, and again. Before long you'll be ready to tackle more and more complex projects.

If you are a book learning person or are just looking for a good beginner reference textbook, I recommend Eloquent Javascript by Marijn Haverbeke. It's free online (yay!) and it's very approachable.

Tim Oxley

Website
Tim Oxley
  • Nodeschool.io: Do the workshops. Go to events. Mentor and/or help organise if you can.
  • The best resource for learning is your community. Your peers and the code they write. Find them at local meetups and in chatrooms (Slack/Gitter/IRC/etc).
  • Read the code of the tools you use. You'll always learn something new.
  • Establish a personal policy of at least trying to fix open source tools before asking the maintainer to. Look at the code. If you can't fix it, then make sure to log a detailed issue including reproduction & what you tried to fix.
  • The best way to learn is to teach. Teaching forces clarity and cohesiveness in your mental model.
  • The best way to teach is to listen. You may even learn something.
  • Try help solve problems people post in chatrooms and stack overflow.
  • Volunteer to present at meetups, especially about topics you want to learn about. Trick yourself into learning something to avoid embarrassing yourself!
  • Volunteer to help organise & maintain your communities. Help shape your community into what you want it to be. Whatever you put into your community, you'll get back tenfold.
  • Be wary of strong opinions. Always evaluate tools for yourself and make your own judgements about the pros & cons. Refuse the temptation to form strong opinions for or against any technology until you've used it with an open mind in production. Question whether others with strong opinions have done the same.
  • Remember there are no silver-bullet tools, methodologies or languages – everything has upsides and downsides – always understand which tradeoffs you're making and respect that others may value a different set of tradeoffs.

Gilmore Davidson

Website
Gilmore Davidson

I originally learned bits and pieces of JavaScript via sites like the Mozilla Developer Network and some Googling. What helped me learn a lot more was actually reading the whole source code of jQuery (probably version 1.3 at the time). I still think that browsing the source of something like Underscore is really valuable for people new to the language, as it’s easily readable and builds upon abstractions.

These days most of my learning is done via blogs (learning never stops). My list of blogs changes over time as old blogs stop being updated and new ones spring up.

Tweet: Maarten Tibau

View Tweet

Tweet: Miguel Correa

View Tweet

Thanks to everyone!

I would like to thank all 25 JavaScript developers who contributed to this roundup, I couldn't have done this roundup without you!

Scroll To Top
Madison Turner
- 2016-03-30 14:24:56

1. Hit F12.
2. Dive in.

SteveMoore
- 2016-03-31 23:46:16

A good read but it's actually codecademy not codeacademy.

Bauke
- 2016-04-01 09:39:06

Hi Steve,
Thanks for your feedback, I've fixed it right away! :)
Cheers!