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 (26)

Collapse
 
sadohert profile image
sadohert

I would strongly recommend contributing to an open source project as a potential pathway. Get to know the code of a bigger project that has a healthy community, start with trying to solve basic issues or improving documentation. Ask questions in public community channels. There's a lot of really smart and helpful people in those communities...Grow from there

...full disclosure, I work for Mattermost...getting hands on with "open" stuff is the best way to learn 👍🏼

Collapse
 
dev_frank profile image
Frank

You're right, open source was a game changer for me. It will be super scary at first though (speaking from experience 😂).

But you're right, those communities are incredibly helpful. Starting with documentation improvements is smart advice - less intimidating than jumping into the codebase. Thanks for sharing your experience with Mattermost - always cool to hear from people actually working in these communities.

Collapse
 
wepngong_shalom_903c48cbb profile image
Wepngong Shalom

Pls how can I get on the open stuff??

Collapse
 
ifeoluwa_morakinyo_ce35e4 profile image
Ifeoluwa Morakinyo

How can I found one

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
 
dev_frank profile image
Frank

Well the certification doesn't really matter but the structured learning path does. In the world programming, direction matters.

Having that guided learning path definitely has value. At the end of the day your credentials doesn't matter, only your potential.

Thanks for sharing your perspective on this. I appreciate you.

Collapse
 
wepngong_shalom_903c48cbb profile image
Wepngong Shalom

Great man thanks allot as I was just reading and going down almost all the mistakes you made mention of is what I was doing... Thank God I found this.. really helpful thanks again man... Pls how exactly do I find an online community that would help me grow ??

Collapse
 
dev_frank profile image
Frank

Glad this helped man
Yeah, we all make the same mistakes - that's why I had to write about it 😅 For online communities, start with these: Discord servers for your language (search "[your language] discord"), Reddit communities like r/learnprogramming and r/webdev, and Twitter/X - just search for hashtags like #100DaysOfCode or communities like web developer, and software engineering. Try as much as possible to engage and ask questions if you're stuck.

Pick 2-3 places and be active there rather than trying to be everywhere. Consistency beats being everywhere at once.

I'm rooting for you man 💪🏽

Collapse
 
wepngong_shalom_903c48cbb profile image
Wepngong Shalom

Thanks for this again man 🙏🏽🙏🏽🙏🏽 your really a blessing 🙏🏽🙏🏽.. would do just that.

Collapse
 
thepool_is_here profile image
The fool • Edited

This post is incredibly helpful exactly what I needed. I'm someone who works alone and doesn’t really have many friends in the real world, but I’ve found a lot of interest and purpose in learning about computers and tech. If anyone out there feels the same or is open to connecting, feel free to reach out. It’d be nice to share this journey with someone

Collapse
 
dev_frank profile image
Frank

Looking forward to connecting with you

Collapse
 
dev_frank profile image
Frank

Don' Try to Use Every Resources Out There

Collapse
 
ifeoluwa_morakinyo_ce35e4 profile image
Ifeoluwa Morakinyo

My real problem is n networking,I code only and that looks boring to me no friend nobody

Collapse
 
dev_frank profile image
Frank

Hey Ifeoluwa, I totally get that feeling - coding alone can get really lonely. The networking thing was huge for me too.

Start small: join Discord servers for your programming language (like JavaScript, Python communities), hop on Reddit (r/learnprogramming is great), and Twitter has tons of friendly devs. Don't worry about being "good enough" - just start engaging and you'll notice your twitter algorithm will change as well. Ask questions, share what you're learning, comment on other people's posts. I found my first coding friends just by being active in these spaces. The community is more welcoming than you think.

I'm rooting for you 💪🏽

Collapse
 
ifeoluwa_morakinyo_ce35e4 profile image
Ifeoluwa Morakinyo

Okay,nice to hear that from you,but I joined discord some month ago trying to message different people to share my feelings about coding to them but seems they are not interesting in friends

Thread Thread
 
dev_frank profile image
Frank

I understand you on this. DMing random people on Discord usually doesn't work. It can come across as spam or too forward.

I would suggest being active in public channels first, ask coding questions there, and they and help others if you can. People get to know you naturally that way.

Thread Thread
 
vikas_intr profile image
Vikas

How to be active in public channels. I mean what have we do? I am also struggle with networking or group of people interested in programming.
Literally if i found anyone of like that. I can program whole day.

I Need Mentor.

Collapse
 
dev_frank profile image
Frank

Love this advice Kevin
The book approach is solid - you're right about the structured learning path. I actually started with C but the principle is the same.
That muscle memory point is huge too. I wasted months just watching tutorials without typing. The "read and practice" combo is what finally made things stick for me.

C# is a great choice for the reasons you mentioned. Thanks for adding this - really good perspective

Collapse
 
kurealnum profile image
Oscar

Your post strongly reminds me of teaching myself how to code. Super awesome post, really enjoyed reading it!

Collapse
 
messy_babythegamer_b356 profile image
Messy Baby the gamer

And creating lot of projects is also important

Collapse
 
dev_frank profile image
Frank

💯
Projects are everything. Even tiny ones count. I probably built over 6 terrible calculators before making anything decent But each one taught me something new. The key is actually finishing them, even if they're small. Better to have 5 completed simple projects than 1 half-finished complex one right?

Collapse
 
jerrymarvis profile image
Ogundele babatunde Jeremiah

I am presently learning JavaScript, but for real I indeed need help, I just got stuck at a point and daily life struggles to make ends meet makes to start procrastinating. Please how do I get pass this stage

Some comments may only be visible to logged-in visitors. Sign in to view all comments.