Jason R. Anderson

Software Engineer & UX Designer

Thoughts On Learning to Code

A very good friend of mine approached me about building an app, sometime last year. He had no real programming experience, short of putting together a few humble web sites in Adobe PageMill, but he wanted to do the work himself and asked me for some pointers on where to get started. I directed him to the usual suspects — Ray Wenderlich, stackoverflow, Big Nerd Ranch, and Apple Developer/WWDC Videos to name a few — and had a couple of Skype calls to walk him through Xcode and GitHub. Now, nearly a year later, he’s in the middle of beta testing his app in preparation for release in the App Store. I couldn’t be more proud of him.

You Can Lead a Horse to Water…

A few weeks ago, I was on Skype helping him figure out how he might do error handling in a part of his app that required a network connection. After the tech talk, he started to thank me for taking the time to explain the stuff and tell me that he’d never have come this far if it wasn’t for me. I had to stop him there and call bullshit. Granted, it’s always a great boost to have an experienced friend to talk to and bounce ideas off of, but I had to tell him that my job was the easy part. I talk to him for a couple hours a couple times a month (if that), about concepts that I already understand. I told him, “Like the old saying goes, you can lead a horse to water, but you can’t make him drink. I know where the water is, because I go there everyday. I’m just bringing you along for the ride…it’s up to you to drink your fill.”

And drink he did. That guy completely immersed himself in the material. He read the books and re-read them until it all started to sink in. He made notes on the stuff he didn’t understand and asked me whenever we got together online. He also applied that knowledge to practice as soon as possible so he could see it work in action. For the sake of full transparency, I have to say that the guy is a university professor with years of experience in knowledge acquisition and practical application (in addition to teaching English as a second language, he also designs curriculums, writes textbooks on ESL, and teaches grad courses on how to be an effective ESL teacher). He’s also a wizard at learning foreign languages and knows what it takes to get up to speed in a new language as soon as possible. But, the point I’m trying to make is, regardless of your skill level or ability, learning new things takes real work and dedication. If anything, my friend understands that, and doesn’t take it lightly.

Learning a new skill can be overwhelming and it seems with everything you need to understand, you’ll never learn it all. Well, that’s true…you never will learn it all, but that’s not important. What you need to focus on is learning enough and then never stop learning. Over time, it does get easier, but it never ends. And, for me, that’s the exciting part. Learning new techniques, honing my craft, getting better so that my software is better. That’s what it’s all about. So, for any of you reading this thinking you’d like to try learning to code, I say do it. The only thing stopping you is you.

A Side Note for You Potential Coding Mentors…

At some point in your programming career, you’re going to come across people who know less than you. Those people will most likely ask you questions about your knowledge. When that happens, you have a choice to make. That choice is how you respond to those questions.

Now, I think it goes without saying that our industry is particularly fraught with trolls. These are the guys who like to turn any situation into a dick-measuring contest about who has the most arcane knowledge of a particular topic and then berate the other person for not having the same knowledge. Alicia Liu (@aliciatweet) talks about a similar experience in her article You don’t have Impostor Syndrome — And neither do I anymore (a great read, by the way — the difference between imposter syndrome and what it means to be a beginner at something). Anyway, the point is, if you respond to an innocent question with ridicule and mockery, then fuck you. You’re not doing anyone any favors. We need more coders, if only to replace shitty people like you, so don’t drive them away from the business by making them feel inadequate. There was a time you didn’t know the command line from the pimple on your ass, so stuff it. Sorry, that was a bit harsh, but learning to code is hard enough without the trolls blowing your candles out so their’s shine brighter.

Anyway, back to the choice. When someone asks you an innocent question, like “What’s a man-page?” for example (seriously, read the article…it’s good), you can be a dick and call them out, or you can quite simply take the 2 seconds or so necessary to bring that person up to speed and help them on to the next step in their learning. Don’t be a dick.