If you’re reading this, you’ve probably already encountered a Call to Adventure and typed ‘yes’ to continue. You might have even defeated a few Threshold Guardians, likely in the form of a FizzBuzz challenge, problems involving pangrams, anagrams and palindromes, or figuring out if your developer friends are really talking about their work or have burst into an impromptu recitation of Jabberwocky. You’re ready to enter the strange and otherworldly Land of Adventure, and I’ll do my best to sketch a map for you, though I must warn you that it will be quite small and full of dragons.
Choose Your Path
So you’ve decided that you want to be a web developer, but you need to be a little more specific in your quest for transfiguration. Figure out what you want to specialize in. Is it frontend development? Or do you think you’d get along better with servers and databases? Which language most appeals to you? Is there a framework that you find interesting and sufficiently approachable? (If you haven’t tried any frameworks yet, you can learn the basics of Bootstrap, ReactJS, AngularJS, and Ruby on Rails on Codecademy.)
You should make these decisions early on and stand by them, otherwise you’ll get overwhelmed by all the options and end up a jumble of unrelated parts that don’t even add up to a half-functional chimera. Don’t be afraid of making the wrong choice - you can start over if you realise that it doesn’t suit you after all, but it’s important to only take one path at a time.
A good place to start in order to get a feel for the possibilities would be bento.io, which curates assorted learning resources from around the internet. Take a look at its (somewhat un)helpfully colour-coded topics page and start wherever you feel most comfortable. Personally, I suggest either Fundamentals or Front End, but feel free to ignore that and pick whatever sounds good to you. Or, if you’re not sure what you’re most at ease with and can’t decide where to start, try David Malan’s CS50, which will be demanding (the problem sets are pretty thorny and they’re not joking when they say each set takes about 10-20 hours to complete), but also highly rewarding.
Seek the Man Behind the Curtain
Once you’ve made the initial choices and started down your Road of Trials, try to keep in mind that behind every towering creature’s blazing eyes and snapping jaws there hide a few small, easily graspable core concepts. It may roar impressively about inverted indices, edge ngrams, or case folding, but when you overcome your fear and come closer to investigate, you’ll always find a non-threatening and familiar element, something you can build upon. For example, you’ve definitely seen an inverted index before, at the end of most books. It’s a list of relevant words in that book and their locations. Take that piece and, with it in mind, go back to the documentation and try to understand it in its new context. Find a tutorial for beginners, as there is always at least one of those out there. As a last resort, after you’ve taken some time to carefully narrow down your problem and phrase your questions clearly, you can ask the developer community, and someone will most likely help you.
The most common issues I’ve faced that fall under this category have actually had to do with implementing mathematical operations when solving various algorithm-related challenges. As I don’t have a background in mathematics, both the terms used and the mathematical notation were pretty cryptic to me and I usually needed help understanding the requirements of the problem. If you run into this issue a lot as well, Khan Academy’s math section will save you every time - they are very fond of taking concepts and formulae and not only explaining each component clearly, but also bringing to light the small, hidden assumptions that are usually glossed over when explaining such topics. A word of caution: you might find yourself watching things like ‘The beauty of algebra’ purely for entertainment and then there will really be no hope for you - you’ll never willingly return to your ordinary life, where you can’t express abstractions in code and see how they apply to any number of unrelated concrete things.
What I’m saying is that, essentially, you’ll never ever find a beast that you can’t tame to serve your own purposes, no matter how terrible and fierce it looks at first.
There’s the Hard Way and the Hard Way
As you walk this path, you will often be tempted by quick solutions - a song frequently sung by the Siren of Copying and Pasting Code You Don't Understand - and other such easy shortcuts. If you’re taking an online class that includes problem sets and a final project (like the previously mentioned CS50), you might feel inclined to skip those - after all, you’ve watched the classes, so you’ve absorbed the information and are now perfectly equipped to move on to the next stage.
Or, if you’re taking Khan Academy’s programming classes, which include challenges after almost every lesson, you might just lazily fill in the gaps with the hints they offer and move on. This is learning, right?
As you probably suspect, the above is your dark side speaking, and you mustn’t listen to it. It’s very important that you build your understanding slowly and carefully and only move on to the next step after fully mastering the current one. Complete each tutorial, preferably twice - the second time without relying on the hints. Write down questions if you have any and look up the answers later. Do your best to finish all the tasks required of you, even if they seem too easy/too hard/[fill in preferred excuse here]. Rushing through lessons is a lot like going deeper into the monster’s lair without making sure the minions you’ve come across so far are dead - you can count on the fact that they’ll show up again for future fights, and you might not be able to win against these odds.
Find Your Heroic Spirit
The hard way is, well, hard. Every small victory takes effort and is paid for in frustration, misery, and the occasional breakdown over the havoc wreaked by a set of misplaced brackets somewhere deep inside your code. You’ll always come out the other side wild-eyed, raving, and more than a little bit bruised, but better than you went in. And every now and then there’ll be that perfect golden moment when you just know exactly how to solve a devilishly tricky puzzle, or when you’ve finally put the finishing touches on a web application that you’ve built yourself from scratch, which will make up for everything thrice over. Be patient and persevere, as it will definitely pay off in the end.
This is a Cycle
For those hoping that one quest is all it takes to reach the end of the journey, I have some bad news.
The journey never ends.
You never overthrow the final archvillain and live peacefully and prosperously ever after. The prospect of entering this infinite loop might seem daunting right now, but, in fact, all you need to keep in mind at any given point is that there should be a fine balance between the challenges you choose and the skills you currently possess - if the challenges are too hard, you’ll feel frustrated, and if they’re too easy, you’ll get bored.
If you’re stuck in one of these states right now, analyse your situation and readjust - find the Goldilocks zone where the problems you’re trying to solve are slightly harder than the ones you’re comfortable with, which is where optimal growth happens (and, reportedly, also where happiness resides). Do your best to maintain this equilibrium as much as possible, and every time you feel overwhelmed or tired, recalibrate and start again. Never break the loop, only continue :). Because this is, in fact, how you become a web developer - gradually and then continually, evolving at your own pace, as this is, after all, your own adventure.