/ Insights

Why Is Coding So Hard? | Part 2

In the previous post, I listed, somewhat unhelpfully, all the reasons I’ve found learning to code a difficult task. In this follow-up, I’d like to give you some tools to slay the dragon.

What’s worth noting is that these are the strategies I used, but you need not confine your methods to these. If anything, I’d rather show you how I did it in the hopes of sparking creativity in your own learning.
Let’s begin.

Pick your Learning Method

Being dyslexic it’s very hard for me to read books about code: I need to be shown. Moreover, the must supremely unhelpful advice I was ever given by a senior developer on how to learn was to “read the manual”. 🙄

There is no easy answer as to how best you should learn, but take it from an artist—if you’re meeting mental resistance on your learning method, it could be that you’re not using the right form of learning.

Some people learn best by diving in and making mistakes, some people learn better by watching someone first, some learn best by reading the code.

Whatever you choose though, understand that an expert is someone who has made all the possible mistakes in a chosen field. I know I often learn more from my failures than my successes because success doesn’t necessitate a deep look into what I just did.

Therefore, success in coding is less about getting it right but not giving up. In that sprit, just keep trying to code.

If you do not, whatever you spent time learning, you will forget. And you have just wasted your time.

Get some basics down, but don’t spend too long in tutorial/learning land. Get started, then get out and get dirty.

Just Keep Learning

The most startling “gotcha” I’ve personally found in programming is you never actually learn code, you learn to learn how to code. You don’t ever “know it”, you just get good at looking things up and researching. Your knowledge will be a summary of the projects you’ve worked on.

Technology and trends move too fast. You can’t learn fast enough to keep up. You can’t ever know so much that you can then just stop learning.

This the opposite of what we’re used to a comfortable with; our new learning model is backward from what you were taught in school.

Old way: here’s a bunch of stuff, learn it all, some of it might be on the test, sleep in fear… test.

New Way: Learn a little basics, and then use failure as a teaching method to reverse engineer, with curiosity as our North Star.

The former is defining and limiting, and brittle.

The latter is limitless, vague and durable. And scary.

The most successful senior developers I’ve had the pleasure of working with will not be familiar with you’re working on when called over to help, but they will be able to read it and try to reverse engineer it to see what the problem is.

Lastly—keep in mind that the Grand Canyon was carved by the power of water. Not because water is stronger than stone, but because it is more persistent.

Immerse Yourself in the Culture

Just like learning a foreign language, your vocabulary and comfort is a direct product of your exposure and attempts relative to the amount of time you spend immersed.

Listen to podcasts, watch documentaries, read blog posts, go to conferences and meetups, ask questions. You need to be surrounded by concepts and terms. You need to know what’s out there, and how it fits into what you’re trying to do (or not do!).

But overall, just keep trying. The more you immerse yourself, the more you are exposed to new terms and new ideas, the easier it will get. Coding is one of those funny things where in the beginning, you will feel foolish. But towards the end, you’ll wonder why some things gave you so much trouble given how easy you find them now.

You Have Permission to Be a Kid Again

The childhood experience is largely defined by making mistakes, but also having the room and permission to fail.

As an adult, you have made progress and built success by learning from your mistakes. But victory has made you risk-averse.

What made you a successful adult will not help you be a successful kid. You must give yourself permission to climb those trees, fall off that bike, scrape your knees, get dirt under your fingernails.

The challenge coding poses to an adult is that it presents us with a lot of opportunities to look like we don’t know what we’re doing. The last thing we want to do as accomplished adults is show the whole world just how much we don’t know, or how bad we are at it.

As kids bumble through life, they neither know they’re doing it poorly nor care. They just assume it’s part of the process. So I’m telling you it’s ok to make mistakes like a kid again. Go play.

Build Stuff You Care About

Tutorials, however well-meaning in their tactical use of example applications, will usually not be something you care about.

To be fair, what you want to build might be technologically more robust than is appropriate for a teaching example. However, whenever possible, try to pursue projects of your own, for yourself.

This step might be the one of the most important that I deliver. You will never care about someone else’s project as you will your own. This passion for wanting to make your life better, easier, more fun, sillier, is what will help propel you through the frustrations of learning to code.

If your idea is too ambitious for your skill level right now, scale. Shed features, leave off functionality, add a “wish list” for when you get good enough.

Health Best Practices

Sleep

I don’t think I need to lecture you about the importance of sleep. I’ll only say that it is written in stone in our community that a good nights’ sleep is often the best debugger.

Work Out

The mind often works out mental problems during a physical activity. Moreover, if you’re not used to the cognitive load of logic problem solving, hours straight of tutorials and debugging will fry you properly. Working out is a healthy habit. Period.

It’s also a programming technique to clear your head.

Mental Health

This is in last because in my experience, both personally and in my 5 years of teaching, the number one reason I see qualified, bright students turn their backs on code is confidence or competing mental health issues.

When we talk about learning to code, we’re talking about one of the most humiliating professional experiences someone can subject themselves to—especially if you do not have a technical background. You’re trying to learn something so detail oriented that an extra semi-colon can take down your entire application.

You might feel stupid, unintelligent, a fraud. So many students of mine have given up because they convinced themselves they weren’t smart enough. It’s even more frustrating when you’re a grown adult and you’re getting your butt handed to you by a misplaced comma.

When we look back the piece of code that gave us all that trouble doesn’t seem all that hard, but in the moment, it seemed impossible.

If you have underlying mental health issues, this will only feed them.

Addressing your mental health in tandem with your learning will be what will make or break your coding career.

Moreover, lots of people seriously consider code as a new career path while in crisis: either personal, professional or financial.

Therefore most of my students attempt to learn code under a tremendous amount of stress and pressure. Bootcamps and Codecademy’s Pro Intensives are especially helpful if this is your situation because you’ll have classmates you can lean on, and people who you can signal for help. There are so many moving parts to learning code, that it can help to have a supportive environment instead of a giant book sitting on your desk.

Believing in yourself is the magic soft skill, while developing the right hard skills is the real challenge.

Conclusion

We’ve come so very far. We’ve both identified why coding can be so hard and what we can do to make it a little easier.

To that end, you probably still have some ambient anxiety over how you’re going to actually accomplish this.

Perhaps my last words in this post should be to try and give you some encouragement.

You are not alone—thousands, perhaps hundreds of thousands of people, are with you. But what I’ve learned myself both in personal experience and from the successful developers I’ve met is that engineering is won by persistence.
You will finally crest the hill not because you tried harder, but because you kept trying. Failure in this industry is merely a step, not an indication of your ability.

Start where you are, do what you can, believe in yourself. You can do it.

Get more practice, more projects, and more guidance.

Pat DePuydt

Pat DePuydt

Pat is a self-taught front-end developer at a startup in Virginia, an instructor at a coding bootcamp in Washington, D.C., and proud dog dad.

Read More