
A few years ago I decided that I wanted to learn how to program because I would love to know how can people build video games, operating systems and of course hack into systems.
There was only one problem: I had no idea where to start. So I started doing some research trying to find out how could I learn all this but over and over I kept finding recommendations for books that felt way too advanced for me to understand them or online courses that I had no way to pay for because online payments were a foreign thing to me coming from Mozambique(the exchange rates weren’t that pleasant either).
Those limitations forced me to find the best free alternatives to learning all this.
So by the end of this article you will know the 3 steps that I still use to this day in order to learn how to code for free. I have been doing this for over 6 years at this point and it has helped me a ton!
Let’s jump into it.
1 – Start with the basics

I believe that this is the most important step in this whole process. If you don’t learn the basics at the start then you’ll be adding hours and hours of confusion through your learning process.
Learning the basics first allows you to get an understanding for how things work in a specific programming language, framework or library. Learning this will help you find out what is and what isn’t possible when using that tool, how can you approach problems when using this tool.
As time goes by you will perform this step faster and faster because you will have gathered enough experience that you can spot familiar patterns in different tools.
In this step you will be learning things such as syntax, control structures(if statements, for loops, etc), a pattern(in the case of frameworks) and more of the underlying logic of a tool.
Some great resources for this are on websites such as codecademy(https://www.codecademy.com/) or YouTube channels such as sentdex(https://www.youtube.com/user/sentdex) to mention a few.
Most things you’ll be able to learn for free on the internet(unless you are using some obscure tool that is super specific to a field) and once you finish the beginners section of these tutorials and/or free courses, don’t go on and read the advanced book on it or continue on to the 20 hour advanced course.
Stop and follow step 2.
2 – Practice

“Practice makes perfect”. If for some reason you’re not going to read this whole article that is the main take away on this whole post. Reading about programming won’t turn you into a good programmer, talking about programming won’t make you a good programmer, watching tutorials about programming won’t….you get it.
None of those things will help you become a (better)programmer if they aren’t accompanied by practice, that’s why I advise you to practice what you learned right away. This will ensure that the knowledge you gathered throughout your classes get burned into your brain.
This is what I do at this stage, I think of something that I can build using what I have just learned. If I just learned about SQL then I’ll try to think of an idea such as a Census database with some interesting queries. If I just learned how to use Vue.js then maybe I’ll build Trello copycat.
After selecting what I would like to work on, I start on it and then the tough but necessary part comes, I start to run into bugs, get errors that take me hours or days even to solve. Issues that make me want to just give up coding all together(yeah, it’s not very fun) but there’s one “secret” that I’ve learned over the years and that’s the fact that almost every single problem that you and I will go through has already been seen and solved by someone else. This means that you will most likely find the solution somewhere deep in Stackoverflow or on a Github issues page and if you don’t find it there but you manage to solve it on your own…oh boy, you’ll experience the satisfaction that programming can give you. The feeling you get after solving a bug that you have been stuck on for hours and hours is amazing.
So now that you have practiced and you have gone through the fire, what should you do next?
3- Improve

At this stage you’ll be getting comfortable with the tool you are using but you probably won’t be at expert level. Since you have already gone through a lot by actually using the tool you’ll know of most of its quirks and features.
This is the time where you actually go back to step 1 and move up a level, watch more advanced tutorials, read the official documentation(something I had always been scared of doing) but most importantly, when you reach this step, you should be able to start looking back at the code you wrote in the previous steps and see how can you improve it already.
That’s why it’s so important to jump in as soon as possible, because no matter how much preparation you do, you will make mistakes and you will run into issues as you are learning. Another major advice is to fail hard and fast, you’ll learn a lot more in that process.
This article didn’t have a lot of specifics regarding programming technologies because I wanted to tell you about the correct mindset you should have when learning how to code. Look, this is not an easy thing to do and it will be frustrating from time to time, but it pays off both financially and mentally.
You’ll be learning a skill that is highly desirable by employers, a skill that can land you a high-paying job but also, a skill that will challenge and stimulate your brain.
So, I wish you all good luck learning how to code and as always, if you need any help, feel free to contact me anywhere you find me and I’ll try my best to help out.
Thanks for reading. 😀