Want to learn web development? There are hundreds, if not thousands of options available: W3Schools. FreeCodeCamp. Udemy. Treehouse. DevMentor. Laracasts (and whatever the Rails and Django alternatives are). Let's not forget YouTube, which returns thousands of results when you search "Learn web development."
If you are wanting to teach yourself to code, there has never been more options. The downside is it's also never been easier to be paralyzed by the dizzying array of choices.
When I taught myself to code fifteen years ago, it was a different landscape. There wasn't nearly as much free information available online. I still remember standing paralyzed by indecision, trying to decide which coding book to buy at Barnes & Nobles. I was grateful then for the guides who helped me find the best teachers. I want to do the same by providing you with some of that guidance.
Before I give you the courses and teachers I recommend, let me give you four valuable pieces of advice:
1. Learn HTML/CSS first.
HTML is the backbone of everything you do on the web. HTML isn't really a language. It's a very simple concept you could probably master in a couple of one hour lessons. My kids had no trouble at all grasping HTML in a single one hour lesson.
The gist of HTML is *tags* which you put around content to tell the web browser what that content is. So, if you want to let the browser know something is a paragraph, you wrap it in p tags like so.
<p>This is a paragraph.</p>
As you can see, it's not complicated. There is a little more to it than that but not much.
If HTML tells the browser *what* content *is*, CSS tells the browser how the content should *look*. Raw HTML is ugly as homemade soup. CSS is what you need to master to make it look pretty. So if we wanted to tell the browser to make all the `<p>` tags red we would do it with CSS like this:
Again, the basics aren't all that complicated. You absolutely should **master** the basics of HTML and CSS before you move onto anything else. You should be able to take a photo of any web page and turn it into the proper HTML tags and then style it the right way using CSS.
After this, you are ready to move onto more advanced stuff. Now is when you...
2. Pick a stack and stick with it.
"Stack" in developer lingo means the languages and frameworks you decide to make software with. There are many routes you could take:
* Ruby—Ruby on Rails
* PHP—Laravel, Symphony, Codeignitor
* C#—ASP.net. ASP.net MVC
* Java—Spring, JSF
Here is my suggestion: I would start by learning a well-established backend framework like Ruby on Rails or Laravel. Then, when I couldn't do what I wanted to with those tools, I'd learn either React or Vue. I personally use Vue and Laravel and couldn't be happier with the combination.
The important thing is to pick something and stick with it. DO NOT JUMP AROUND. Commit to learning a stack and don't move on to learn something else until you have mastered the stack you are on. Don't be like the "musician" who switches instruments every time it gets hard. Pick something and stick to it.
A third really important piece of advice for those who want to learn web development is...
3. Don't get sucked into the new and shiny trap.
There are lots of advantages to using older, more established tools:
1. They are stable.
2. There are tons of available educational material.
3. There are many companies looking to hire people to code using these tools.
4. They usually have stayed around for a reason (because they are good.)
5. There are whole ecosystems of tools built around them.
Probably the most important piece of advice I can give people wanting to learn to code is just to...
4. Build something and put it online.
Don't get stuck in tutorial purgatory. No future employer is going to care that you watched 80 hours of treehouse videos. What they will care about is if you've actually made something.
Every bit of success I've found online came because I made things. A lot of the things I made weren't even that good. That doesn't matter. I took the learning I found and put it into practice and actually put stuff out there. I made website generators, content management systems, and online sermon management tools. None of these things made me any money, but they opened the doors for my current career.
So before I give you my list of tutorials I've found helpful, let me just say you need to take whatever you’ve learned and make something unique to you.
# Courses/Teachers to Follow
Without further ado, here are some online teachers who have helped me and who I still turn to whenever I'm learning something new:
* Laracasts: https://laracasts.com (Laravel/PHP/Vue)
* Brad Traversy: https://www.youtube.com/user/TechGuyWeb (Everything)
* Maximillian Schwarzmüller: https://academind.com (Everything)
* Coders Tape: https://www.youtube.com/channel/UCQI-Ym2rLZx52vEoqlPQMdg (Laravel)