So you’re convinced that learning web development might be cool but you literally have no idea what even
I do a good job of convincing my friends that they can and should learn web development, and so I often get asked how. Free and not free resources abound for learning, but they tend to be a little showing-the-trees instead of showing a map of the forest. My friends want a map of the forest.
There are lots of paths through this forest. Just as there are lots of reasons to learn web development. My favorite reason to learn web development, though, is EMPOWERMENT. Having the ability to make a website, slap it on the internet, and share it with the entire world? I AM AMAZING. That’s how it makes me feel. I want everyone to have that feel.
So the path that I recommend is one to maximize this feeling of empowerment, while delaying the bits that tend to make everyone feel like an inferior imposter dimwit. I call it the Path Of Most Empowerment, or POME. I don’t intend this path to stay as-is forever. The trees grow and the forest changes and every six months it seems like the specifics of this path change. Maybe I’ll keep this article updated, maybe I won’t. But the main crux is that you should learn in a way that makes you feel awesome, and empowered, and makes you want to explore more.
Don’t misunderstand! There are times in these woods when everyone feels like an inferior imposter dimwit! I’ve been making websites professionally since 2010, and I certainly still feel like that sometimes. So do my teammates, who have been coding much longer than me. I think it builds character, to become comfortable with staring into the enigma void, scratching one’s head. Usually, once you finally track down the problem, it will be a typo. These damn computers, made out of carefully organized sand, are dreadfully pedantic and unforgiving.
So without further ado, the POME
When you learn Ruby, everyone will try to teach you Rails. Honestly, I don’t recommend learning it yet, though. If Ruby is your first real programming language (HTML and CSS don’t qualify), I think you should just learn some Ruby and have fun with it. It’s a fun language! Humans can learn to think in it](http://mislav.uniqpath.com/poignant-guide/). And once you’ve learned a little Ruby (this probably won’t take as long as learning HTML & CSS did), I recommend you make toy websites with Middleman. I use Middleman for not-toy websites like Why Believe and A Series Of Pipes. It’s a really great little framework for building static sites. So when I say “build toy sites”, maybe you can leave out the “toy”.
Along that path you’ll probably see other things that you want to learn. Go ahead and get distracted. Learn other things. Regular expressions? Sure. Markdown? Definitely. The Foundation and Bootstrap CSS frameworks? Build toy sites with each of them. Terminal/the command line/shell/bash? Don’t fear it. Learn it. It will be your best friend.
Once you’ve got all that, you’ll probably be gunning to make fully-interactive sites (websites where people can log in and maybe interact with other logged-in people, or play a game, or whatever). But I urge you! Pause. And learn git. You must have git from here on out. You may not understand why before learning it, but this is the one time when I’ll tell you that you should push through and do it anyway. After building all of those (toy?) websites, you will have caused yourself some pain. You will wish you can go back to how it was yesterday. You will wish you’d made a backup of files. Git will empower you to turn back time, to make changes boldly, and stop worrying so much. If you haven’t learned Terminal/the command line/shell yet, do it now. Learn to use git on the command line. Ruby might be an oven. HTML might be a knife, and CSS a cutting board. But Terminal and git are the kitchen itself.
Once you’ve got all that, go ahead and learn about databases. Learn SQL. I learned it from W3 Schools back when I taught myself in 2008, and I haven’t really seen any better resources come along.
Databases are the last piece you need, I think, for Rails to really make sense when you learn it. So once you have all of that stuff down, go ahead and learn Rails. Rails will let you make interactive websites, meaning websites like Facebook, Twitter, or Google. Any site that isn’t just a blog. Hell yeah!
Have fun. Go build silly things, and weird things, and amazing things. I can’t wait to see what you make.