In today’s world, learning is easier than ever. Just a few clicks, and you see numerous tutorials and courses on how to master any skill—coding included. But despite this abundance, why do so many learners still struggle? As an educator for over a decade, I’ve seen the difference between those who succeed and those who get stuck in the endless loop of tutorials. The real key isn’t in what you learn but in how you approach learning.
There’s a popular idea that you need 10,000 hours to master something, which can be discouraging for beginners. While it is true if you aim to become a Michael Jordan, however, Josh Kaufman’s popular TED talk challenges this idea, stating that it takes about 20 hours to become functionally competent at something. This doesn’t mean you will master a skill in 20 hours, but you can reach a level of functionality and know if something is your cup of tea. The key is focusing those 20 hours on learning specific skills with clear goals and implementing knowledge non-passively.
Focus and intention set effective and ineffective learning apart from each other. Take, for example, someone trying to learn how to play tennis. A bad learner might casually hit the ball around, hoping to improve by playing for fun. They don’t focus on their grip, footwork, or technique, so they don’t see much progress. In contrast, a good learner approaches each practice with a specific goal—working on their serve, refining their backhand, or improving their footwork. In addition, a good coach would make the learner understand the significance of footwork in the larger scheme of tennis things. With a clear goal and intentional practice, the good learner sees faster and more consistent results.
Putting knowledge into practice is equally important. One person might spend hours reading the driving manual and memorizing the rules of the road but never get behind the wheel. Another person might spend the same time in a car, practicing on real streets and learning to navigate in different situations. The latter is much more likely to become a confident driver because they actively apply their learning in real-world conditions.
Spending 20 focused hours isn’t easy. Many struggle to keep practicing and applying that knowledge. This challenge is universal, regardless of age or experience. As someone who has spent years teaching computer science in a university setting, I’ve realized that the principles of good learning do not change much between children and adults. While it may seem like these two groups approach learning differently, motivation and relevance are key for both. Whether it is a freshman just starting to explore the basics of programming or a seasoned professional returning to upskill, the common thread is that the content must connect to something meaningful.
I’ve observed students often struggling with abstract concepts. When the material is presented in a vacuum—like teaching data structures without showing how they’re used in real software as a solution to a problem—students lose interest and find it difficult to retain the information. But their engagement and understanding skyrocket when I relate these topics to problems they care about—building a game, analyzing data for a research project, or even something as simple as designing an efficient algorithm for everyday tasks. This connection to practical, real-life uses makes learning stick, regardless of the learner’s age or background.
Instead of passively watching videos or jumping between random topics, try following a scientific approach that ensures meaningful progress in the first 20 hours. There is some method to the madness:
Start with a goal in mind, like building a small project
Break complex ideas into manageable steps
Prioritize hands-on learning
Learn enough to self-correct
Having a goal provides direction and purpose. Without a goal, learners struggle through endless tutorials or articles without making real progress.
Tip for learners: Ensure your goal is specific, measurable, and tied to your passion. Before learning, ask yourself: “What do I want to achieve in the next few weeks or months?”
For instance, if you want to become proficient in a new programming language, your goal shouldn’t simply be “learning Python.” Instead, define a clear and measurable objective, for example, “I want to build a simple app using Python by the end of this month.” With this in mind, every step you take becomes focused on achieving that outcome and is an achievement.
Especially in the case of something as vast as coding, there’s this feeling that there is too much to learn. That is why breaking down complex ideas or problems into manageable steps or solutions helps. Instead of mastering all the concepts at once, focus on bite-sized projects that build toward your goal.
Tip for learners: Take a large topic you’re learning and break it into smaller, project-based tasks. Each project should teach you a specific skill that moves you closer to your ultimate goal.
For example, rather than tackling an entire course on web development in one go, break it down as the following tasks, where all of them are complete and meaningful on their own:
First, work on understanding HTML and CSS by creating a static website.
Then, move on to dynamic elements using JavaScript (see Polish your JavaScript: create a whack-a-mole game).
And, later, integrate backend functionality with Python.
True mastery comes from applying what you’ve learned in hands-on projects. Coding is a perfect example of this. You can read all about functions or algorithms. But when you write and debug your code, the concepts won’t stick. This project-based approach reinforces the material and builds confidence as learners see real results from their efforts.
Tip for learners: For every new concept you learn, embed it inside a project to practice it. This helps you apply theoretical knowledge practically and reinforces your understanding.
For example, instead of learning how loops work, challenge yourself to build a simple game that utilizes loops to repeat actions. This application-focused learning solidifies the concept in your mind far better than passive consumption.
Motivation is key to staying on track, especially when the learning curve gets steep. One of the best ways to stay motivated is to accrue small wins. You’re far more likely to stay engaged when you can see how you have recovered from a bug while learning how to code.
Tip for learners: Don’t just learn to write code in one language; always keep thinking you’re learning to solve computational problems. Make attempts at solving problems. You will make mistakes and get entangled in bugs. Learn how to debug your code as well.
This focus on teaching students how to learn has been central to my teaching philosophy. However, over time, I felt that research-focused academia left less room for the teaching aspect I’m passionate about. That’s when I joined Educative, helping learners directly focus on creating impactful learning experiences for them.
Developers are used to reading documentation and learning at their own pace. Instead of relying on passive methods like watching videos, they prefer text-based content, where they control their pace and easily search for specific topics.
Recognizing this preference, Educative follows the principle of text-based learning. Here, learners are not just passive recipients of information but actively engaged in coding challenges and real-world projects from the beginning. This method allows them to practice skills purposefully and apply what they’ve learned meaningfully.
Educative creates a beginner-friendly coding experience to help a learner transition from a complete novice to a confident coder. With our Learn to Code platform, you learn and apply concepts through interactive, hands-on coding exercises.
Whether you want to explore programming as a new hobby or are considering a full career shift, our courses, and structured learning paths guide you step by step. With easy-to-follow lessons, you can learn quickly, ensuring you grasp every concept before moving forward.
Also, there’s no need to worry about complex setups; you can code directly in the browser without the hassle of installation or configuration. Instead of spending hours figuring out how to get started, you’ll be solving real coding challenges within minutes. The project-based approach ensures you apply your learning to real-world tasks, turning theory into practice. By the end of your learning journey, you won’t just know how to code—you’ll have built projects that showcase your new skills, helping you take the first step toward becoming a developer.
To see what the buzz is all about, you can begin by checking the following path offered by Educative.
Become a Python Developer
Launch your developer career by mastering the skills needed to become a Python programmer. Our structured lessons will guide you from writing your first line of code to landing your first job as a Python developer. With our interactive content, you’ll learn to code and explore Python beginner projects, tackle Python coding interview questions, and understand key topics such as OOP in Python, data structures in Python, and popular Python libraries. Whether you’re looking for Python programming examples or preparing for Python interview questions, this module offers everything you need to confidently enter the tech industry.
Free Resources