7 Steps to Learn Any New Programming Language Super Quick
The ten thousand hours rule is dead
To hell the ten thousand hours rule. You don’t need that much time to become a good coder.
Actually, you don’t need that much to learn any new skill, as Josh Kaufman taught me in his incredible book “The First 20 Hours: How to Learn Anything . . . Fast”.
In fact, the famous rule of the ten thousand hours needed to master a skill, as theorized by journalist Malcolm Gladwell, only refers to world-class performance. So yes, you can learn to play “good enough” guitar in 20 hours as Kaufman affirms, but you will need a lifetime to become Jimi Hendrix.
I was so fascinated by the concept of rapid skill acquisition, that I decided to write this article. And explain, following what I learned, how you can learn to code “good enough” a new language in just 20 hours, without making learning your only activity for years.
Let’s analyze the 7 principles to make this possible.
Choose a Lovable Project
The best thing that can happen to a human being is to find a problem, to fall in love with that problem, and to live trying to solve that problem unless another problem even more lovable appears.
These words, pronounced by Karl Popper, should turn on a fire inside you when it comes to learning to code. If you don’t feel like or are not 100% passionate about this skill, then trying to learn to code might be a waste of time.
Only passion and a burning desire to succeed lead to rapid skill acquisition. So first, ask yourself: is that your case?
Focus Your Energy on One Skill at A Time
Another super important principle. If you want to learn to write code, speak Spanish and play the Ukulele, I’m sorry but you should only choose one skill. Why? because if you only have one hour a day to practice, splitting that into multiple learning processes won’t help you to gain any significant improvement.
Every new skill is egoistic by nature, it demands and needs all of your attention.
Define Your Target Performance Level
This is one fantastic point the author makes. Again, you don’t need to know everything about a skill. You don’t need to learn every part of a coding language. That would be humanly impossible.
What you want to do instead is to define a basic level of skill you want to achieve and describe what you will be able to do once you reach such a level.
Don’t say: “I want to learn web development.”
Instead, say: “I want to be able to fully code a multi-page app with HTML & CSS. Once I reach my target goal, I will be able to replicate easily to medium difficulty level websites.”
And don’t forget, you’re not trying to act under world-mastery levels here. What you want to do is to define a goal that feels just out of reach, and after that, you can continuously improve your skills after the first 20 hours.
Deconstruct the Skill Into Subskills
This is my favorite part of rapid skill acquisition. Instead of throwing yourself blindly into learning to code, why don’t you divide the skill itself into subskills?
In this way, you can identify precisely what you’ll need to reach your “good enough” level. Also, this will help you clarify which subskills should be mastered first and which will have the most significant impact on you.
For example, if you want to learn how to make a website, the possible subskills can be:
- Know the most important HTML tags and how to structure them in a file.
- Know the most important CSS rules and how to apply them.
- Understand how to create basic animations.
- Understand Grid and Flexbox to make your code slimmer.
You can already see which subskills will have the most prominent impact from this list: knowing the most important HTML tags and CSS rules. The other two points should have less priority as they will impact your rapid skill acquisition process less.
Eliminate Barriers to Practice
Once you have your laptop ready, your focus should be fully dedicated to your skill acquisition process. This means no social media, no Netflix, and no distractions at all.
Another big obstacle for your learning is to find the time for it. Many people complain saying: “I will do it when I find the time!”.
Nobody finds time miraculously every day. You have to make it. So if you really care about succeeding, dedicated some time slots of your day for your learning.
A significant suggestion I can give you is to monitor your time using an app like Clockify. You will be horrified at how much time you spend on futile activities and how much of that time could be cut off and used for something valuable.
Also, you don’t have to spend three hours in a row dedicated to learning something. Small bursts of practice split in a day are the most effective, as you can really be sure you’re giving everything you’ve got on learning a skill.
Again, monitor your time. You will be surprised by how much two 40 minutes laser-focused study sessions a day can do in the long run for you.
Get Fast Feedback
Studying the theory behind a skill is only beneficial to know how to self-correct and monitor yourself while you practice such skill. So once you have down the basics of the syntax of a language and how to structure a project, jump immediately into creating projects.
Practice practice practice. That’s the only way to master a skill. And the fastest you can get feedback on how you’re doing, the fastest you will learn such skills.
This is not a problem with coding since the code itself will give you feedback. If something is wrong, the code simply won’t work, and you will have to understand why.
Prefer Quantity Over Quality
When you start writing code, you will be tempted to write perfect programs respecting all the best practices known to developers since 1980.
However, during your learning process, this can be a giant trap.
Instead of spending your first hours theorizing the best way to write a big project, focus on practicing as much as you can while still maintaining a “good enough form”.
Don’t write a single, monolithic website after 300 hours of coding. Write 20 of them where you spent 10 hours on each.
Quantity is itself a process to quality because it leads to practice and piling up your errors while learning from them.
Learning a new skill is hard, especially coding. But if there’s something I’ve learned from the words of Josh Kaufman, is that you don’t have to dedicate your entire life to learning something to be “good enough” at it.
There is a fast lane to learning to code; you just need to follow the right steps to it.
His words resonated with my past experiences and feelings, and I hope mine will do the same with you.
Thanks for reading,