The Struggle With Learning To Code

A recent interaction on Twitter with @maaike.brinkhof prompted me to write this post.

The blog post Maaike went on to publish is:

I’m now even more convinced after reading the blog post that a lot of us can relate to this journey. How have you struggled with learning to code?


I still remember my first struggle. It was to do with the user-friendliness of the language. I started with C in my first job, and it was not easy, not because I didn’t understand the constructs, but because the language itself is not that straightforward. And, the examples provided in the books had complex variable names and constructs that were difficult to understand, which made it even more difficult. And yes, there was no Internet at that time, and no Stack Overflow!


Thank you for sharing this! I was getting on with Cypress and JS nicely until this afternoon and I reached a point where I felt exceedingly stupid and this post has made me feel better <3


I’m glad I could help you a little. You’ll get there!


So relatable. Thanks for sharing!

1 Like

I still struggle with learning to code.

Online courses, youtube, stack overflow etc. have helped me to learn, but IMO they are not good enough for a self learner. The problem is that most courses simply don’t have the depth and breadth that one needs to at least become ready for a “junior” level job. They also have few or zero realistic projects to practice which is a major problem. I guess the best way to master something is by working at “good” companies and getting “good” mentors early on. But, to get all that requires a lot of luck and work.

I am sure there are many people who struggle to code or get better at it, but almost no one makes online courses to address this need. One of the reasons might be money. I guess the experts prefer to do in-person courses only because there is more money (which is ok) and less chance of piracy, besides better interaction. I have a lot to say about the piracy, but I’ll save it for another post. So, if you cannot afford such courses or get a paid mentor, then you’ll have to find a job which will give you the right start. A good mentor and company can accelerate your progress, and put you years ahead of your peers.

As an aside, there are too many resources (books, blogs, courses etc). Unfortunately, many of these are of poor quality or are not vetted by reputable people. So, its hard to decide which resources to choose.

So, my struggle continues.


Merely the fact that you know that finding courses that teach good habits are hard to find tells me, you are being pro-active already and being careful.
I suggest getting a Udemy subscription or Linkedin-Learning subscription paid for by your employer. Once you get up to intermediate level courses, made by people paid to produce good material, they will point out the bad habits and start to cure you. It’s probably worth more than £40 a month to your boss, to be teaching you good habits.

I do like the idea of learning to program as being like “eating an elephant”.

1 Like

I struggle with this too, as a self-thought kind of a guy, working in a company where OOP languages are used, and most of my colleagues have been coding in C# and Java in colledge, I know they had a big advantage over me. I’m learning to code on a need to know basis and trying to give it some context, but I think what self-tough people need the most is to focus on the fundamentals, not just for programming, but for computer science in general. And a lot of practice.

I have met some honestly, not too bright people how code (relatively) efficiently, better than me in any case, just because they are stubbornly president, committed, and consistent in learning to code. This is something I lack and I’m aware of it. I was always the smarty-pants and knowing that you are more intelligent than the average can make it hard on your ego to come across something that you don’t figure out on the first try. So in a nutshell, for some people, self-improvement and self-criticism is a pre-requisite to learn to code.


Holy crap, Maaike! Your description of how and why you avoided math in high school is almost identical to mine. I’ve always had a similar, overly strong preoccupation with needing to feel “smart” by being able to understand things instantly. Having to work to learn something was hard, and it meant that I might fail, and thus discover that I wasn’t smart after all!

I’m 55 now, and I have gotten past a lot of that, but not all of it. My current issues with learning to code are still affected by it to some degree, but I’ve found some freedom in reminding myself that I don’t need to worry about whether or not I am smart. I can just enjoy learning!


Exactly Debra, enjoy learning as much as you can!

I find comfort in this concept from stoicism: focus on the process and not on the outcomes. The process (your attitude towards learning) is something you can control, but the outcomes you cannot control 100%.


I’ve been writing a post on this topic lately and I finally finished it, here it is:

I think, and here is the hard part to grasp, that learning to program computers is easy for so many and has become hugely popular with certain kinds of person, should tell us something. These days everyone thinks they want to program a computer. The computer is the ultimate friend to have, it never sulks and goes to play with other friends, its always there ,that cursor blinking gently on the screen, almost playfully. Why?

Well, it comes down to something I recently discovered, and it’s the mechanics of learning a “craft”. I meant to become a Craftsman (sic) Craftsperson or Grand Master (sic) Guru. To learn a craft, you must have a trainer who lets you watch, then lets you have a try , and lets you learn at your pace, but who is always there. A professional trainer who always gently corrects you so that you learn interactively, by doing, making small mistakes, correcting and doing again. Craftsmanship comes after thousands of hours, who can afford a trainer who can stick around for that long? Craftspersons, will learn each tool, one at a time, in a specific order, the tools of the programmer are using the keyboard, screen, some files and compiler. The trainer is the compiler error messages, and here is where the penny dropped for me.

The compiler is incredibly patient, it always tells you when you have gone wrong, it never ever makes mistakes in it’s instructions. As the learner move onto advanced tools like algorithms and patterns and 3rd party libraries, the trainer never leaves you alone. And it’s this way in which learning to program mimics the way that furniture crafting, architecture, art and so many disciplines used to work in the old days is so similar. It suddenly makes sense, why learning to program can be attractive once you think of it as a journey where you start with the basic tools and build up, working at your own pace and don’t just dive into the deep end.

I’m not saying it’s easy, but having an understanding of how humans are wired, and how you personally learn and progress at your best, is still important. The grand masters had a trick or two up their sleeves, it was patience.


“Watching John with the machine, it was suddenly all so clear. The Terminator would never stop, it would never leave him… it would always be there. And it would never hurt him, never shout at him or get drunk and hit him, or say it couldn’t spend time with him because it was too busy. … In an insane world, it was the sanest choice.” (Sarah Connor’s internal monologue in Terminator 2: Judgement Day, screenplay by James Cameron and William Wisher)