I just can't learn programming. I don't get it. What is wrong with me?
Despite the plethora of new coding apps, fun-looking coding tutorials, and even children's coding toys that have emerged in recent years, it's important to state the truth as it is: Coding is complex. Anyone who expects learning to code to be easy is setting an unrealistic expectation for themselves. So, let's just get this out of the way: Learning to code is a complex process.
One of the most important points I always emphasize to anyone who is just starting out is: Learning to code isn't just learning a new subject. Rather, it's learning a whole new way of thinking. And here's why: From our births to adulthood, we have been trained to think and communicate like humans, since - well - that's who we are. Coding on a computer, on the other hand, is communicating with a literal hunk of metal, which is something that we're not quite used to.
When we talk to another human, our counterpart isn't just listening to the words we say. Instead, they are picking up our tone and body language, and processing everything within the context of their own life experiences. With a smirk of a flicker of an eyelid, we can communicate volumes to others, without having to utter a single word.
A computer, on the other hand, only understands literal instructions. (In fact, under the hood, all a computer really understands is a bunch of 0's and 1's!) It doesn't have any intuition, and will only do exactly what you tell it to do.
Furthermore, a computer only understands a limited set of instructions. That is, you have to figure out how to use a limited set of commands to get the computer to accomplish any task you desire.
What's more, is that even when a computer follows your instructions, it doesn't understand your real intention. Instead, you get the computer to just so happen to do what you want. Let me explain what I mean.
You know those toy claw grabber machines they have at the arcades? Think about those for a moment. How do you get the machine to grab a toy for you? You move the lever forward so that the claw travels a certain distance in that direction. Then you move the lever to the right so that the claw can move a number of inches to the right. You then push a button which causes the claw to descend and close.
If you're lucky enough for the claw to have grabbed a prize, it's not because the machine knew what you were trying to do. It's because you issued a series of specific commands to the claw - to move, descend, and close. If it successfully grabs hold of something, it's because your instructions just so happened to get the claw to snag a prize. Obviously, this was your intention, but you essentially "hacked" the claw - that is, you got it to get you a toy by issuing it a set of dumb, basic commands.
The same applies to coding. Any program we write is just a literal set of instructions that just so happens to get the computer to do what we want. Even if we want the computer to accomplish a simple task like adding up the sum of a list of numbers, we have to figure out the literal instructions that will make it so that the computer just so happens to give us the correct result.
Learning this way of thinking is a completely new mindset. Some people take to it quickly, but most people need lots - and I mean lots - of practice to think in this new way.
It would take an entire book to spell out all the skills and steps one needs to learn to code. Additionally, there can be many different reasons why different people have difficulty learning to code. However, I've elaborated on the fact that coding entails a new mindset to make two important points:
1. Learning to code takes lots of practice.
2. Learning to code takes lots of patience.
Because learning to code is learning an entirely new mindset, you need to be patient with yourself, and be prepared to spend lots of time practicing. Just because the learning process is going slower than your expectations doesn't mean that you're not making progress.
It can also be helpful to meet with someone who can show you the ropes and help identify your weak spots, as this will help reveal which areas you may need the most practice with.
However, it's important to realize that you're learning an entire new way of thinking, and that can take time. With practice, and patience, you can get there.
Get Expert Advice
The Actualize Blog is where you can get expert advice and insights for learning to code from our CEO, Jay Wengrow. Subscribe to the Actualize Blog and get notified each time we publish a new article.