But I know too much choice can be demotivating. You may not want to spend a week sorting through all these resources before you even begin to learn.
That's why I dug deep into the internet and found the resources that are recommended the most. These are videos, books, and interactive courses that other beginners just like you have taken and recommended.
Whether you are completely new to programming or you have experience with other languages, these resources will help you get to the next level the fastest:
Interactive courses are awesome because you get to dive in and start programming without installing any software on your computer.
You also get that feeling of satisfaction as you make quick progress through the steps and see the screen light up indicating that you did something right.
Interactive courses are especially good for total beginners. Developers coming from other languages might learn more quickly with videos & books because they don't need as much repetition and practice.
FreeCodeCamp is a great place to start. It has a nice organization that allows you to jump around to different topics or just go straight through.
Some beginners have said they get stuck on FCC. If that happens to you then switch to another resource. A book would be ideal. Once you've read a few concepts from your book and slept on the ideas, you might be able to jump right back into the course.
One FCC gotcha: They have a section on jQuery, which I recommend skipping. jQuery is still a very popular library, but in my personal experience I see it only being used by less skilled, lower-paid developers. There are better options when you are ready to learn something new (like React).
Code School mixes videos and interactive coding. You watch a video, then practice what you learned.
Code School doesn't give you as much free content as the other resources, but I still recommend checking it out. None of the resources on this list are expensive when compared against the money you can make as a paid software engineer. If you can afford it, pick whichever resource resonates the most with you regardless of the price.
I suggest reading a book and doing a course (or part of a course) before checking out Codewars.
One of the best features: after you solve a puzzle you get to see all the other ways it could be solved. There are always other solutions that you can learn from.
Videos are a great way to learn "passively." Hit play, sit back, and absorb that knowledge.
Most people learn ES5 and then look up the new features and learn them afterwards. That's a solid way to go, but you might want to check out this course and learn everything at once instead.
This is a paid course, but it goes on sale all the time. Watch out for sales and coupon codes.
If you learn best from videos, this may be the place to start.
Books are essential to learning a new language because they tend to be more all-encompassing than interactive or video courses.
Books pair well courses - the course will give you muscle memory and practice, and the book will fill in the gaps.
Many developers rave about this book and say it's great for beginners. Others say it teaches way too much too fast. I recommend you read this book in tandem while doing a course.
Some complain that this book starts a bit slow. If you're bored, skip to Chapter 5 and remember to go back if you get lost.
This book is free and open source. You can purchase a physical copy, but you might want to read online as well so you can edit and run the code samples. Tweaking the examples to see what happens is a great way to reinforce what you are learning.
This is not actually a book - it is on the web only. I listed it here because it is text-only (no videos or interactivity).
This resource also teaches HTML and CSS, which you'll need to learn before you can move on to bigger and better things.
This book is free and open source. You can read online or download the pdf/epub.
This book reads a bit like a reference, with one section on each concept. There are some nice exercises validating your understanding as you go through - you'll want to use the online version to interact with these.
In order to understand it, you should already know object-oriented programming.
MDN is definitely my gold standard of reliable and up-to-date internet resource on web dev — A web developer
I myself use MDN several times a week. It's the best when you want a thorough and accurate description of how a particular feature works.
For instance instead of searching for "arrow functions", try "mdn arrow functions".
It's dangerous to go alone!
It's great to chat with people that are at your level, above it, or below it. Either way you'll learn.
The best part - unlike these other resources which are mostly read-only, on reddit you can post a question! From what I've seen, most questions get answered. Just don't paste in a massive chunk of code and ask "why doesn't this work"?
Here are the subreddits that I think you would find the most useful, in order of usefulness:
You can chat right now by going to webchat.freenode.net . Choose a nickname and enter
You don't need a degree. You just need the skills and an example of your work. So get started!