Learning to Code: Getting over the Beginners Hump
Feeling lost is part of learning to code, not proof you can’t.

It was 2008, and I was in my first programming class ever. While it was not the first time I had touched code (I did theme my MySpace account 😆), this was the first time I had actually sat in a classroom to learn a modern programming language. As we opened our books to the first chapter on Object Oriented Programming, the professor paused and made a statement.
“You have to accept that there will be advanced concepts and syntax that you will have to use in the learning process but won’t necessarily understand. That is part of the process of learning to write code. You just have to accept that this is how the code is written and not understand why yet.”
Well said. That's the crux of it all. You will have to use advanced concepts that you won’t understand at first in order to learn the basics (which you will eventually understand).
I have to admit, as I sat in that classroom on the first day, anxiety crept up on me as I found myself exceedingly lost in the topic. “Maybe this is just not the right path for me. Maybe I just don’t have the type of mental faculty needed to grasp programming. Maybe I am simply not “smart” enough.”
There is just so much stuff that I needed to learn that it felt so overwhelming.
The truth is that every doubt flowing through my brain was nonsense, and that I was certainly not alone in those thoughts and feelings. I am here to tell you that everyone gets overwhelmed when first dipping their feet into the field. Even experienced devs get overwhelmed from time to time.
That feeling does not mean you are failing. It usually means you are standing at the edge of something new, and your brain is trying to map a landscape it has never seen before. Programming dumps a lot of vocabulary, tools, and mental models on you all at once. Of course it feels like drinking from a firehose. The goal is not to absorb the entire firehose on day one. The goal is to keep showing up long enough for the stream to start looking like water.
So, how does one get over that initial pedagogy in a vacuum?
First, let's take a look at the steps of the learning process: The 4 P's
Preparation: Arousing Interest
Presentation: Encountering the New Knowledge or Skills
Practice: Integrating the New Knowledge or Skills
Performance: Applying the New Knowledge and Skills
Preparation is the first step in any learning process. This is where the motivation to learn something cool and new actually happens. Preparation in the traditional sense would occur in the classroom as the teacher introduces a topic that piques your interest. However, this can happen in any number of ways, many unrelated to the classroom. Maybe it happened while you were reading a news article about the subject. Or maybe you spent some time in a subreddit dedicated to the subject, and it tickled your curiosity. Really, how it happens here is irrelevant; it just needs to happen, and you need to be able to maintain the interest.
Protect that interest on purpose. Motivation fades when every session ends in frustration and nothing that feels like progress. Give yourself small wins early: a page that loads, a button that works, a script that prints the right thing. Curiosity gets you in the door. Tiny evidence that you can do this is what keeps you from walking back out.
Presentation is next. In my experience, most students get stuck at Presentation, and unfortunately some never get beyond that point. Students get super excited about the prospect of learning to code, but then the drive dies out once confronted with the difficult concepts and workflows associated with development work. To overcome the anxiety brought on by a lack of understanding, this step should only be viewed as an in-depth introduction to the topic.
You really are not expected to understand all of it at this point. In fact, some may not understand anything at this point. This is especially true with visual learners like myself. It is very important to take good notes and ask lots of on-topic questions, as doing so will make the next step less overwhelming. If you are a visual learner, those notes will serve as your foglight.
If you are learning solo, treat tutorials and docs the same way. Watch or read once for the map, not for mastery. Pause and write down the terms you do not know yet. Star the parts that feel foggy. Resist the urge to restart the same video five times hoping comprehension will magically arrive. That loop keeps you stuck in Presentation. Your job in this step is exposure and orientation. Understanding comes later, with your hands on the keyboard.
The next step is Practice. Practice is where the learning and retention actually happen for people, and in my opinion is the most important step in the entire learning process. Please note: If you are a self-learner and you fail to invest the necessary time here, you will not learn. I cannot emphasize this enough. It does not matter how many articles or books you read, nor how many tutorial videos you sit through — if you don’t practice what you acquired in the presentation step, you will not retain the information, and you will never actually be able to apply it.
The more time you spend here, the greater the benefit. One thing I found incredibly useful when working on practice assignments is to not move on to a new topic unless I feel that I can comfortably explain to someone what the current code does and how it does it. This approach provides a really solid reinforcement of the material as you switch your brain between learning and teaching modes. Doing so also highlights your weaknesses and identifies where you should be investing more time before moving on to the next topic.
Practical tip from the trenches: rebuild the example without looking. Close the tutorial. Open a blank file. Try to recreate the idea from memory and your notes. When you get stuck—and you will—peek, then close it again and keep going. That struggle is not a sign you are bad at this. That struggle is the learning. Also, break practice into short, consistent sessions. One focused hour most days beats a heroic eight-hour weekend followed by two weeks of silence.
At some point in your learning, concepts will just start to click. You will have reinforced enough material that you will be expending less time and energy having to focus on every nuance. As this happens, you will find yourself feeling less overwhelmed when you fire up your code editor. Conceptual understanding that once felt out of reach will instead become second nature.
That does not mean the hard days disappear. You will still hit walls. You will still Google the same error twice. The difference is that the wall starts to look climbable. You will recognize patterns. You will remember that you have been confused before and figured it out. That quiet confidence is earned in Practice, not gifted in Presentation.
Then comes Performance: applying what you learned to something that is yours. This is where junior developers either level up or get stuck in tutorial purgatory. Performance means building a small project, contributing a fix, styling a page from scratch, or solving a real bug without a step-by-step walkthrough holding your hand the whole time. It will feel messy. That is normal. Real work is messier than coursework.
Start smaller than your ego wants. A tiny app that works beats a grand portfolio idea that never ships. Finish something imperfect. Then improve it. Each finished thing teaches you what tutorials never can: how to navigate ambiguity, how to debug your own decisions, and how to recover when you break things.
You also do not have to get through this alone. Ask questions. Join a study group, Discord, or local meetup. Rubber-duck your code to a friend. Searching well is a skill—learn to read error messages, skim docs, and ask for help with what you already tried. Asking for help is not a weakness. Refusing to ask while spinning for three days often is.
The good news is that once you learn one language, picking up others becomes exponentially easier! So, if you are early in your learning and you feel overwhelmed or stuck, just keep pushing through. Accept that you will have to use code you don’t understand while learning and be OK with that.
Thousands have walked the same path before you, and most make it through.
And when the doubt creeps back in, and it will, remember that classroom in 2008. Feeling lost on day one did not mean I lacked the mental faculty for this work. It meant I was beginning. You are allowed to begin messy. You are allowed to not understand yet. Keep practicing. Keep building. The clarity comes after the confusion, not before it.






