How to Avoid the Number One Learning Mistake: A Lack of Deliberate Practice
Accelerate your programming career by learning efficiently
So often, we don’t use our learning time wisely. We try to learn but fail to do it efficiently, so we end up demotivated and tired.
You may be familiar with the famous 10,000 Hour Rule. It states you need 10,000 hours of deliberate practice to master your craft. Many people focus on the huge number. There is less consideration of what deliberate means.
If you don’t practice deliberately, you’re wasting your time.
Deliberate practice is effective learning. It’s planned and systematic education. It focuses on small, carefully selected steps that build up a skill over time.
The sad truth is you’re probably learning ineffectively — at least some of the time.
Effective learning is hard, so we often take an easier path. In effect, we lose our precious time, get worse results, and become unmotivated. Here are some common learning mistakes we’re all guilty of and tips on how to overcome them.
Lack of Planning
You can’t reach any meaningful goal without a plan before you start learning. You need to know what skills are required and how to obtain them. Otherwise, you’ll jump from one seemingly exciting thing to the other.
Now you’re ready to do some planning. Your goal is to set specific and realistic goals. Ignore everything besides the step you’re about to take. Focus on the HTML and decide how much time you want to devote to it. It will be a ballpark guess, as you don’t yet know how complicated the material is. But it’s OK. We’re just establishing some ground rules.
Let’s say you’ve decided to spend one hour a day for two weeks on HTML, and your goal is to be able to create a well-structured website. It’s a great plan and you’re ready to start learning. If, after a week, you feel you know enough, adjust your schedule and get to CSS. Similarly, if after two weeks, you’re not yet comfortable, it’s fine. Change your strategy accordingly.
Always take it one step at a time and have a fairly detailed plan for the next week or two, as well as a bird’s-eye view of your ultimate goal.
Lack of Regularity
Practice won’t help you much if you’re not practicing regularly. Many people want to learn to code, but they say they’ve got only every second weekend to spare. Their thinking is like “I’ll spend two full days learning so that it will be 16 learning hours — on average more than an hour a day.”
Learning doesn’t work this way. In the days between your practice, you’ll forget everything. What’s more, you can’t efficiently learn for many hours straight. You’ll be too tired to benefit from the materials. There is also some evidence that sleep helps to solidify learning. You don’t want to lose that advantage, so you should learn daily and rest often.
To sum it up, it’s more efficient to learn an hour a day than seven hours once a week. Of course, if you’ve got more spare time on the weekends, use that time too. But try to devote some time to learning every day, even if on some days it’s only 15 minutes.
Lack of Focus
Lack of focus is my #1 sin. When I was learning to program for the first time, I often spent up to five or six hours a day studying. I was watching dozens of video tutorials. After a few days, I remembered nothing, but I felt like I had put a lot of effort into learning.
Why wasn’t my learning efficient? Because I wasn’t concentrated. Many times, I was watching a tutorial while cooking or scrolling Facebook. Other times, I was so focused on re-typing the code that I didn’t focus on the concepts presented or the goal of the course. Many instructors made it even worse by encouraging me to code along with them. It’s terrible advice, as most of us can’t do two things simultaneously. So when we’re typing, we’re not thinking.
You can’t fool yourself. The time you devote to learning should be all about learning.
Close all the unnecessary tabs in your browser, turn off all notifications, leave your phone in the other room. Focus solely on the task at hand. If you’re watching a video, don’t code along. Watch it, try to understand it, and then try to code by yourself. If you can’t do something, try Googling it. Consider going back to the video as a last resort.
When you’re reading a tutorial, don’t copy and paste code. Try to understand the tutorial and create the code by yourself. The more you’re focused and working on your own, the faster your progress will be.
Whenever possible, try to build things on your own. Tutorials can only get you so far. The real learning begins when you’re on your own.
Lack of Feedback
To learn effectively, we have to know if we’re making progress. We need feedback — someone or something telling us if what we’re doing is any good. This way, we can build good habits and improve.
As programmers, we’re in a comfortable position. Usually, we know we made a mistake because the code is not working as expected. So we can benefit from fast feedback loops and learn from our errors. But when we get some experience, we realize the working code is not enough. We should take care of code readability, maintainability, performance, edge cases, etc.
How can we get feedback on that? We can look for programmers who could take review our code. Maybe you know some experienced programmers who can help. Sometimes, experts offer code reviews for free on Twitter or other social media platforms. You can also look for programming groups and share your code there. Often, you’ll find many people who are eager to give you some feedback.
Don’t dread judgment. Instead, strive to get feedback. I know harsh criticism hurts, but try not to take it personally. Treat remarks as a great way to grow as a programmer.
You can get feedback in more indirect ways. When you’re solving algorithmic puzzles on sites like HackerRank or Codewars, look at other people’s solutions. Analyze how they approached problems and in what ways your code is different. You can also try implementing some popular libraries in your way. Later, compare your code and the library code. Seeing how proficient programmers solve the problems you tried to solve is a fun and effective way of learning.
Lack of Challenge
You grow when you struggle. Initially, when you’re learning to code, everything is difficult and complicated. After a few weeks of learning, some things will become trivial for you. Now you’ll need to watch out for complacency.
You’ll be tempted to watch tutorials on the same topic or do easy, repetitive tasks. I bet you’ll even find some excuses like “This other tutorial will give me a different perspective on the problem.” It’s unlikely. Usually, you don’t need a different perspective. What you need is to turn theory into practice.
You have to make a habit of challenging yourself.
I know how hard it is to challenge yourself. When I was learning, I often watched an hour-long tutorial where I knew 95% of the things being shown. It was a waste of my time and gave me a false sense of accomplishment.
You may say that doing nothing is better than doing something. It’s usually correct. But rewatching things you already know doesn’t count as doing something. You’d be better off just going for a walk. Resting is more critical to quality learning than repeating these same simple things all over again.