No matter if you are a beginner or already an expert, being a programmer means constant learning. Sure, when you know the essential concepts and the most important frameworks and libraries you can probably slow down a bit and enjoy the routine, but things change pretty quickly in the computer world and even completely new programming languages show up. If you want to stay ahead of the curve, you should commit yourself to a life of learning and not let procrastination and laziness undermine your success. Besides that, doing the same things every day gets boring pretty quickly and is one of main reasons people feel like 20 years of their life fly by in the blink of an eye. Learning is great and fulfilling. If you dread new challenges, make sure to read my growth mindset blog post.
That being said, it’s still wise to try to be as efficient as possible about it. There is no point in learning slowly or without an aim. So let’s take a look at some tips that help you learn faster, and this way have more time for other stuff in your life (or for more learning). These tips apply to beginners as well as experienced developers, because the only difference between these two groups is what they should learn, not how they should learn.
An important note: There is one overarching point in this post: execution. I wont make it a separate paragraph, because it’s really the basis of everything else mentioned here. The only way to learn programming is by writing a lot of code, not by just reading about it. So let’s build on this:
I think teaching someone else is the absolute best way to learn. I started making Youtube tutorials when I knew almost nothing about programming, by turning the stuff I learned into video explanations. I started with easy concepts, like how to make a button do some simple functionality, and then I gradually researched more and more complex topics. When I felt like I understood a concept well enough to explain it, I made a video about it. Again and again. Because I wanted my tutorials to be understandable and not teach any wrong or outdated stuff, I had to research very thoroughly and arrange all the concepts into an organized and logical order. This way I not only cemented my knowledge, but also found out where I had gaps and where I didn’t understand something completely. If I couldn’t explain a concept or describe why I was writing a particular piece of code, it was a sign for me that my approach was not 100% correct, that I had redundant code or that it was just outdated.
When you make tutorials, you also have to build these projects, so it perfectly implements learning by doing. Building apps and tools by itself is great, but often it just causes you do “not touch” any code that works, in fear of breaking it, and that’s probably not the best way to learn. You often don’t dig very deep and might be inclined to just copy a piece of code from somewhere else, without questioning what exactly it does.
You don’t have to make videos if you don’t want to. You can also start a blog and create your tutorials in text form. But you should do some form of teaching, because it will deepen your knowledge, it lets you help others, and it will also help you market yourself. But please don’t just copy your code from somewhere else like some programming bloggers do. When I search for examples online, I often see the exact same code over and over again. Some tutorial creators just copy the code from the documentation or official examples and only change some variable names. And if there’s a mistake in these official examples, the same mistake appears all throughout these copy paste tutorials. Don’t do that. It’s easy short term, but it won’t make you a better programmer. Instead work with the code, think about it, try to find mistakes in it and ways to improve it. This will ultimately benefit you the most.
If you neither want to make videos, nor write blog posts, you can also explain programming concepts to friends or family members. You can even teach your pet, because in the end it’s about you understanding these concepts better, not so much about who you teach to.
All practice is not the same. If what you are doing feels very comfortable, it’s probably not that effective. Sitting down and reading a book is good before bed or when you just want to relax a bit, but if you want to become a better programmer, you should regularly seek out more challenging ways of learning. If something is too easy, it either means that you already know (the most part of) it, or that you don’t really have to engage with it, in which case your brain will probably forget about it pretty quickly. I tried learning the basics of Java by reading a beginner book and even though I thought I understood the concepts while I was reading it, when it was time to write actual code my mind went blank and I remembered absolutely nothing about the syntax. It just doesn’t work like that.
So what do you do instead? You actively pick the things that are hard to understand and hard to implement, because they will teach you the most, and then you apply them as quickly as possible. You will not only learn how to implement that particular feature, but also how to figure out how to implement it. How to get to a solution by reading other examples, drawing your own conclusions and connecting the dots. When I prepare a new tutorial, I never find the code ready in the way I want to use it in my video. It always either misses something, contains wrong, outdated or redundant parts or is just not written in a way I want to have it in my tutorial, for example when it is too complicated. Besides that I also have to figure out what every piece of code does, so I can explain it properly, which in turn means that I have to research each part separately and then put the single fragments together in my head. That’s hard, but it also helps me progress quickly. Just make sure you learn things that will benefit you in some way later on, because there’s no point in wasting time with unimportant stuff.
Try to learn a little bit every day, it is much more effective than cramming for long hours from time to time followed by a week of inactivity. Cramming will just build short-term memory, from which you will forget the biggest part pretty quickly. It makes you think that you’ve learned something, but it’s really just temporary. There are plenty of studies out there that show how ineffective cramming is when it comes to learning, but I won’t link any of them here because we don’t even need to make it that scientific. I think we all know that cramming is not a good long-term strategy, because we all have done it in the past. I got my business degree with cramming and I can tell you that I remember absolutely nothing from it.
Try to make your learning sessions a habit by doing them at the same place at the same time. Habits make it easier to execute tasks, because instead of consciously deciding what you want to do based on your emotions in this particular moment, your brain goes into autopilot mode and just does what it’s trained to do. A habit causes less decision fatigue and costs less willpower than an activity that is done irregularly. Besides that you will build momentum and streaks that will give you an extra boost of motivation. If you want to learn more about habits, check out the great book “The Power of Habit” by Charles Duhigg.
So when in the day should you practice? The best time is usually as early as possible, even if you think that you are a “night person”. The more of the day has passed, the more your brain is already fatigued and the less willpower you have to do something difficult.
Take regular breaks
Breaks are important to keep a clear mind. But when I talk about breaks, I mainly mean breaks between learning sessions within a single day. I don’t think you have to take whole days off if you don’t want to, but if this helps you staying motivated, then go ahead. Just make sure that your break doesn’t turn into 2 months of no programming.
As I already explained in a separate blog post, I am not a fan of the Pomodoro Technique when it comes to coding, because it breaks the flow state pretty much in every session. However, you should still take breaks from time to time to make sure that you get some distance from a problem and let your subconscious mind work on it. When I am stuck with a problem, a short break often helps wonders. And I regularly have my biggest insights after leaving the gym.
When should you take a break? After 90 minutes of work your brain will be pretty exhausted and this is a good time to relax for 20-30 minutes. However, I think it can make sense to keep working beyond that if you are in the flow state and everything is going well. I tried different frequencies, and at the moment I just take a break when I feel like I am stuck, or when I start pondering too much about simple problems. Just make sure that your 20 minute break doesn’t turn into 3 hours of procrastination.
Ask a lot of questions
Asking someone else about a coding problem can really help you get unstuck, you just have to ask the right questions at the right place. Always keep in mind that others value their time, so the chances of getting an answer when you overwhelm people with a huge problem, are very slim. Instead prepare your questions and narrow them down as much as you can. Always start by searching autonomously, and make sure to read my How to Use Google to Solve Your Programming Questions blog post, so you know how to do that properly. Do as much preparation as you can and then ask short and specific questions that are easily understandable. People love showing their knowledge by answering questions, because it makes them proud and feel competent, but they don’t want to do all the tedious work for you. Tap into that by making answering your questions as easy as possible.
But where should you ask your questions? You probably already know that you get the highest quality answers on Stackoverflow, but the guys over there are also very painstaking when it comes to question quality (which is a good thing). You only want to ask there if you know that you have a difficult problem, that the answer is hard to find and that the same question hasn’t been asked like that before on Stackoverflow. But of course there are more boards and websites out there where you can ask your questions to other developers, and I have listed some of them in a separate blog post.
Ok, those are my main points for learning programming quickly. Of course there is more you can do, like sleeping enough and eating the right food, but you probably already know these general tips. If you have some more ideas on how to learn quickly, I am interested in reading about them in the comments! Good luck on your journey!