For the longest time, I treated coding like a race I was already behind in. Every day, I’d fall into the same loop: searching for the fastest way to learn, the best roadmap, the most in-demand language. I convinced myself that if I could just find the perfect path, everything would click. So I jumped from Python to JavaScript, from web development to algorithms, from one course to another. Each new start felt exciting, like I’d finally cracked the system. But after a few days, the excitement faded, things got difficult, and I’d move on again — thinking the problem was the path, not my approach.
After a few months of this, I had nothing real to show for it. I wasn’t a complete beginner anymore, but I wasn’t competent either. I had fragments of knowledge — syntax here, concepts there — but no ability to actually build something on my own. That was the most frustrating part. I could follow along with tutorials and understand what was happening, but the moment I tried to create something from scratch, I’d freeze. It felt like staring at a blank page with no idea how to begin. That’s when the doubt started creeping in: maybe coding just wasn’t for me.
The turning point wasn’t dramatic. There was no breakthrough moment, no sudden surge of motivation. I just got tired of restarting. Instead of searching for another roadmap or switching languages again, I made one simple decision: I was going to build something small and actually finish it. Not something impressive, not something I could show off — just something complete. I picked a basic project, a simple to-do list app, and committed to working on it every day until it was done. That was the only rule.
At first, it was uncomfortable in a way tutorials never were. There was no step-by-step guide telling me what to do next. I had to figure things out on my own, and that meant getting stuck constantly. I’d spend 20 minutes trying to fix a single error. I’d search things I felt like I “should” already know. It was slow, messy, and honestly a bit discouraging. But something different was happening this time: I wasn’t quitting when it got hard. I was staying with the problem until I found a way through, even if that meant taking small, imperfect steps forward.
That’s when I realised why tutorials had been holding me back. They gave me the illusion of progress without forcing me to think deeply. When you follow a tutorial, you’re not really solving problems — you’re just replicating solutions. It feels productive because you’re typing code and seeing results, but you’re not building the mental frameworks needed to handle things on your own. When I started working on my own project, even something as simple as structuring the code or deciding where to start became a challenge. But those challenges were exactly what I needed.
To keep myself consistent, I made the process almost ridiculously manageable. I set a rule: I would code for at least 30 minutes every day, no matter what. It didn’t matter how tired I was, how busy the day had been, or whether I felt like it. The goal wasn’t to have perfect sessions or make huge progress — it was just to show up. Some days, I’d go far beyond 30 minutes because I got into the flow. Other days, I’d do the bare minimum and stop. But the key difference was that I never broke the chain.
Over time, the results started to compound in a way that felt almost invisible at first. I didn’t suddenly become an amazing developer, but things that used to confuse me started to make sense. Errors became less intimidating because I’d dealt with similar ones before. I stopped panicking when something didn’t work and started approaching problems more methodically. Most importantly, I began to trust myself — not because I knew everything, but because I knew I could figure things out if I gave myself enough time.
After a few months, I noticed a shift that’s hard to explain but easy to feel. I no longer saw myself as someone trying to learn coding. I was just someone who coded. That identity change made everything easier. I didn’t need to rely on motivation or wait for the perfect time to start. It became part of my routine, something I did without overthinking. And once that happened, progress stopped feeling forced and started feeling natural.
Looking back, the biggest mistake I made wasn’t choosing the wrong language or following the wrong roadmap — it was constantly restarting. Every time you restart, you reset the discomfort, the confusion, and the early-stage struggle. You never stay in one place long enough to push through it. Real progress comes from sitting with that discomfort and working through it, even when it feels slow and unproductive.
If you’re in that phase right now — jumping between tutorials, feeling stuck, wondering if you’re cut out for this — try simplifying everything. Pick one language. Pick one small project. Work on it every day, even if it’s just for 30 minutes. Don’t worry about doing it perfectly or efficiently. Just focus on finishing. Because finishing something, no matter how small, does more for your growth than consuming hours of content ever will.
Coding isn’t about finding the fastest path. It’s about staying on one path long enough for it to actually take you somewhere. And once you understand that, everything starts to change.
Top comments (0)