Learning Code Is Not Easy

c162013_mMost programming doesn’t require a special brain, but it’s more frustrating and messier than anyone lets on. There are thousands of enthusiastic blog posts, classes and apps that aim to entice you with the promise of a slick, unequivocal procedure for learning to code. They rarely mention the tedium of getting your environment set up (which, trust me, even the nicest of your programmer friends don’t want to help you with, because that stuff is mad frustrating and nobody remembers how they did it).

They don’t tell you that a lot of programming skill is about developing a knack for asking the right questions on Google and knowing which code is best to copy-paste. And they don’t let you in on a big secret: that there is no mastery, there is no final level. The anxiety of feeling lost and stupid is not something you learn to conquer, but something you learn to live with.

This winter I decided to learn iOS. I taught myself how to code the summer after college, so I was pretty cocky about my ability to pick up a new language. I forgot how hard it is. After getting over my resentment of Xcode (this “Storyboard” thing looks like it’s for babies, this isn’t real programming), I launched into a series of projects that were too advanced for me. iOS turns out to be different from web development; everything I expected to be hard was easy and everything that should have been easy was hard. I was impatient and annoyed with myself.

What I forgot is that the most common state for a programmer is a sense of inadequacy. As a programmer, there is a limitless amount of stuff to learn. You can become a specialist in one language or framework, but if your job is to build things efficiently, you will constantly need to be learning new tools and constantly feel out of your depth. It helps to be mentally prepared for feeling stupid.

I’m a big fan of tutorials. There’s an app for collecting the best tutorials recommended by programmers who’ve used them. Hopefully it will shorten the stumbling-around period before you get into the groove of learning and help you find the good stuff faster.

As long as you learn to grind through the frustration, you’ll come out on the hillsides and get a good view of your progress. Be okay with not understanding everything, trust that you are getting better even when you can’t see your progress, and don’t rush.

(Image Source: iCLIPART)