Ultimate Guide To Effective Learning (to become a programmer)

Practical Bro
11 min readMay 21, 2024

It’s probably one of the most valuable articles you will ever read. In this article I will tell you how to actually learn any huge skill set including the skills necessary to get to a first job in IT industry. I’ll explain to you how to create and follow a very practical and highly effective custom learning plan that I created for myself and followed for half a year. As a result, I went from an absolute beginner without a degree to getting a programming job in a large tech company in the middle of a job market crash. The right learning plan is at least 70% of getting your dream job. This plan allows you to learn programming without buying any courses, which means you can become a programmer for free, exactly as I did. You will also be able to quickly acquire any skill set and even a profession for free, which is especially relevant in this day and age of AI. This article guarantees you big results in a short period of time, which automatically means it will also require hard work. Read untill the end to learn about a secret ingredient that no one talks about that will make your learning process up to 2 times more effective. I will also give you an example of a real learning plan and explain why each part of it makes so much sense that you won’t be able to not stick to it. The goal of such a plan is to get as much result as possible, spending as little time and efforts as possible.

Why do you even need to create a learning plan by yourself? Why not to find someone else’s roadmap or buy a course that already contains a learning plan? creating a learning plan by yourself is so essential, because understanding what each part of the plan does and how effective and beneficial it is for you allows you to follow this plan easily, which means you no longer lack motivation. And if something in your plan doesn’t work, you make some changes to make the plan work. After understanding what works and what doesn’t work, you will be able to create effective learning plans for anything you want to learn in the future. Furthermore, when you get a junior developer job and start to need to learn a bunch of new things in a short period of time there will be no prepared learning plan for you. When you need to grow from a junior to a senior there will also be no such course to take. It means you will absolutely have to know how to organize learning in the right way to achieve the best results possible.

The easiest part of creating a learning plan is to figure out what you need to learn. In order to do so you can do some research and look at the requirements of job openings of your future specialization. Don’t learn what doesn’t increase your income in any way. You want to focus on learning only what’s necessary to get the job and keep the scope as narrow as possible, otherwise you won’t be able to compete. For example, you don’t need to learn things like assembly language or how an operating system works under the hood. Some people say you need to know those “foundational” topics, but they have a hard time explaining why. Those topics are excessive and will just waste your time, focus only on what’s important.

After choosing the skills you are required to have to get a job you need to understand the most important thing — how to learn effectively. This understanding will be a foundation of your learning plan. You might think you already know how to learn, but trust me, if everyone knew how to learn, no one would struggle to gain the skills needed for a programming job. The fundamentals of learning I am gonna talk about are highly-practical, and I have been using them for many years.

Practice.

Practice is by far the most important of them. A good ratio between practice and theory would be 80% to 20%. Yes, such a ratio means, that if you watch an 8-minute video about, for instance, decorators in python, you need to play with it in IDE for at least half an hour. Most people just don’t do practical exercises because it’s much harder than watching a video. As a result, such people end up in a tutorial hell — the state where they watch a lot of stuff but can’t do a damn thing in an IDE.

Spaced Repetition.

This is a crucial concept that most beginners fail to stick to and also the reason why 95% of them fail. Here’s how it works: when you first learn something, you’ll only remember it for a couple of days. But if you repeat that topic after 2 days, you’ll now remember it for the next 4 days. And if you recall it again after those 4 days, you’ll now remember it for the next 8 days. Then 16 days, 32 days, and so on. Many people say that eventually you reach the point where you remember what you learned forever, without ever repeating it again. Even though it seems unreal it is actually true, but it is not a miracle since there is a scientific explanation to it: Let’s say you repeat a topic at such a point of time that you will now remember it for the next year. If you then stop repeating the topic, there is still almost 100% chance that in the next year you will accidentally encounter this topic during your work and will have to naturally retrieve the information from your brain in order to perform a necessary action, thereby memorizing the topic even further. It becomes a cycle that results in remembering the topic for the rest of your life.

This is what people who don’t know about spaced repetition do. Let’s say they need to learn 15 key skills or big topics for getting a job. Most beginners will learn the first 9 skills, then try to learn the 10th one, simultaneously forgetting the first one. Then they learn the 11th topic at the same time they forget the second one. They get stuck only knowing 9 out of the 15 required topics or skills, and no matter how hard they try, they can’t break through that barrier of 9 topics out of 15 required, because the speed of forgetting is too high.

The reason is that they’re not using spaced repetition. They just learn things once and then move on, so they keep forgetting what they learned earlier. But if you use spaced repetition and consistently review the topics you’ve covered, you can actually learn an unlimited number of skills and topics without losing them. The most important part is that spaced repetition literally guarantees you that you will get a job, because it ensures that your skill set gets bigger every day and that it doesn’t get smaller. It continues to the point where your skill set gets a critical mass, and you become so good that your future employer can’t ignore you anymore.

For incorporating spaced repetition, you can use anki cards. Anki cards are digital flashcards used for learning and memorization. They consist of a question on the front and an answer on the back, helping you to memorize everything.

Active recall.

Active recall is a concept that comes down to the following statement: Your brain memorizes stuff not when you consume information, but when you retrieve it from your brain. For example, let’s say, if you read this article and immediately went to the next one, you will remember something about this article for the next hour or so. But if you stopped during reading from time to time and explained to yourself concepts in your own words, then you will remember almost 100% of the article for up to one week. You could achieve the same result by reading the enrire artice and then retelling it to yourself. Every time you do spaced repetition, you must focus on active recall as much as possible. Practice is very similar to active recall because you also retrieve information from your brain, and it’s a part of the reason why practice is so effective.

You are probably wondering why you would need to memorize something if you can just use ChatGPT to get a quick answer

The more useful information you encountered and memorized, the easier it is for you to understand ChatGPT answers and, most importantly, keep these answers in a short-term memory as a part of the solution of the problem you’re working on. You also understand ChatGPT answers deeper and even get ideas that were not mentioned in the answer.

Learn in parallel:

It’s better to work on learning the same 3 skills every day 1 hour a day each and focus on them for a couple of weeks in raw, rather than working on 1 skill at a time for 3 hours a day and then going to the next one. It is because of how spaced repetition works. If you don’t believe me, just try to learn stuff this way for a while and then compare this approach to any other way, and I guarantee you will be amazed by the speed of your learning.

Focus on the basics thoroughly.

Do you know the difference between professionals and amateurs? Professionals know the basics really well. Basics serve as a foundation for the next concepts you learn. For example, in order to learn React faster, you need to know JavaScript and the better you know this language, the easier it will be for you to understand React. Don’t rush, and take your time to learn the things that serve as a base for other things.

Learn every day.

After one month of learning, You will get way better results learning a subject 1 hour a day every day, rather than learning it 7 hours a day every week.

Start with 10 minutes of recalling what you learned yesterday

In the morning before starting the next day of learning take 5 minutes to recall everything you learned yesterday. It’s very effective having the first repetition within the first 24 hours after learning a topic has a very huge overall impact on retention.

The secret ingredient.

Now you have a learning plan, but what about the secret sauce? Even though all the points mentioned above fit perfectly for effective long-term learning, if you are trying to get a job, your goal is not to learn as much as possible, your goal is to get to the level where you have solid projects and where you can be successfully interviewed. In this case, the secret sauce is intensity. Check this out: In order to achieve the same level of skills in programming you need to be successfully interviewed, you can either spend 1000 hours in half a year or 1500 hours in 1 year. You see the difference? You get the same result in 1000 hours as you get in 1500 hours. This is because of how spaced repetition works: the more days go by, the more time you need to spend on spaced repetition, otherwise you won’t retain information. And if you can compress this time window you decrease the overall amount of hours you need to spend to achieve your goal, therefore you work less and get more.

Now you know that your learning plan must incorporate. Let’s take a look at how such a plan looks like using the example of becomming a python backend developer:

Each column is a day and each blue cell is at least 1 hour of focused practice-based learning. For the first month you learn python, SQL and problem-solving in parallel. These are the things that create a foundation for everything else you will learn . After that, you add the days on which you will recall what you learned so as not to forget the information. Then you start to create projects using Django and a little bit of frontend technologies to be able to set up a basic frontend to show a good project to a recruiter. You do all these in parallel, as well as learn git to develop your GitHub. You will focus on creating projects with Django until you get a job. Additionally, add the days in which you will repeat what you learned so as not to forget it. Then you learn in parallel Linux PostgreSQL and docker and finish the process with Django rest framework simultaneously with repeating everything you learned in the past. As you can see, this plan contains a lot of practice as well as space repetition, with active recall on days when you repeat the information. You also learn a bunch of things in parallel and focus on the basics first, giving a lot of time to them. You also learn every day and start every day with 10 minutes of record calling what you learned yesterday that optimizes your learning even further. And the fact that you learn for at least 4 hours a day guarantees intensity that divides the overall amount of hours you need to spend almost by two.

But how to understand what exactly to learn and what course to choose?

The short answer is that you find a free course and follow it, I personally prefer using YouTube for this purpose. Free courses usually don’t contain practical exercises, which is the most important part of learning. This is why you go and search the web for exercises, or you can do even better: when you watch a course and there is an example of a code that solves a particular problem try to come up with a similar code that solves a similar problem and try to play around with this code. It’s a really effective way to practice.

I guarantee you that by reading this article you completely wasted your time if you didn’t apply the principles mentioned above to this very article, otherwise you will just forget about it and never learn the skills mentioned here. Let me show how to apply these principles to any useful article or video you encouner. Let’s take this article, for example. If you follow my instructions for the next 5 minutes it will probably be one of the most valuable 5 minutes of your life. Firstly, take your phone and download an app called anki cards. I am not sponsored by this app in any way and I don’t have any affiliate links, so you need to search for it in the store. Step 2. Try to recall everything I talked about. Explain everything you remember to yourself in your own words. Step 3. Depending on what you recalled, open an ANKI app and create several flashcards about this article. For example: what is spaced repetition and how can I apply it? What is active recall? What’s the best ratio between practice and theory for learning for beginners? Step 4. Create a habit of opening this app every once in a while, reviewing the cards and adding more cards about everything important you learn about programming. Personally, by doing so not only did I remember everything I learned, but I also managed to completely nail the first interview of my life, even though I had never been interviewed before.

Link to my YouTube channel: https://www.youtube.com/@practical_bro

--

--

Practical Bro
0 Followers

I am a software engineer who helps others to actually get their dream job and grow further.