Raise your hand if you’ve flirted with the idea of joining the new cool kids and learn how to code.
Everyone is boarding the programming gravy train. It’s a journey that resembles a roller coaster with highs of genius and low lows of frustration. Let’s have a quick look at the what causes these high highs and low lows:
PHASE 1: DELUSIONAL OPTIMISM PERIOD
Learning to code will trigger deep limiting beliefs, self-doubt, fear of failure and thoughts of “not being that kind of person”.
Once upon a time, programming was the exclusive domain of lonely geeks. But that view is as outdated as the story that the earth is flat and the sun revolves around the earth. Hollywood scenes of hackers staring into dark screens and deciphering code were partly responsible for the old view. And the stereotype of a supernatural genius with inch-thick glasses didn’t help either. But the latest incarnation of programmers is college-aged kids hacking together Billion dollar companies. It became popular, accessible and even necessary almost overnight.
This trend has provoked many to tempt fate with entry-level tools like Codecademy, Treehouse, and Code School. But wait, what happens when these training wheels come off? When, after learning the dry syntax and basic theories, you have to survive on your own.
Learning how to code begins with training wheels in the safe Delusional Optimism phase. It’s followed by the Abyss of Confusion as you build an application without hand-holding. Frustration reaches its peak in the Savannah of Death as confidence ebbs and helpful resources dwindle. The few that don’t surrender reach the last phase: Glimmer of Hope. Competence is at an all-time high by this stage and confidence returns albeit shaky.
The different stages look like this –
1. Delusional Optimism: Yay! You made your first Tetris game on Khan Academy, made a yellow box with your CSS skills, and you’re getting comfortable with conditional statements and assigning variables in Ruby. The training wheels are working and you cruise by.
3. Savannah of Death: This is when the torture takes place. Distractions are plenty, rabbit holes tempting, productivity screeches to a halt. Where is guidance when you need it? Where is that one resource that can teach you all you need?
4. Glimmer of Hope: The different components of building an application become clear. The code is far from polished, but you know it works. You’re afraid to experiment lest you touch something and bring it all crashing down. Production-ready code is still a distance away.
So let’s take a step-by-step exploration of this process.
PHASE 2: ABYSS OF CONFUSION
Confidence grows in the Delusional Optimism period as you earn morale boosting Treehouse and Khan Academy badges and stickers. You say, “Why the hell is everyone complaining about how hard this is?”
Reality isn’t that kind. Old limiting beliefs come back to haunt many aspiring learners as excuses run rampant.
The Abyss of Confusion starts as you stop relying on the comfort of in-browser coding, hints, and stickers.You build your first projects using real tools like editors and configuring environments. The training wheels are officially off. Time to find balance on your own, or fail.
You stare at that blank text file and it stares back, your command line looks bare, your confidence gauge inches closer to a ‘0’.
The coding officially begins! Like a soldier marching into the unknown, you pull together a just-about-functioning program. You make first contact with the world of bugs! Pesky bugs begin to invade your work like ants attacking a half-eaten sandwich in the park. The only thing saving you is lucky Googling and the power of StackOverflow. The Gods of StackOverflow have granted you a new life once more.
You yearn for a safe world of guided tutorials and handholding instead of an unpredictable journey where so much can go wrong. The scary part is that it only gets worse from here. Many students quit, but the brave survivors renew their pledges to march on. The promise of a new life, either entrepreneurial or a job is still alluring. The chasm of no return has officially been reached.
Little do these brave souls know that the Savannah of Death awaits them. But before we discuss the Savannah of Death there are two things worth noting — the Avalanche of Resources and Depth of Knowledge.
First issue: Avalanche of Resources
“Learning to code” is a trending topic and 1.3 BILLION Google results proves it’s an avalanche. This benefit is short-lived, however, because the 1.3 Billion dwindles to a trickle as you finish the easy part and start on your own. You don’t even know what to look for so resources are scarce in the Savannah of Death. You’re forced to learn how to ask the right questions and rely on industry-specific tutorials, guides, and screencasts.
Second issue: Depth of Knowledge
This is about the different topics you need to learn at each point during the journey.
It starts with a trickle; basic syntax usually comes first along with fundamentals like loops, recursion, conditionals, regular expressions and so on. The waters are still shallow at this stage because there isn’t much to explore.
The shallow waters become a swamp with many uncool topics as you try to figure out when to do what you already know. To make matters worse, there is often no obvious or “correct” answer.
PHASE 3: SAVANNAH OF DEATH
As you progress into the Savannah of Death, the quantity of things you need to know gets overwhelming. You need a solid understanding of CS fundamentals, object-orientation, best practice and style (low WTFs/min), and learn how to ask for help.
As Donald Rumsfeld once put it, “there are some things we don’t know that we don’t know.” You’ll feel like you know you are missing something but not sure what. The Savannah only ends, not when you know EVERYTHING, but when you get a glimpse of what you don’t know.
This part sucks most because the quantity of stuff to learn goes up at exactly the moment resources disappear (no Treehouse or Lynda here). The pain of not knowing what you need to learn or even if you’re on the right track can make you question yourself. Why the hell go on with this pain?!
PHASE 4: GLIMMER OF HOPE
You begin to understand larger concepts, confidence is at an all-time high. You’re a Googling Master and convoluted terminology and ideas that numbed your brain begin to make sense. Hope at last!
It looks great on the outside because things are working, but the mission is not over. Your code would still make a veteran developer squeal. You’ve come far, but still lack the professional qualities to survive in the real world. You feel like you could be exposed as a fake, a pretender, a fraud!
Fear not, momentum is on your side at this point — it’s harder to fail than succeed. By now you know enough to earn a job as a junior developer and get paid to learn on the job. Even better, begin another crazy journey into the jungle of entrepreneurship.
HOW TO SURVIVE
Having suffered myself, I am intimately familiar with the learning curve of a beginner. There are a few ways to speed up the process and avoid weeks/months of frustration.
Begin by building FULL applications using guided online tutorials
You’ll get a zoomed out view of an application with all its components, integrations, broad topics, subtopics, details etc. Start big and then zoom into the details to learn more. Starting with details (dry syntax) can be overwhelming to beginners with no framework to tie ideas together. Also, building a complete application will give you an early victory that generates momentum.
Don’t get fooled by simple tutorials
They are an excellent start, but that’s it. You’ll need to take off the trainer wheels, wean yourself off the pacifier and go out on your own. You can do this by reading professional grade code. The same way a writer reads, you must read code to develop your skills.
Continue building small projects and applications and seek resources that will help fill in the gaps.
Shiny Object Syndrome: Don’t get derailed by quantity of resources
Chasing every resource that offers to help you will spread you too thin to focus on something that matters. One shiny object will promise to deliver results that sound too good to be true and then another … and another before you realize you’ve run in circles with nothing to show for your effort.
A Solution vs THE Best Solution
Building production quality code in a real job setting or for a project with entrepreneurial ambitions will need that you produce the best solution rather than just a solution. You’ll need to read quality code to evolve into a badass programmer.
Don’t forget the unpopular skills
Data modeling, basic architecture, deployment, testing are important skills that are easy to avoid but absolutely crucial.
Frustrations will pass, bugs will get defeated, and new concepts will be understood. A person with a strong enough ‘why’ will have a higher chance of success than a passive learner trying to enhance a resume.