Imagine me, an ordinary office girl, surely an outsider to codes, programming languages, frameworks, etc. Java? Python? Swift? Who are they? I don’t know. Actually, I’m a big fan of Taylor Swift but I’m not sure she’s the above Swift.
And imagine one day, I find out my heart is telling me to go after coding. I start to ask for opinions from my friends who are working as programmers. I sign up for every famous online programming course. I practice a little bit Ruby, then move to Scala, Go and maybe even Vim or Dvorak.
Time flies, when I finally get a job in software development pool, I’ll still hardly believe what I’ve gone through and how I’ve survived from that nightmare journey of learning to code. Sounds familiar? Yes, it’s tough and it’s a 4-phase path that all coders (or ever will be) must eventually face and conquer.
Now, keep calm and take a walk along the illustrating journey I draw out down there. You can’t avoid but let’s be prepared for it!
#1. The Hand-Holding Honeymoon
Simple explanation: A joyful romp through highly polished resources teaching you things that seem tricky but are still able-to-do at the same time.
How it goes: In this phase, you will primarily learn basic syntax but feel completely satisfied with your accomplishments. Firstly, you’ve heard rumors of how difficult programming is since you were in school. Then, the “Learn to Code” movement that you’ve made through tools like Codecademy, Treehouse or Code School bring you the assured feeling that you too (nah, anyone!) can become a full-fledged developer just like a piece of cake. These introductory tools do a great job of guiding you like a child in a crosswalk.
Barries are broken down, a pinky illusion is built up. Suddenly the problem turns out to be an overabundance of hopes and high expectations.
How to make it through alive: Just enjoy it, but be conscious and keep these two simple tips in mind:
- Start by trying out different resources to find out your own strengths and which types of projects you’re interested in the most. Be open-minded at the beginning, all programming languages are the same at this phase.
- Then pick out the chosen one and stick with it. Till the end of the introductory course, you will be able to write basic scripts and apps with all the foundational knowledge about software development.
#2. The Cliff of Confusion
Simple explanation: It’s a painful realization that it’s so much harder. It’s like you’ve just woke up from your sweet dream and actually, you cannot do anything on your own yet.
How it goes: The time comes after phase 1 of checking off badges and completing coding challenges while your confidence and capabilities grow, one day you sit down at your keyboard, open up your text editor, and try to build a software project without any of the fancy scaffolded code, in-browser editors, or helpful hints. Or indeed, in reality, you have to create magic from a blank text file.
This second phase, the Cliff of Confusion, is still very early. When the honeymoon ends and you are pushed off the cliff and told to fly, maybe you are just spiraling onto the rocks of frustration without knowing how to flap your wings. Even when you think you’ve finally squashed enough bugs, you’re still just getting started.
How to make it through alive: The only way to become a developer is to, well, develop. So don’t be confused too long, mark these three tips for making the transition to building on your own:
- Work with someone else, even another beginner. At Designveloper, we call it pair-programming. It’s much easier to debug a tough error when sharing two pairs of eyes.
- Read other people’s code to learn from good patterns. You wouldn’t try to become a writer without reading books as well, would you? Keep both eyes open for any problems or projects that other people have written solutions for, even they’re just the small ones.
- Start small and build constantly. Let’s not be rush, grow your experience step by step, from the bite-sized to the enormous. It’s only natural, isn’t it? You have to learn to walk before starting to run.
#3. The Desert of Despair
Simple explanation: A long and lonely journey through a pathless landscape where every direction seems right but you’re likely going in circles and starving for the suitable resources, just like a wanderer dying to find a water source in the middle of a desert. In essence, in this desert you know there’s a way out somewhere but you have no idea how to get there.
How it goes: The desert is freaking wide and fraught with dangers and mysteries. Dozens of tempting and possible solutions are dancing in front of you. There is a LOT more to learn than you probably expected and it’s hard not to feel lost in a greater scheme of becoming a true professional. Furthermore, it’s not easy at all to measure your own progress. You’ve gone quite far maybe but how do you decide exactly what you need to learn next? You might feel completely lost until that moment when you successfully finish an application that looks and acts the way you expected it to.
How to make it through alive:
- Have a strong goal for what you want to accomplish. Otherwise, you will end up chasing your tail learning all kinds of emerging or trendy codes. It’s good to catch up with trends, but it can cause a newbie like you unproductivity too, especially when you have no time to spare.
- Find a steady path which can lead you straight to the goal you’ve set. This is when you need to see deeper than the marketing slogans and smiling faces of online software development courses or book jackets and ask whether they can help you achieve the goals or not.
- Focus and avoid distractions. People say that if you’re the kind of person who’s interested in learning to code, you’re also the kind of person who gets attracted by discovering other awesome things. If you’re serious to be a software programmer, you need to be able to push forward instead of quitting and looking for fun from the next cool-looking thing.
#4. The Upswing of Awesome
Simple explanation: You finally arrive at this phase when you’ve found a path through the desert and with a pretty thorough understanding of how to build applications. But it’s not quite done yet.
How it goes: You’ve passed through the desert and your confidence is growing back. Your Google skill is excellent and you’re totally able to comprehend those advanced IT blog posts and screencasts. Looks like you’ve dived deep into a particular language or framework and you have confidence that you can build and launch a functioning application. Everything seems well on the outside but personally, you can tell that you’re not there yet. You can make that application work but what’s going on beneath the surface? Your code is duct tape and string, and the worst, you don’t even know which parts are causing the problems.
This is a bipolar phase. However, you’re learning faster and more effectively than ever before and, eventually, you will have absorbed enough practices to turn your messy pool of knowledge into a professional tool-pack for your career.
How to make it through alive:
- Seek and follow best practices for programming. There’s a big difference between a solution and the best solution. Best practices tell the major differences between hacking on your own and building productive-quality code in a real job setting.
- Check your knowledge to avoid missing some gaping holes in your knowledge that you didn’t even know you had.
- Tackle the supporting skills that are rarely addressed but really important for transitioning into a professional developing. This includes things like architecture, testing, data modeling, and deployment which are totally fundamental to good development.
Last but not least, besides the 4 phases above, remember to get feedback during your studying journey. Let’s work with other fellows to make your code legible, modular, and maintainable. If you want to go fast, go alone. If you want to go far, go together.
Truc Thuy Minh
Reference: Why learning to code is so damn hard — Erik Trautman