Imagine me, an ordinary office girl, surely an outsider to codes, computer 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. So how to become a coder in this century?
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 of Ruby, then move to Scala, Go, and maybe even Vim or Dvorak.

Time flies, and when I finally get a job in the software development pool, I’ll still hardly believe what I’ve gone through and how I’ve survived 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!

A joyful romp through highly polished resources teaches you things that seem tricky but are still able to do at the same time.
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 brings 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.
Just enjoy it, but be conscious and keep these two simple tips in mind:
It’s a painful realization that it’s so much harder. It’s like you’ve just woken up from your sweet dream and actually, you cannot do anything on your own yet.
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 work on a software development 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.
The only way to become a developer is to, well, develop. So don’t be confused for too long, mark these three tips for making the transition to building on your own:

A long and lonely journey through a pathless landscape where every direction seems right but you’re likely going in circles and starving for 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.
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 the 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.
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.

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 practice to turn your messy pool of knowledge into a professional tool-pack for your career.

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