When you start your programming journey, you ask for recommendations from friends, colleagues or anybody who knows how to program. Either that or you just search online on how to learn programming.The recommendations would be something which you are blindly jumping into with no idea what to expect, in the hope that it will just “click”. This does works sometimes. Especially if you have a mentor to help you out, like a colleague in your company.
There are things that I found repeatable during my journey on how to learn programming. I hope this saves your time and help you learn programming faster.
If you're just starting your journey on learning to program, don't ask advises from too many people. It will not help you. Only confuse you more and could slow down your progress. People will recommend so many different ways and methods to learn or materials to use. So ask a very few people and try those methods and materials and see if it is working for you. Remember, the point is to learn and understand what is working for you, not blindly follow someone's advice. It doesn't matter how successful the person recommending something to you is. If it is not working for you just try something else. It will save you a world of time and help you not dread learning.
Another important thing I wanna talk about is the champion's bias or success bias. Champion's bias or success bias is the inability of a person to understand and think from the point of view of a beginner or novice. The champion's bias happens mainly because a person is more experienced now and forgot how it is to be a beginner. This means their recommendations and advises could be from their level of experience meaning it could waste several hours of us beginners. This effects you mainly when they recommend study materials or the course materials which will be extremely hard for you to grasp and costs you a lot of time. So always keep this in mind when you are talking to an experienced professional because teaching is a lot harder than learning things for yourself. You can always be a very good programmer and still suck at teaching.
If you have reached until this post, you probably already have a course, a material or a method that you are using to learn how to program. Like:
- Video courses: Like a Udemy course or Youtube videos .
- Exercise based learning: Like freecodecamp.org or exercism.io
- Learning through building projects.
If it's working, great! But what if it isn't? What if you really dread opening that book or that video course? People are recommending things that worked for them. It doesn't mean they will work for you too. So if the material or the the method is not working for you, it means it is an issue with the material or the method. NOT you. Find a method or material that works for you. I personally use a mix of exercises based materials, videos and learning through building as my preferred way. So try out things and if it is working, great! But if not, do not stick with it and make your life miserable. It doesn't matter who recommended it to you, if it is not working for you, it just means it is not working for you. So move on. Fail fast to learn fast.
It is common for beginners to get stuck with tutorials or exercises in loop. This is when you keep doing those exercises or going through course materials without doing anything with the information that you have learned. It can also be very hard to get out of this loop. Mainly because you will want to finish the entire course before doing anything with it. This is why course materials these days include projects after teaching you a specific topic.
Apart from building things, teaching by writing a blog post or by creating a YouTube video about what you learnt is also a great way to revise. These methods will challenge you to understand the topic you've just learned thoroughly. You will be surprised by the amount of information you are unable to explain properly when you start creating a video or starts writing a blog post. Doing this will make you learn topics thoroughly and overcome this problem.
Programming is about thinking and understanding how to do and coding is about what to do. These both are two different things. To be a bit more clear, programming is about the thought process on how to solve a problem and coding is about the syntax to write once you know how to solve the problem. We use the word coder and programmer interchangeably. But as a beginner, you should strive to be a programmer, not a coder. You should be prioritising how to be a programmer over becoming a coder. Otherwise you will know what syntax to write but won't know how to write it. Andy Harris's talk on How to begin thinking like a programmer explains this very well. I would really recommend you to watch it. It is one the best video I have come across and I re-watch it from time to time.
What I don't see people talk enough about this. It is important to be a part of a community while learning to program. freeCodeCamp has their forum and The Odin Project has a Discord server which is faster than a forum. It is very useful to be a part of a community and to get involved with the community. You will learn about different point of views and see the problems others are facing. It is also a great place for you to find help and even make friends. So I recommend you find a community while you are learning to program. It could be the community channel of your course ware, a Telegram channel, Forum or even a subreddit. But do find it cos it will help a lot in your journey instead of doing a solo ride.
Here are some of the productivity tips and advises that I found useful. Maybe it will help you too.
I always had the feeling that I have to be able to do the exercises entirely based the material I was following. Searching online was thought as something bad. So when you are stuck, it's OK to search online. About how to loop through an array, a better explanation to higher order functions. Just search online for these building blocks.
When you are on a problem or exercise and has been stuck for a while, you eventually might dread the problem. You will also end up wasting the entire day (or days) on it without being productive at all. The solution I found is to have a secondary task which you want to do when you don't feel like doing your primary task and toggle between the two. I am NOT recommending multi tasking so don't take two big projects and switch between them or don't learn two programming languages at the same time!
Find a secondary task which is inferior in importance and priority but still important enough. Like writing a blog post. The idea is to switch back to your primary task after a while. This way you have less wasted time and will be more productive.
Following a material alone won't help you learn things faster. You also have to learn when to accept failure while learning new things. So that you won't waste a whole day (or days) on one problem. Make sure you give your 100% before accepting defeat. Try go for a walk and if it's late night, sleep it off. Or like I said before, switch your task, search online for tips etc. And if nothing works, accept defeat and ask for help with the community or your friend / mentor.
freeCodeCamp: If you love exercise based learning, you will love freeCodeCamp. They are home to a lot of exercises and I use fCC to practice algorithms and data structures among other things. They also have a forum which you should be part of if you are them. They offer certifications and courses for a wide range of specialities and is free.
Exercism: This is an exercise based learning resource which cater to a wide range of languages. If you are into exercises, you will find it at home. I switch between freeCodeCamp and Exercism to practice data structures & algorithms.
Practice, practice and…… PRACTICE!
The secret sauce is practicing over and over again until you become great at programming!
If you like the content, think I am wrong about something or have any questions, drop a comment or DM me on twitter @unsungnovelty