Is it hard to learn to code?

Just over one year ago, I released my first app on the App Store. A couple of months before that, I was asking myself: how hard would it be to learn to code? I circled around the idea of picking up programming (I had no programming experience before) and was anxious whether I was fit for the task. You see, even though I learned (and taught!) some wild things in my life, I was afraid that I’m not cut for it.

Even though I wanted to learn to code for a long time now, I was afraid of losing my comfort and being a beginner again. Many of the things I learned were entirely self-taught, so that would be the approach I would take this time as well. That added to my fears: can I do this on my own, without all these bootcamps and courses?

I didn’t find the answer I was looking for. I decided I might as well just try.

So, how did it turn out? Some time after releasing my first app later I released a second one, which has not only received pretty good reviews, but also paid for its own „hosting” (let’s call it that way) expenses required to host your app on the App Store.

So, I think it went quite good, overall. But enough about me. The question is: can you learn to code?

Can anyone learn how to code?

Yes! I firmly believe that with a right approach, anyone can learn how to code.

Truth be told, I believe anyone can learn anything, but that’s perhaps a story of its own.

There is one word of caution, though. And at times it can be important: coding will certainly seem difficult at times. And I’m not talking yeah, this particular problem might take me a while — I mean I will never learn it, why did I even try level difficult.

Why’s that?

Why does coding feel difficult to learn?

There are a couple of factors determining the actual difficulty of learning a programming language: whether or not you learned any programming language before and how similar to that is the one you’re learning right now. How much you’re familiar with computers. How good are you on learning on your own (yes! That’s regardless whether or not you’ve got yourself a teacher — be it bootcamp or mentorship — sooner or later you’ll have to learn on your own).

But these types of „problems” don’t even matter in the long run because you can solve them just by throwing more hours at them. Because, sooner or later, you’ll be knowledgeable enough. You might drive slower, but you’ll get there. You’ll learn eventually.

These are not the problems. The real problems are a threat to even throwing more hours at your journey. And these are the psychological ones.

You see, when you feel like even starting and investing the time spent learning already was a mistake, the entire endeavour is at danger because when you give into your fears, there will be no more hours to throw at the problems — because you’ll give up.

Some of the most threatening in my opinion are the fear of even starting, the valley of death and the imposter syndrome.

The fear of starting

There are certain types of skills that we often associate with being smart or being highly skilled / educated / experienced person: like programming, like being a speaker of a completely foreign—alien, even (meaning totally unrelated to the one you’re a native speaker of)—language, like Japanese, for example. Or aviation law expert. You must be pretty smart to learn any of these, right?

Wrong. And I know what I mean because I learned — and taughtall of the above. And each of these skills felt almost impossible to learn at some point.

In a language learning world there’s a saying that although Chinese language is hard, every Chinese child can master it enough so that they’re able to communicate freely, just because they don’t know it’s difficult.

It’s the same with programming. Treat it like a profession, where in the beginning you have only one task: just show up and learn from your mistakes. Invest your time. Be consistent even if you don’t feel like it.

After that First Crisis (a nod to all Foundation book series enthusiasts) — whether you’ll actually encounter it or not — there might come a second one. Let’s call it — in startup terminology — the Valley of Death.

The Valley of Death

You see, the first few days will be something of a honeymoon. You’ll learn a lot of new things. So much will be revealed to you („so this is how an app works! Wow!”) in a matter of days and weeks. But some time later there will come a time when all that learning will seemingly come into a stall. Or perhaps you’ll even feel like you’re not learning at all. This will often happen as you dive deeper into the material you’re learning, will encounter something difficult especially for you or perhaps when you’re using the wrong method.

The point is, your mind — even though it just needs some time to process all the new data — won’t feel like it’s learning. And that’s one hell of a problem in itself. Because then, just then, when you feel you’ve reached a plateau, your brain goes into why bother mode.

That’s when the most people quit. That’s why it’s called the Valley of Death.

The truth is: coding is just a skill. And any skill can be mastered. It takes a fair amount of time, dedication and persistence, but it can be done.

The imposter syndrome

Besides The Valley of Death, there’s another pitfall waiting for someone who’s learning to code, namely the imposter syndrome: a feeling that you’re just a pretender, and not a real programmer, whatever that would mean.

By the way, I’ve encountered this in anything I’ve learned. Languages, air traffic control, anything. Imposter syndrome is a normal part of learning process.

The hard part about learning how to code (and any learning for that matter) is the psychological struggle. Whether or not learning how to code will actually be difficult for you, it will certainly feel like it. It will be tough at times.

You’ll be more prone to this the more you overwork. Let’s say you’re a junior developer and want to impress, so you go full speed ahead. Or you’re advanced enough to work on your own project, and you’re fixing something. There might come a time when your tired mind cannot handle yet another I don’t get it and starts to think: maybe I’m just fake?

What to do then? First, don’t give into your emotions so easily. Try to get to the underlying reason — perhaps you’re just tired and overworked. If able, take a break, even a short one. Realisation that these emotions are perfectly normal might also help a bit.

What to do when I feel stuck when learning how to code?

First, do everything you can to enjoy the ride. It will be a long one.

That’s the more glorious, often repeated advice. The one about motivation. The one that makes you want to sit down and learn.

But there’s the other side to that coin: the one about discipline. The one that makes you sit down and learn even though you don’t feel like it. Frankly speaking, you need both. Motivation is what makes you fly higher when you fly. Yet, discipline is what keeps you from crashing when you fall.

Embrace falling. Because you will fall.

Embrace failing. Because you will fail. Often.

And if you do — don’t give up, but be consistent.

So, what to do? Simple. Don’t overthink it. Just show up.

It helps to know all the psychological barriers you might encounter (and probably will), but it works to a degree. There might come a time when you have to just show up, even if you don’t feel like it.

It takes a kind of courage to show up again and again despite failing — because you will fail. It takes courage to leave your comfort zone (that one’s overused, I know. But it’s true) to go out there and build when you feel you’re not only not ready but nowhere close instead of just buying another textbook.

(Cause, you know, buying textbook after textbook is a form of procrastination in itself)

Get used to learning. Shift your paradigm — don’t knowing something isn’t a good thing or a bad thing. It’s just a thing, without being a negative or positive in itself. It just is.

Coding, like Japanese and aviation, is something that’s constantly changing and shifting. All of these are living things. Programming languages change. Frameworks change. Operating systems change. Eventually, you’ll again find that you don’t know something.

With a certain kind of attitude, it can be humiliating — how could I don’t know that? But you must accept that you don’t know everything.

There’s one secret when it comes to coding: you’ll never stop googling and learning. The only way you can truly fail is to give up.

So go out there and do everything to enjoy the ride.