Bad ways people learn to code

I’m going to explain the common mistakes I see people make when learning coding. These mistakes can really slow someone down or even stop them from becoming a real developer.

There isn’t just one perfect way to learn coding. Everyone learns differently. But I’ve seen enough people over the years to know there are definitely wrong ways to do it. I want to show what those mistakes are and how to avoid them. This is mainly for beginners or people just starting out.

I group these mistakes into a few areas:

  • What I expect before starting
  • How I study
  • How I code
  • How I communicate

Let me walk through them one by one.

What I expect before starting

Before I even start learning, I need to get my expectations right.

Mistake: No clear goal

One big mistake I see is when I start learning coding without knowing exactly what I want.

Sometimes I might say, “I just want a job.” That sounds okay, but it’s actually too vague. It’s like saying, “I want to be a writer.” That could mean anything. What kind of writer?

But if I say something like, “I want to write for a big newspaper,” now that’s clear. Now I know what I’m working towards.

At Sigmaschool, what I care about is not helping someone just get any job. I care about helping people build strong fundamentals so they can have a long, stable career.

The tech industry goes up and down. Sometimes it’s easy to get a job even if I don’t know much. But those jobs are usually weak and don’t last.

When the market slows down, those easy jobs disappear first. People without strong skills are the first to struggle.

That’s why if I rush and only learn surface-level things just to get a job fast, I’m setting myself up for problems later. It might work for a short time, but not long term.

At Sigmaschool, the goal is very clear. I want to help people build strong foundations so they can survive both good times and bad times in tech.

So before I start, I need to ask myself: Do my goals match this?

If yes, then I’m on the right path.

Mistake: “X months” to become a programmer

This is one of the most common mistakes I see.

I might tell myself something like, “I’ll become a developer in 3 months” or “I’ll finish this in 6 months.” Sounds good, but it’s usually wrong. Most of the time, I underestimate how long it actually takes to learn something properly.

At Sigmaschool, I don’t just aim for surface-level understanding. I push for deep understanding. The kind where I really get it, not just memorize it. And that kind of learning takes time. Usually more time than I expect.

So when I lock myself into a fixed timeline, I’m basically setting a trap for myself.

I start feeling pressure -> That pressure turns into anxiety -> Then my focus changes. Instead of trying to truly understand things, I start rushing just to “finish on time.”

That’s where things break. I stop learning properly and start chasing deadlines instead.

From what I’ve seen, this is one of the biggest reasons people burn out or feel like they’re failing.

What I should do instead is simple: Give myself enough time. Stay flexible. Let my brain actually absorb what I’m learning.

If I force a tight deadline, I’m increasing my chances of stress and disappointment.

If I focus on learning properly, the timeline will take care of itself.

Mistake: Thinking becoming a real developer is easier than it actually is

This is another trap I see a lot. I might think learning coding is just about playing around, trying things, and slowly picking it up. That’s fine at the start. That’s exploration.

But becoming a real software engineer, someone who can survive long-term in this industry, is a completely different game. It requires seriousness. It requires me to actually commit. It even requires me to be a bit competitive, because I’m not the only one trying to get good.

A lot of people don’t realize this shift. They stay in “casual mode” but expect “professional results.” That doesn’t work. Also, coding skill alone is not enough.There are other skills that matter just as much, but people ignore them:

  • How I communicate with others
  • How hard I’m willing to work
  • Whether I pay attention to small details
  • Whether I’m easy to work with
  • Whether I’m a good teammate

These things make a huge difference in the real world. At Sigmaschool, I don’t have separate classes just for these. But through working together, I will naturally get feedback on them.

And from what I’ve seen, people who take these seriously go much further than those who only focus on code.

Mistake: Not careful enough with small details

Coding is all about details. Tiny details. It’s not just “kind of right.” It has to be exactly right. Being detail-focused is not just yes or no. It’s like a scale. And to be really good at coding, I need to be at the extreme end of that scale.

A lot of beginners, including me at the start, don’t realize how strict coding is.

When I write code, I’m basically giving instructions to a computer. And the computer is very literal. If I’m even slightly unclear or sloppy, it won’t “guess” what I mean. It just breaks.

This doesn’t come naturally to most people. As I get better, I’ll use higher-level tools that make things look simpler. But even then, being detail-oriented is still super important.

Why? Because debugging exists. Debugging means finding what went wrong. And most of the time, it’s something small:

  • A missing symbol
  • A wrong value
  • A tiny logic mistake

If I’m not sharp with details, I won’t even see the problem. So if I want to get good, I need to train myself to care about the small things. In coding, the small things are the big things.

How I Study

Now I want to talk about mistakes I make when it comes to how I study.

Mistake: Study badly and not trying to fix it

This is one of the biggest reasons I might fail, and the scary part is I might not even notice it. Sometimes I think I’m studying… but I’m actually not doing it properly.

At Sigmaschool, I’ve seen two types of people:

  • Some people take notes
  • They make flashcards
  • They review things again and again
  • They treat learning seriously

Others don’t do any of that. And honestly, most of the time, I can already guess who will do better. About 90% of the time, the ones with better study habits win.

There’s something I strongly believe in: Habits matter more than excitement.

At the start, it's always easy to feel super motivated. Everything feels fun and new. But that feeling doesn’t last. No one stays excited for 1–2 years straight. So if I rely only on motivation, I’ll eventually slow down or stop.

What actually matters long term is my daily habits. Do I show up every day? Do I revise? Do I practice properly? That’s what separates people who succeed and those who don’t.

Another problem is, because learning is online, I might not see how hard other people are working. In a classroom, I can look around and think, “Wow, they’re working really hard, I should step up.” But online, it’s easy to feel like I’m doing enough… even when I’m not.

That’s why I need to actively compare and learn from others.

At Sigmaschool, I can see how serious students behave:

  • They talk about how they study
  • They share what works
  • They put in real effort

That gives me a benchmark. The good news is this:

Even if my study habits are bad right now, I can fix them. I can learn from others I can copy what works I can improve step by step

Study habits are not something I’m born with. It’s something I build.

Mistake: Getting distracted by new tech and trends

This happens to almost everyone, even experienced developers. In tech, there’s always something new. New tools, new frameworks, new trends. I could literally spend all day just reading about them.

It tricks me into thinking I’m learning… when I’m actually just jumping around.

It also gives me this feeling like I’m missing out. Like, “Everyone is learning this new thing, I should too.” But most of the time, that feeling is wrong.

Around 99% of those blog posts and trends are about things that are too advanced for where I am right now. They are not basics. They are not foundational.

By the time I finally understand the basics properly, those “hot” technologies will probably already be replaced by something new. So chasing trends is like chasing a moving target. I never catch up.

There’s also another mistake I might make - Trying to learn advanced topics too early.

Things like:

  • Design patterns
  • Agile methods
  • Test-driven development

These sound important. And they are… later. But if I try to learn them too early, I won’t really understand them. It’s like trying to learn how to run before I can even walk. Without real experience, these ideas don’t stick. They just confuse me and slow me down.

So instead of helping me, they actually hurt my progress.

What I should focus on is simple: Master the fundamentals first.

Once I get strong in the basics, learning advanced stuff becomes much easier and actually useful. If I keep chasing shiny new things, I stay busy… but I don’t actually improve.

Mistake: Avoiding hard problems and looking for shortcuts

When something feels hard, I might try to skip it. I might ask, “Do I really need to do this?”

But one thing I've come to realise over the years is this - the harder the problem, the more I grow.

In real jobs, no one pays me just because I know something. They pay me because I can solve problems. And most of the time, those problems are new. I won’t have seen them before.

So if I avoid hard problems now, I’m not preparing myself for real work.

The best way for me to improve is simple: I should face difficult problems and work through them.

That’s how I build real skill. But I also need to be smart about it.

If I randomly pick super hard problems online, some might need advanced math or things I haven’t learned yet. That’s not helpful.

At Sigmaschool, I make sure the problems match my level. They are hard, but still doable. That’s where real growth happens.

Mistake: Thinking that “learning slowly” means I can relax and do less

Understand what it actually means to take the "slower" path to mastery. It does NOT mean I can be lazy. It does NOT mean I can take long breaks and chill.

It means I don’t rush. It means I focus on understanding deeply. In fact, the slow path usually means more work, not less. Because instead of just skimming topics, I go deep.

I don’t move on until I really understand. A lot of people do the opposite.

They rush forward. They just want to “finish” quickly. But when I rush, I don’t truly understand. And that comes back to hurt me later.

So the goal is not to be slow for the sake of being slow. The goal is to fully understand what I’m learning.

Mistake: I don’t build a clear mental picture of how things work

This one is a bit harder to see, especially if I’m new. When I learn coding, I shouldn’t just memorize things. I should try to understand what’s actually happening behind the scenes.

This is what I call building a “mental model.” A mental model is like a simple picture in my head that explains how something works.

Without it, everything feels random and confusing. With it, things start to make sense. Instead of remembering 100 random rules, I understand a few core ideas.

And from those ideas, I can figure things out.

My mental model will be wrong at first. That’s normal.

It will be simple, incomplete, maybe even incorrect. As I learn more, I need to keep updating it. If something doesn’t match what I think I know, I shouldn’t ignore it.

I should stop and ask: Why doesn’t this fit? That’s how I improve my understanding.

Over time, my mental model becomes clearer and more accurate. And once that happens, learning becomes much easier.

How I code

Now I’ll talk about mistakes I make when actually writing code. These are more technical, so they’re a bit easier for me to fix if I pay attention.

Mistake: Ignoring error messages

When I first see an error message, it looks scary and confusing. So what do I do?

I ignore it… or I panic. But that’s a mistake.

Error messages are actually trying to help me. They are like clues telling me what went wrong. At the start, it’s hard to read them. That’s normal.

But if I slow down and go through them carefully, I’ll start to understand patterns over time. This takes patience. I need to train myself to look closely at details.

Another mistake I might make is this: I just copy and paste the error into Google and hope for an answer. Sometimes that works, but often it doesn’t.

Because my error might include specific details from my own code or setup. Other people won’t have the exact same situation.

So instead, I should ask: What is the general problem here? Then I search for that idea, not just the exact message. Also, I shouldn’t run to Google or AI immediately.

I should first spend real time trying to understand the error myself.

If I depend too much on others, I’ll get stuck when I face a problem no one has answered online. And that will happen.

Mistake: Not debugging properly

Reading an error is just step one. Fixing it is the harder part.

Sometimes, there isn’t even an error message. The code just behaves wrongly.

Now I have to find the problem myself. This is called debugging. A lot of people, including me early on, don’t know how to do this properly. They just guess. Try random fixes. Hope something works.

That’s not real debugging.

To debug well, I need a clear mental model of how my code should work. Then I can:

  • Go through the code step by step
  • Check where things go wrong
  • Spot what breaks my expectations

Sometimes, errors show me that my understanding was wrong. That’s actually good.

Those lessons stick the strongest.

Debugging is one of the most important skills I can build. If I get good at this early, I’ll be far ahead of most people.

Mistake: Code by guessing

This is when I just try random things until something works. I don’t really know why it works. I just want it to pass. At the very beginning, this is okay. It helps me explore.

But I cannot stay like this. If I keep coding without understanding, I’ll get stuck very quickly.

Modern tools make it easy to build things fast. But when something breaks, fixing it is hard. And if I don’t understand what I built, I won’t be able to fix it.

In real jobs, I usually won’t build something from scratch. I’ll work on existing code. I’ll fix problems. I’ll maintain systems. And I cannot “guess my way through” that. I need to be systematic. I need to understand what I’m doing.

Mistake: Rushing through exercises without going deep

Sometimes I feel like I need more practice. “I need more exercises.”

But often, that’s not the real problem. The real problem is I didn’t go deep enough on the exercises I already did. If I just solve a question and move on, I miss a lot of learning.

Instead, I should slow down and explore:

  • What happens if I change this?
  • Does my solution break in weird cases?
  • Did I really cover all possibilities?

These are called edge cases, meaning unusual situations where things might fail. If I don’t think about these, my code will be weak. Doing more exercises won’t fix that. Going deeper will.

If I fully explore one problem, I learn much more than rushing through ten. Over time, this builds a strong instinct in me.

I start writing better, stronger, more reliable code without even thinking too hard about it.

How I Communicate

Now I’ll talk about mistakes I make when I communicate, work with others, and ask for help.

Mistake: I ask for help too quickly without thinking first

When I get stuck, my first reaction might be to ask someone for help. But that’s not always the best move. Before I ask, I should try to solve it myself.

I should spend time thinking. Testing. Trying things. If I skip that step, I’m not really learning.

Another mistake is how I ask questions. I might ask “how to do something” instead of “why it works that way.” “How” questions are usually easy to answer. I can often figure them out myself just by trying things. But “why” questions go deeper.

They help me truly understand what’s happening.

For example: Instead of asking: “How do I do this?”

I should ask: “Why does this work like this?” That’s where real learning happens.

Mistake: I get too emotionally attached to my code

This happens to almost everyone, including experienced developers. I write something, and I feel proud of it. Then someone gives feedback… and I take it personally. That’s a mistake.

My code is not me. If someone points out a problem in my code, they’re not attacking me as a person. They’re helping me improve.

If I get defensive, I block my own growth. At Sigmaschool, I talk about code a lot and give feedback often.

My goal is always to help improve the code, not judge the person. So I need to learn to separate myself from my work. The faster I accept feedback, the faster I improve.

Mistake: I get too rigid about “the right way” to do things

As I learn, I’ll discover “best practices” and certain ways people recommend doing things. That’s good. But another mistake is thinking those ways are always correct, no matter what.

I might start thinking: “This is the only right way.” That’s dangerous. In reality, everything depends on context. Sometimes people break “best practices” for good reasons.

If I see someone doing something differently, I shouldn’t immediately think they’re wrong. Instead, I should ask:

Why did they do it this way? There might be a valid reason. If I jump in and judge without understanding, I might come across as arrogant.

So what I should do is: Learn best practices. Understand why they exist. And develop judgment on when to use them

That’s how I become more mature as a developer.

Mistake: Using unclear words

In coding, I deal with ideas that are quite abstract. So if I explain things in a messy or unclear way, people will misunderstand me. That’s a problem.

I need to learn to call things by their correct names. For example, instead of saying “that thing,” I should use the actual term. This makes communication much clearer. I should also pay attention to how programmers talk and learn their vocabulary.

If I speak clearly and precisely:

  • People understand me faster
  • I work better in a team
  • I perform better in interviews

Good communication is not optional. It’s part of being a professional.

Conclusion

There are many ways I can try to learn coding. Some ways work better than others.

But the mistakes I listed above are things I should avoid. Some of them will be easy to fix. Some will be harder.

The most important thing is this:

I need to be aware of my habits.

If I don’t notice my mistakes, I can’t fix them.

So I should keep checking myself:

How am I studying? Am I rushing? Am I avoiding hard things?

If I actively try to improve my habits, I’ll get better over time.

In the end, building good habits early can be the difference between succeeding… or failing.

Subscribe to Deric Yee

Sign up now to get access to the library of members-only issues.
Jamie Larson
Subscribe