Why You Keep Getting Stuck Learning to Code (And How to Actually Move Forward)
You keep getting stuck because of how you are learning, not because of who you are. The most common causes are tutorial dependency, no project practice, learning topics in the wrong order, studying in isolation, and having no clear goal. The fix is to stop consuming and start building, even if what you build is ugly and broken. One finished project teaches more than twenty saved bookmarks.
You Are Not Stupid
Let us get this out of the way first. If you have been trying to learn to code and feel like you are going nowhere, the voice in your head saying "maybe I am just not smart enough for this" is lying to you.
That voice is loud. It shows up when a concept that seemed simple in the tutorial completely falls apart the moment you try to use it on your own. It shows up when you stare at an error message for forty minutes and still have no idea what went wrong. It shows up when you see people on Twitter shipping projects after "just three months of learning" while you have been at it for six and still struggle with basic JavaScript.
Here is what those Twitter posts leave out: the months of confusion that came before, the projects they abandoned, the days they wanted to quit. Nobody posts about those. You are comparing your behind-the-scenes footage to everyone else's highlight reel.
Professional developers with five, ten, fifteen years of experience get stuck regularly. They Google basic syntax. They forget how to centre a div. They paste error messages into search engines like everyone else. The difference between a senior developer and a stuck beginner is not intelligence. It is that the senior developer has been stuck hundreds of times before and has learned that the feeling passes if you keep working the problem.
So no, you are not stupid. You are learning a genuinely hard skill, and you have probably been learning it in a way that makes it harder than it needs to be. That is what the rest of this article is about.
The Five Real Reasons People Get Stuck
After years of teaching and mentoring new developers in Nairobi, the same five patterns show up over and over. Almost every stuck learner falls into at least two of these.
1. Tutorial dependency
You have watched dozens of hours of coding tutorials. You can follow along when the instructor builds something. But when you close the video and open a blank file, your mind goes blank too. This is the most common trap by far, and it has its own section below because it deserves a full explanation.
2. No project practice
You are learning concepts in the abstract without applying them to anything real. You know what a function is. You know what an array is. You have completed the exercises. But you have never sat down with a blank screen and thought, "I want to build X. How do I make that happen?" The jump from understanding a concept to using it creatively is where real learning happens, and tutorials almost never force you to make that jump.
3. Wrong learning order
You jumped into React before you understood JavaScript. You tried to learn Node.js before you were comfortable with functions and callbacks. You started a full-stack project before you could build a simple static page. Every framework and library assumes foundational knowledge. Skip the foundation and everything above it feels impossibly confusing. It is not that the material is too hard. It is that you are missing prerequisites nobody told you about.
4. Isolation
You are learning completely alone. No study partner, no community, no mentor, nobody to ask "is this normal?" when you hit a wall. Isolation does two things. First, it lets small confusions snowball into major blockers because you have no one to give you a five-minute explanation that would save you five hours of Googling. Second, it removes accountability. When nobody knows you are learning to code, skipping a day turns into skipping a week turns into skipping a month turns into "I used to be learning to code."
5. Unclear goals
"I want to learn to code" is not a goal. It is a direction. Without a specific destination, you wander. You start with Python, switch to JavaScript, try a bit of C#, dabble in Rust, and end up proficient in nothing. A clear goal looks like: "I want to build a web application that tracks expenses and integrates with M-Pesa, and I want to apply for junior developer jobs in Nairobi by December." That goal dictates what you learn, in what order, and by when. Without it, every new YouTube recommendation pulls you off course.
The Tutorial Trap in Detail
Tutorial hell deserves its own section because it is where the largest number of aspiring developers get permanently stuck.
The trap works like this: you watch a tutorial and follow along. The instructor types code, you type the same code, and it works. You feel a rush of progress. You understood it. You did it. So you move to the next tutorial. Same feeling. Progress. Understanding. Confidence.
Then you try to build something on your own and realize you cannot. The confidence evaporates. So what do you do? You go find another tutorial, because tutorials feel productive. The cycle repeats.
The core problem is that following along with a tutorial uses recognition memory. You recognize correct code when you see it. But writing code from scratch requires recall memory, which is a completely different cognitive process. Recognition is passive. Recall is active. They feel similar while you are doing them, but they produce very different outcomes.
Think of it like cooking. Watching a chef make a dish on YouTube is recognition. Standing in your own kitchen with raw ingredients and no recipe is recall. The first feels easy. The second is where you actually learn to cook.
Signs you are in tutorial hell:
- You have completed more than three full courses but have not built anything original.
- You can follow code being written but cannot write it from memory or reasoning.
- You have a bookmark folder with 20+ saved courses, articles, and videos you plan to "get to."
- When you get stuck, your first instinct is to find a tutorial that covers your exact problem rather than trying to work through it yourself.
- You feel busy and productive but cannot point to anything you have actually built.
The exit is uncomfortable but simple. Close the tutorial. Open your code editor. Try to build something small using what you have already learned. You will get stuck. That is the point. The struggle of figuring it out, Googling specific errors, reading documentation, trying and failing and trying again, that is what transforms recognition into recall. That is actual learning.
The Plateau Is Normal (Science Says So)
There is a pattern in skill acquisition that researchers have documented across dozens of domains: language learning, musical instruments, athletics, chess, and yes, programming. The pattern looks like an S-curve.
When you first start, progress is rapid. You go from knowing nothing to writing your first "Hello, World" program, building a basic HTML page, making a button change colour with JavaScript. Every day brings a visible win. This phase feels great.
Then the curve flattens. You are learning, but the wins are less visible. The concepts are more abstract. The gap between what you know and what you need to know to build something real feels enormous. You are putting in the same hours but the progress feels like it has stopped.
This is the plateau. It is where most people quit.
What is actually happening on the plateau is that your brain is reorganizing what it knows. You are building connections between concepts, developing pattern recognition, and strengthening mental models that are not yet strong enough to produce visible output. Psychologists call this the "consolidation phase." It feels like stagnation, but it is preparation for the next breakthrough.
The S-curve bends upward again. The concepts click. Things that were confusing suddenly make sense. You start seeing patterns across different problems. You build something and realize halfway through that you know what to do without looking anything up. That moment arrives, but only if you push through the flat part.
Every professional developer you admire went through this plateau. Many went through it multiple times as they learned new languages, frameworks, or paradigms. They did not have a secret. They just kept going when the progress felt invisible.
If you have been coding consistently for two or three months and feel like you have stopped improving, you are probably right in the middle of the plateau. That is not a signal to quit. It is a signal that a breakthrough is coming if you stay with it.
How to Unstick Yourself
Enough diagnosis. Here is what to actually do.
Build something ugly
Open your editor right now and start a project. Not a tutorial project. Not a clone of someone else's app. Something you want to exist. A tool that solves a small problem in your own life. It can be a simple expense tracker, a quiz for your friends, a countdown timer for an event, anything. The only rule is that nobody tells you what to type. You have to figure it out yourself.
It will be ugly. The code will be messy. Some parts will not work. That is fine. A finished ugly project is worth ten times more than an unfinished perfect one. You can refactor later. Right now, you need the experience of going from "I want this to exist" to "I made it exist, and it works, sort of."
Find one person to learn with
You do not need a huge community. One person is enough. A friend who is also learning. A colleague who is curious about coding. Someone you met in a Telegram group or a Discord server. Set a weekly check-in where you show each other what you built or what you are stuck on. The accountability alone changes everything. Knowing that someone will ask "what did you work on this week?" on Saturday morning is a surprisingly powerful motivator.
Delete the bookmark folder
You know the one. Fifty saved tutorials, ten YouTube playlists, eight bookmarked articles titled "The Complete Guide to..." Delete them. All of them. They are not helping you. They are giving you the illusion that you are "preparing" to learn when what you actually need to do is build. If you need to learn something specific while building your project, you will search for it at that moment. That just-in-time learning sticks far better than just-in-case hoarding.
Commit to ONE resource
If you are still in the learning-fundamentals stage and genuinely need structured material, pick one resource and finish it. Not the best resource. Not the perfect resource. One resource that covers what you need. The Odin Project for web development. freeCodeCamp for JavaScript. The official React docs for React. Pick one, commit, and do not switch to something else when it gets hard. Switching resources when you hit difficulty is just tutorial hell with extra steps.
Shrink the problem
When a project feels overwhelming, you have not broken it down enough. "Build a full-stack web app" is paralyzing. "Display a list of items on a page" is doable. "Add a button that adds a new item to the list" is the next step. "Save that list to local storage so it persists" is the step after. Every large project is just a sequence of small, manageable problems. If you feel stuck, you are looking at a problem that is too big. Make it smaller.
When Structure Helps
Self-teaching works. Many excellent developers are entirely self-taught. But self-teaching has real limits, and being honest about those limits is not weakness. It is strategy.
Self-teaching is hardest when you:
- Do not know what you do not know (you cannot Google a concept if you do not know it exists)
- Have no one to tell you that you are learning things in the wrong order
- Cannot evaluate whether your code is "good enough" or riddled with bad habits
- Struggle with consistency because nobody is expecting you to show up
- Need to move from "I can build small things" to "I can build production-quality applications" and the gap feels uncrossable
A structured course, bootcamp, or learning community fills these gaps. Not by making the work easier, but by giving you a curriculum someone has already sequenced correctly, mentors who catch your mistakes early, peers going through the same struggle, and deadlines that keep you moving when motivation dips.
This is why we built Tech Foundations at McTaba Academy. It is a structured starting point for KES 2,999 that covers the fundamentals most self-taught learners skip or get wrong: computational thinking, how the web works, developer tools, and the mental models you need before writing your first line of code. It is not a replacement for self-teaching. It is the foundation that makes everything you teach yourself afterward stick.
We also run a Discord community where learners at every stage ask questions, share projects, and keep each other accountable. Free to join. If isolation is part of why you are stuck, this is the lowest-friction fix.
And if you do not have an account yet, create a free one on McTaba Academy. Browse the catalogue, see what structured learning looks like, and decide if it is what you need.
Structure is not admitting defeat. It is choosing the tool that matches the problem.
Your "Unstuck" Action Plan for This Week
Not next month. Not when you "have more time." This week. Seven days. Here is exactly what to do.
Day 1: Pick your project
Choose something small you genuinely want to build. A personal budget tracker. A quiz app about a topic you care about. A simple portfolio page. Write down in one sentence what it does. Do not research tech stacks. Do not watch a tutorial about it. Just decide.
Day 2: Build the skeleton
Create the HTML structure or the basic React component layout. No styling. No functionality. Just the bones of what will exist on screen. Get something, anything, to appear in the browser.
Day 3: Add one piece of functionality
Make one thing work. A button that does something. A form that captures input. A list that displays data. Just one thing. If you get stuck, spend 20 minutes trying to solve it yourself before searching for help. Then search for the specific problem, not a tutorial that covers your whole project.
Day 4: Break it and fix it
Intentionally try to use your app in a way that breaks it. What happens when you submit an empty form? What if you click a button twice? Find a bug and fix it. Debugging is a skill that tutorials never teach and employers always test for.
Day 5: Make it look less terrible
Add some CSS. It does not have to be beautiful. Clean up the layout. Add some padding. Pick two colours. Make it something you would not be embarrassed to show another person. Good enough is the standard, not perfect.
Day 6: Show someone
Send it to a friend, post it in a Discord server, share the GitHub repo in a Telegram group. Tell them "I built this, it is rough, feedback welcome." This is the hardest day. Showing unfinished work feels vulnerable. Do it anyway. The feedback you get will teach you things you never would have discovered alone.
Day 7: Reflect and plan
Write down three things you learned this week that you did not know on Day 1. Write down the one thing that confused you most. That confusion is your next learning target. You now have a project to keep improving, a direction to keep learning, and proof that you can build something from scratch.
That is it. Seven days. One ugly, imperfect, yours-from-scratch project. You will learn more in this week than in the last month of tutorials. And once you have done it once, you will know you can do it again.
Stop reading. Start building.
Key Takeaways
- ✓Getting stuck is a universal phase of learning to code. Every working developer went through it. The ones who made it did not have more talent. They had better strategies.
- ✓Tutorial hell is the single biggest trap. Watching someone else code feels like learning, but it builds recognition memory, not the recall and problem-solving ability you actually need.
- ✓The learning plateau is backed by research. Skill acquisition follows an S-curve where progress stalls before a breakthrough. Most people quit right before the curve bends upward.
- ✓Building something ugly and incomplete teaches you more than finishing another polished tutorial. Close the tab. Open your editor.
- ✓Isolation kills momentum. One accountability partner or a small community changes the equation entirely.
- ✓If you have been stuck for more than a month, the problem is usually structural. A course, mentor, or cohort adds the scaffolding that self-teaching alone cannot provide.
Frequently Asked Questions
- How long does the "stuck" phase usually last when learning to code?
- The initial plateau typically lasts two to six weeks of consistent practice. It feels longer because progress becomes invisible during this period. If you have been stuck for more than two months with no improvement at all, the issue is likely structural: wrong learning order, tutorial dependency, or studying passively without building projects. Changing your approach, not just putting in more hours, is what breaks the cycle.
- Should I switch programming languages if I feel stuck?
- Almost always no. Switching languages when you are stuck is a common avoidance tactic that resets your progress without fixing the underlying problem. The fundamentals that are hard in JavaScript will be hard in Python too. The exception is if you are genuinely learning a language that does not match your goal. If you want to build websites but you are learning C++, that is a real mismatch worth correcting. Otherwise, stay the course.
- Is it normal to forget things I learned just last week?
- Completely normal. You are not losing knowledge. You are experiencing the natural forgetting curve, which is steeper for concepts you learned passively (reading or watching) than for concepts you applied actively (building something). The fix is not to review more. It is to use what you learned in a project. Applied knowledge sticks. Memorised knowledge fades.
- How do I know if coding is genuinely not for me versus just being in a rough patch?
- Ask yourself one question: when you finally solve a problem after struggling with it, do you feel a sense of satisfaction? If the answer is yes, even occasionally, you are a coder going through a rough patch. If the answer is consistently no, and the process brings nothing but frustration with no moments of reward, a different path might suit you better. There are plenty of well-paying tech roles that do not require writing code: UX design, product management, technical writing, developer relations.
- Can I use AI tools like ChatGPT when I am stuck, or is that cheating?
- Using AI is not cheating. It is a skill. But how you use it matters enormously. Asking "write me a to-do app in React" teaches you nothing. Asking "I wrote this function and it returns undefined instead of the array I expected, can you explain why?" teaches you a lot. Use AI as a tutor that explains concepts and debugs your thinking, not as a replacement for your thinking. If you could not explain what the AI-generated code does line by line, you have not learned from it.
Ready to build real-world apps?
Join the McTaba Labs full-stack marathon (4 months full-time · 6 months part-time). Learn M-Pesa, USSD, and WhatsApp engineering while shipping 8 production apps.
Apply to the McTaba Marathon