Why I Think Programming Is Tough To Learn

  19 Jun 2015


Learning any new skill is hard. It requires patience, time, and plenty of motivation. For a lot of people, these three things are very present, but programming is still extremely hard to learn. I have a theory as to why.

The process of learning is complicated, and varies depending on what exactly you are learning. For most skills, you need to buy something to actually learn. For example, to learn guitar, you need a guitar. To learn to snowboard, well, you need a snowboard (among other things). With programming, this barrier to entry is seemingly lowered, because everyone has a computer. Unfortunately, it doesn't make learning any easier.

You can track your progress with relative ease when learning most things. With guitars, it might be finally playing that chord right, with snowboarding, it might be finishing the run without falling. These are physical, trackable things that do something important psychologically; it helps you build learning momentum. When the three conditions that I mentioned earlier are present, in addition to momentum, learning becomes considerably more engaging, fun, and easy. For many skills, building momentum comes after learning a little bit of the basics. Once you have that, you can start to build momentum and make considerable progress on the learning curve.

So why is programming any different?

I think programming is different for a variety of reasons, and I want to touch upon the most important of those reasons.

1. Expectations

We live in the age of technology, and we have seen how simple technologies can become viral and change various aspects of our lives. In addition to that, we have seen the creators of these technologies become rich, at seemingly any age. It doesn't matter if you're 13 or 50, knowing how to program seems like it could make anyone wealthy.

Unfortunately, not all of us will become the next Mark Zuckerberg or Bill Gates. In fact, very few ever do.

Having these expectations can seriously hamper your momentum when trying to learn how to program. You should learn programming because you enjoy learning it.

2. Getting the "basics"

With most skills, the basics are exactly what they seem, basic. Learning them isn't extremely difficult and once you do get them down the learning process becomes a lot more enjoyable. With programming, the fundamentals are simply more difficult to grasp. Programming has everything to do with how you think and not what you can physically do. I bolded "think" and "physically" because they both are two very different kinds of skills. Learning how to think in a different way is much more complicated than trying to learn how to do something different physically.

This is why many people associate good math skills to programming. Once you learn and understand basic pre-calculus and calculus concepts, programming does become easier, as it is something that I can attest to. Those concepts you learn in math are difficult because they force you to think about something different, and the only way to actually understand it is to change your frame of thought. In math, when you get the answer to a question wrong that you just can't figure out, the problem almost always lies in how you were thinking about the problem. Once you are able to change your frame of thought, you almost always think "sheesh that was easy if I had just thought about it differently". Once you can do this sort of thinking, learning to program becomes a lot easier.

3. Getting Results

The last, and personally the most critical reason why programming is hard to learn, is that it is hard to get really good results early. Now, for most skills, even when you are just starting out, you might have beginners luck or maybe through some fluke you do really good on some occasion. Going back to the guitar example, you might somehow play really good while practicing once, or if you're snowboarding you might get some really good runs in where you didn't fall at all.

These events, or flukes, or whatever you might call it, help immensely in building momentum. It's like getting a taste of what you are capable of. And best of all, for many skills this can happen early on. With programming, this point is harder to reach. It takes longer for an event like this, and because of that you don't have the same momentum, comparatively.

Going beyond this, building momentum and getting results with programming is also difficult because there is often a lack of creativity in the beginning stages. Whether it be books or online tutorials, it's hard to emulate a result with programming without "copying" This, of course, only applies to the beginning stages. But, it is still quite different from other skills, where you might early on develop different mechanisms or styles that aid you in your learning.

So this leads us the most important part; how can I make learning to program easier for myself?

Although there is no easy answer, I think a couple of different different tools are available that can make this process easier. One of my favorites is Arduino, a development platform that uses programming in conjunction with a piece of hardware to produce some sort of result. You can buy one of their boards and program it to do something. The primary benefit that I have gotten from it is that it helps build a lot of momentum. Your expectations automatically conform to what you see, which is a small board that seemingly cannot do much. But when you start to program small things, you eventually start getting ideas as to what you can do with the little you've been given. This creativity aids in the momentum process and allows you to explore and learn yourself. Although this is just one tool, there are others like Raspberry Pi which offer the same sort of experience.

To conclude, we know now that programming is no easy task, but it CAN be learned with the right mix of variables. Having hardware you can program aids in this process and allows you to build momentum at a rate more comparable to learning other skills. Once you are able to change how you approach a problem, and get just the right amount of basics down, programming can be just as fun as other skills. Your approach to it is everything.

comments powered by Disqus