1. Learning the Craft

Overview of the Field

I started with freecodecamp.org although it was not the most thorough at the time (it's improved since) but it served as a great "syllabus" of the field of web development and its basic concepts. Then I focused on gaining an understanding of the fundamentals of HTML, CSS, and especially JavaScript. This is a crucial foundation, and you shouldn't be too quick to skip this step. I didn't bother learning an extra programming language like Python or Ruby because I could use JS for the backend as well.

An important intermediate step is to familiarize yourself with browser dev tools. Usually chrome.

Once the foundation was done, I needed to learn a framework. I started with Angular but then hedged my bet on React as it was gathering steam. And boy was I glad I did. It's important to look at industry trends. People fight over the "best framework" but what really matters is for you to gain the skillset that enough people are hiring for. Since this is something that is always evolving, I'm not going to be prescriptive about frameworks.

Learning resources

It took some time to get the lay of the land and what some resources were good for and what they weren't. These are general notes, for the full list see:

Resources

Video courses

Udemy, Udacity, YouTube, etc: Never paid more than 15 bucks for a course.

Be careful of falling into tutorial purgatory (see below)

Written resources

There are well-known and regarded blogs, eBooks, and internet docs (MDN, Google, etc) that are good to keep as references.

Podcasts

Good for keeping abreast with new technology and hearing from experienced developers in industry

Projects (and tutorial purgatory)

This part I could have done a lot better. I fell into tutorial purgatory (too many useless "toy" apps) and never made a significant application that solved a real need for the longest time because I didn't feel "ready". This was a mistake. The best way to solidify and deepen learning is to build something. Either a problem you're interested in, a copycat of another app, or best of all (for finding that first job, in my opinion) paid commissioned work of any kind.

Teaching

Explaining something to others is a very powerful way to solidify what you learn. There's a lot of ways to this, blogging, youtube, etc. For me, I ran meetups where I helped others learn and also did some talks on interesting technologies meetups I ran as well as just attended.