DEV Community

Cover image for How I Started Learning to Code (And What Actually Helped me)
Dani C.
Dani C.

Posted on

How I Started Learning to Code (And What Actually Helped me)

When I first decided to learn coding, I had no idea where to begin. The sheer amount of information out there is almost paralyzing. But after stumbling through the early stages, I've figured out what actually works, at least for me.

This is partly a guide, partly a recap for myself. Writing things down helps me process what I've learned, and maybe it'll help someone else avoid the same mistakes I made. Realistically, there are probably a hundred thousand articles just like this one floating around the internet, and another dozen being published as I write this sentence. But still, who knows? Maybe this one finds you at the right time. 🤷

What Coding Actually Is

Before jumping into any language, I needed to wrap my head around what coding even means. At its core, it's writing instructions that computers can follow. You're essentially giving a machine a very detailed to-do list.

There are tons of programming languages out there: Python, Java, JavaScript, and many others. Each has its own quirks and syntax, but the underlying logic is surprisingly similar across all of them. Once you grasp the fundamentals, switching between languages becomes much easier than you'd expect.

The Building Blocks That Actually Matter

These concepts kept appearing no matter what tutorial I followed.

Variables are containers for storing information. Think of them as labeled boxes where you keep numbers, text, or other data you'll need later.

Control structures like "if" statements and loops let your program make decisions and repeat tasks. This is where code starts feeling powerful. You can tell it "if this happens, do that" or "keep doing this until I say stop."

Functions are reusable chunks of code that perform specific tasks. Instead of writing the same instructions over and over, you package them into a function and call it whenever needed.

None of this clicked immediately for me. I had to see these concepts in action multiple times before they started making sense.

Where I Actually Learned This Stuff

I went the self-taught route initially, and honestly, the free resources available today are incredible. Codecademy, freeCodeCamp, Khan Academy, and YouTube tutorials got me through the basics without spending a dime.

That said, I've come to appreciate the value of structured learning. Having someone to ask questions, getting feedback on your code, receiving guidance when you're stuck... these things accelerate progress significantly. Whether that's a bootcamp, community college course, or online program with mentorship, the investment can be worth it if you're serious about this.

For hobbyists, free resources are probably enough. But if you're considering coding as a career path, some form of structured education can make a real difference.

Picking Your First Language

This decision paralyzed me for weeks. I kept researching "best first programming language" instead of actually writing any code. Eventually I learned that the specific language matters far less than just starting.

Still, it helps to understand the landscape.

JavaScript runs everywhere, both the visual parts of websites you interact with and the behind-the-scenes server stuff. Its versatility makes it incredibly practical, and you can see results in your browser almost immediately. Most interactive websites you use daily are built with it, from social media feeds to online games.

Python reads almost like English, which makes it beginner-friendly. It's huge in data science, AI, and backend development. Companies like Instagram and Pinterest run on it. It's also behind a lot of the provably fair verification systems you see on crypto and gaming platforms these days. If you've ever clicked "verify" on a gaming or crypto site to check whether a result was legit, and it actually let you verify it (meaning it's actually legit), there's a good chance that verification logic was built with Python. It's a nice example of how coding concepts like hashing and cryptography actually show up in the real world, and honestly one of the things that sparked my interest in learning more.

Java is a workhorse that powers Android apps and enterprise software. It's more verbose than Python, but learning it teaches you solid programming habits. Banking apps, large-scale e-commerce platforms, and plenty of backend systems rely on it.

HTML and CSS aren't technically programming languages, but they're essential for anything web-related. HTML structures your content, CSS makes it look good. Every website you've ever visited uses them. I'd recommend at least understanding these basics before diving deeper.

My suggestion? Pick based on what you want to build. Interested in websites? Start with JavaScript. Curious about data, AI, or how fairness algorithms work? Python's your friend. Want to make Android apps? Java makes sense.

Setting Up Your Workspace

Most online courses give you a browser-based environment to practice in, but eventually you'll want to code on your own machine. This is where things got frustrating for me.

You'll need a code editor, basically a specialized text editor for writing code. Visual Studio Code is free and incredibly popular. Sublime Text and Atom are solid alternatives. I use VS Code and haven't looked back.

Version control through Git is something I wish I'd learned earlier. It tracks changes to your code and lets you revert mistakes. When you accidentally break everything (and you will), Git lets you go back to when things worked. GitHub, built on Git, is where developers store and share their code. Learning even basic Git commands saved me from losing hours of work more than once.

As you progress, you'll encounter libraries and frameworks, pre-built code that handles common tasks so you don't have to reinvent the wheel. React, Vue, and Angular are popular ones for JavaScript. Don't worry about these initially. You'll naturally discover them as you need them.

The Struggles Nobody Warned Me About

This is the part I wish someone had been honest about from the start.

The setup process is genuinely frustrating. I spent an entire afternoon trying to get Python installed correctly on my computer. Environment issues, path variables, version conflicts. These feel like unnecessary obstacles when you just want to write code. Push through this phase. It gets better, but it's a rite of passage every beginner goes through.

Error messages are cryptic at first. When my code broke, the error messages might as well have been written in ancient Greek. Over time, I've learned to actually read them. They usually tell you exactly what's wrong and where. But early on? Pure confusion. I'd just stare at the screen wondering what I did wrong.

The gap between tutorials and real projects is massive. Following along with a tutorial, I felt like a genius. Trying to build something from scratch without guidance? Completely lost. This gap is normal, and the only way across is practice. Lots and lots of practice.

Imposter syndrome hits hard. Everyone online seems to know more than you. Their code is cleaner, their understanding deeper. But you're seeing their highlights, not their struggles. Everyone started where you are now. I have to remind myself of this constantly.

Debugging takes forever. A single misplaced character can break everything. I once spent two hours hunting for a bug that turned out to be a missing semicolon. Another time, I forgot to close a parenthesis and couldn't figure out why nothing worked. Patience becomes essential, and so does learning to read your code character by character.

You'll feel stupid regularly. Not occasionally. Regularly. Concepts that seem obvious in hindsight will confuse you for days. This is normal. It doesn't mean you're not cut out for programming. It means you're learning something genuinely difficult.

How to Actually Get Better

Code every day, even if it's just for 20 minutes. Consistency beats intensity. Short daily sessions stick better than marathon weekend sessions followed by weeks of nothing. I tried the weekend warrior approach and forgot half of what I learned by Tuesday.

Work on projects, not just tutorials. Tutorials are comfortable because someone guides you. Projects are uncomfortable because you're on your own. That discomfort is where learning happens.

Start simple. A "Hello World" program seems trivial, but it confirms your setup works. From there, build a basic calculator, a to-do list, a simple game. Each project teaches something new. I'm currently working on a basic weather app, and I've learned more from troubleshooting it than from any tutorial.

Embrace the bugs. Every error is a lesson. Debugging is frustrating, but it's also how you develop problem-solving skills. The best programmers aren't those who never make mistakes. They're the ones who've made thousands and learned from each one.

Coding challenges on sites like CodeWars and HackerRank are great for practice. They present specific problems to solve, often with multiple solutions from other users you can study afterward. These sites are also used in job interviews, so practicing on them has practical benefits. I try to do at least one challenge a day, even if it's an easy one.

Comment your code. Seriously. Future you will have no idea what present you was thinking. I've returned to code I wrote two weeks ago and had zero clue what I was trying to accomplish. Comments explain your logic and make debugging easier.

Finding Your People

Coding can feel isolating, but it doesn't have to be. Online communities like Stack Overflow and GitHub are filled with people willing to help. When you're stuck, someone else has probably faced the same problem and documented the solution.

Local meetups, coding groups, and hackathons (events where people build projects together in a short timeframe) can provide motivation and connections. Surrounding yourself with others on the same journey makes the hard parts more bearable. Even just lurking in Discord servers for beginners has helped me feel less alone in this.

Getting Real Experience

At some point, you need to move beyond practice exercises. Contributing to open-source projects on GitHub lets you work on real codebases. Freelancing or internships provide practical experience. Building your own projects, solving problems you actually have, creates a portfolio to show potential employers.

The jump from "learning to code" to "actually coding" is uncomfortable. But there's no way around it except through it. I'm not there yet, but I can see the path.

What I'd Tell Myself Starting Out

Be patient with yourself. Programming is genuinely difficult, and progress isn't linear. Some days you'll feel like a wizard. Others you'll want to throw your computer out the window. Both are normal.

Focus on small wins. Don't try to understand everything at once. Get one concept working, celebrate briefly, then move to the next.

The goal isn't to know everything. No programmer does. The goal is to become comfortable with not knowing and confident in your ability to figure things out.

Keep building. Keep breaking things. Keep fixing them. That cycle, repeated thousands of times, is how programmers are made.

I'm still very much in the middle of this journey. But looking back at where I started, I've come further than I realized. And that's enough to keep going.

Top comments (0)