7 min read

Why is learning to code so hard?

Aug 17, 2020 5:13:32 AM

Our instructor Jeff is also an author, here are some tips from his blog, a great coding resource:

As an instructor at Byte Academy, a high school AP computer science teacher, and a former middle school teacher, I’ve worked with countless beginning computer programmers. I’ve been there for everyone - from 10-year-old kids to adult career changers - while they write their first “Hello, World!” programs in languages like Python, JavaScript, C, PHP, Ruby, and even with MIT’s cool Scratch.

  • Learning to code is no more difficult than learning anything else because all skills have a similarly high mastery point.
  • Learning to code seems harder than learning other stuff because it has a higher barrier to entry.
  • There’s proven strategies you can use to make this barrier to entry less intimidating.

Two patterns I’ve seen emerge with every new programmer:

1.    They have the impression that learning to program is terribly hard.

2.   They think learning to program is relatively harder than learning other stuff, like learning a new language, learning to play a sport, or learning to write poetry.

In my experience as a self-taught programmer and as a teacher of many beginning programmers, I’ve learned that these two impressions are not true. Let me propose something different:

1.    Learning to code is no more difficult than learning anything else.

2.   Learning to code seems harder than learning other stuff because it has a higher barrier to entry.

Barrier to Entry


Phase 1 – Barrier to Entry

Let me define the barrier to entry as the amount of work required to achieve basic competence with any skill.

This is my amazing graphic that demonstrates my idea: Learning to program seems more difficult than learning other things because the barrier to entry is relatively higher.

Let me tell a quick story. My dad is a K-12 teacher, professor of education, and author. He’s always said that the two things he’s best at, teaching and writing, are things that anybody assumes they can do without any training. Anybody assumes they can teach, and anybody thinks they can sit down and just write a book. He says he hears this all the time from friends of his. Something along the lines of “I’m going to take some time off from my busy job as a stock trader and relax and write a novel!” People will make similar comments about teaching. This type of comment makes my dad angry, because he is a real author who writes books, and this is a skill he’s mastered over decades of practice.

Why is it that people think they can write a book without any training, but nobody thinks they can sit down and write code for an encrypted messaging app without any training?

Here’s the answer: the barrier to entry for writing is lower than the barrier to entry for coding.

If I sit down to write a book, and if I don’t have any formal training as a writer, I can get started right away, and my book will start to make sense. It might be a sucky book, but it will still be a book.

If I sit down to write code for an encrypted messaging app, and if I don’t have any training as a programming, I won’t even be able to get started. The barrier to entry – or the amount of work required to achieve basic competence – is high with programming. I need to learn the basics before I can write my app.

This is why it seems harder to learn programming. It’s hard to get started.

Phase 2 – Overcoming the barrier

Once you achieve basic competence as a programmer, then you can start to build basic programs. At this point, once a learner achieves the basic skills of programming, he or she can sit down at a computer and start to write a program. Just like our “write a novel” example above, the program might not be good, but the programmer will have the basic skills necessary to get started.

Phase 3 – From basics to mastery

Let me define a mastery point as the amount of work required to become a master of a skill.

Any skill that we try to learn – whether it’s writing poetry, learning a sport, learning a language, or learning to program – needs thousands of hours of practice before one can call herself a master at that skill. To become a master author, one needs to practice writing for countless hours and years before he achieves mastery. Similarly, to become a master programmer, a learner needs hours and hours and hours of practice. This is what you see in phase III of my diagram above. I call this the “mastery point”. For any skill, the amount of work required to get to the mastery point is the same.

Take home point

When learning a new skill, the barrier of entry may vary between skills, giving the illusion that those skills are relatively harder or easier to master. However, all skills are equally difficult to learn, because all skills take the same amount of work to master. Learning to program seems hard because it has a high barrier to entry, however, it is no more hard or difficult to master than anything else.

Don’t let the high barrier to entry intimidate you! You can learn to program!

Best practices for overcoming programming’s barrier to entry

Over the past several decades, millions of people have learned to program, and they’ve all had to overcome programming’s relatively high barrier to entry. I’ve worked with many students, from kids to adults, and I’ve seen them overcome this barrier, whether they are extremely confident, or whether they think they’re too dumb to learn. Wherever you fall on this spectrum, you can use some established strategies to get better overcome this barrier:

1.    Work with a partner while you learn: This experience has proved valuable for many learners. The idea here is that you get together with a real life friend, and the two of you sit down and learn and build together with code. If you find yourself frustrated while sitting alone trying to learn programming, maybe by using something like Codecademy, then get together with a friend. Try to learn together. This will make the process easier.

2.   Write about what you’re learning: This could be in any form. It could be a notebook you keep for yourself, or it could be a blog you publish for your friends. The idea here is that you write down notes about what you’re learning along the way. This is metalearning or gaining insight into your own learning process. By reflecting on what you’re learning and how you’re learning it, you will feel less intimidated by the barrier to entry with programming.

3.   Take a class: I’ve seen people have a lot of success by taking classes about programming. Maybe it’s something like Harvard’s CS50 class, which you can take online. Or maybe it’s an in-person bootcamp school. I work at Byte Academy, which is a 12-week school in NYC for adults to learn Python, web development, and Fintech. Using a structured curriculum is a strategy that has helped many learners overcome programming’s barrier to entry.


Learning to program is intimidating because it has a high barrier to entry. However, it is no harder or easier to master than any other skill, so you shouldn’t be intimidating to try to learn it. There are proven strategies you can use to get better at programming, so you should use them!


Remember, no matter what you learn, you’re going to suck for a while. You will get better if you stick with it!

Liked what you read? Checkout Byte Academy's Software Development and Intro to Python courses.

Written by Jeff Maxim