DEV Community

Cover image for The Challenges of Self-Learning Programming (and How to Overcome Them)
Frank
Frank

Posted on • Originally published at Medium

The Challenges of Self-Learning Programming (and How to Overcome Them)

Most of my friends knew what they wanted to be in high school. I didn’t.

Well, I thought I did. I wanted to become a petrochemical engineer because they were earning a lot of money, or so I thought. The problem was, I didn’t like chemistry. Failed it twice. I still thought this was my path because, you know, the money.

That was my plan for a while, until a tutor came to the tutorial center where I was preparing for college one day and said, “Most students study courses they don’t like. They do it for money, or because their parents want them to, or because companies pay well. Go home and think about what you actually love doing.

I went home and thought hard. Chemistry was out—obviously not happening. But I’d always loved web applications—in fact, tech as a whole. After school, I’d hang out in the I.C.T. lab with my friends. I wanted to know how websites worked. How did people build apps? What happened behind the scenes?

Tech is huge. I needed to pick a niche. So I chose software development and decided to teach myself programming before going to college.


What Self-Learning Actually Looks Like

Learning to code by yourself sounds great.

  • You go at your own pace.

  • You pick what to learn.

It’s also really tough.

I made countless mistakes. Got stuck more times than I can count. Almost gave up more than once. But I figured out what works and what doesn’t.

If you’re thinking about learning programming on your own, here’s what I wish someone had told me.


1. Don’t Try to Use Every Resources Out There

When I started, I thought more resources meant faster learning. I was wrong.

I had YouTube tutorials, Udemy courses, books, blogs, documentation, and forums all open at once. One night I counted 47 browser tabs.

Instead of learning faster, I learned nothing.

Then I discovered roadmap.sh. It gives you a clear path to follow. No more guessing what to learn next.

I made a rule: one main resource, two backup ones. That’s it.
Pick a course or book as your main guide. Then use two other sources only when you’re confused. This will stop the endless switching and actually let you focus.


2. Stop Collecting Courses and Start Building

You know what’s worse than too many resources? Collecting them without using them.

Here’s what nobody warns you about: you can watch tutorials forever and still not know how to code.

I’d finish a 10-hour JavaScript course, feel smart, and then immediately start a React course. I never built anything with JavaScript. I just kept consuming.

I stopped watching and started building.

Every time I learned something new, I had to build something with it. Even something tiny.

  • When I learned about functions, I built a calculator.

  • I learned about arrays and built a to-do list.

The projects were small, but they were mine. That made all the difference.


3. You Need People, Not Just Tutorials

The first weeks were amazing. I was coding, and I was learning.

There was no professors breathing down my neck. I didn’t have classmates to compete with. No grades to chase. No deadlines that mattered.

I’d set goals and miss them, nothing happened. I’d skip days, then weeks. Procrastination became my biggest enemy. Some days I wondered if I was meant for this.

I found my community online. The web developer community, Build In Public, and Software Engineering community on twitter, became my classroom. Twitter gave me coding mates.

The idea was coding every single day. Even if just for 30 minutes. Small daily progress beats coding 5 hours, two days in a week.


4. Get Feedback Early and Often

I could write code that worked, but i had no idea if it was good code.

I built my first web app, my gosh i felt proud. Later I discovered it was terrible, from security holes everywhere to spaghetti code. The code was really messy.

I had nobody to tell me “Hey, maybe don’t do it that way.

I started asking friends of mine who were experienced dev, if there was better ways i could write a particular code. I seldomly post my code on my socials for feedback (I’m working on it doing better though). The feedbacks might be harsh but will be incredibly helpful.

You can find mentors on social media just by asking. Most people will be happy to help.


5. Embrace Not Knowing Things

To be honest, confidence is dangerous when you’re self-taught dev. You think you know something, then you hit a wall and realized you don’t actually know much.

This is where imposter syndrome comes in. You feel like a fraud who’s about to get exxposed.

I stopped being ashamed of not knowing things. Instead, I got curious. I usually keep a “things I don’t understand” list. it helps me spot patterns and plan what to tackle next.

I started comparing myself to my past self, not to other people online. That simple shift helped my confidence more than anything else.


6. The Real Education Happens in The Struggle

These challenges weren’t just obstacles I needed to overcome, it taught me things no classroom could.

Yes, I learned to code. But I also learned how to learn anything, self-discipline, research skills, and problem solving under pressure.

Now when I see new technologies, I don’t panic, I know I can figure them out. That’s true confidence if you ask me. You can’t get it from a traditional classroom.


My Self-Learning Hack

  1. Use roadmap.sh for a clear learning path.
  2. Set small goals and deadlines you can actually hit.
  3. Join Learning Communities on Twitter, Reddit, and Stack Overflow.
  4. Share your code and ask for feedback.
  5. Find mentors online/offline who can help you.
  6. Build real projects with everything you learn.
  7. Code every day even if it’s just 30 minutes.

Self-learning programming is hard. But you can do it.

What’s your biggest challenge right now? Share it in the comments, we’d love to help you.

Go build something amazing.


If you enjoyed reading this, like it, comment on it, and share it with a friend.

Top comments (3)

Collapse
 
dev_frank profile image
Frank

Don' Try to Use Every Resources Out There

Collapse
 
secureopensource profile image
SecureOpenSource

This is where certifications become useful for me, because it offers a structural path to study beginning to end. It's definitely No indicator that you are actually a programmer! Only real world experience can demonstrate that, but doing a certification forces you to learn things and provides structure to that learning!

Collapse
 
messy_babythegamer_b356 profile image
Messy Baby the gamer

And creating lot of projects is also important