Learning to Program, Part III: Why you should learn (and why it’s easier than you think)

This is a part of a three-article series on my journey so far as a programmer:

  1. How I learned to program
  2. Programming lessons that changed my life
  3. Why everyone should learn to program (and where to start)

I’ve previously said that the problem with attracting new programmers is not in explaining how to program, it’s in helping people understand why to program.

So why learn to program, aside from the life lessons mentioned in the last post? A lot of reasons, actually.

It really is a form of “digital literacy”. Even if you decide programming isn’t how you’ll make a living, having these skills is like knowing how your car is put together: you will often know how to fix problems yourself, but even when you have to take it to the mechanic, you’re more likely to be taken seriously.

You’ll run a better business. If you have an entrepreneurial bone in your body, learning to program is going to return rewards to you many times over when starting your own company. I’ve seen many startups fail because of poor technical leadership by founders, and many succeed due to good communication between management and engineering.

You’re uniquely set up to succeed. Whether your background is as a writer or a pizza maker, it will likely help bring a completely different perspective to programming, which benefits everyone, including you.

Don’t let your subconscious lie to you

One life-impacting lesson I’ve learned recently from Paul Graham is that we too often let our subconscious make the decision to steer away from things that seem difficult. We mentally file it under “impossible” and let our conscious mind plan our goals around the perceived roadblocks.

Let’s run through some of those:

“But doesn’t programming require a formal education?” No. Next question.

“Isn’t it hard?” Yes. But not in the way you’re thinking. It’s hard in the way that playing an instrument is hard, in that it is merely a matter of practice. In fact, learning to play a musical instrument is the most direct parallel to programming of which I’m aware.

“Isn’t it just for antisocial, nerdy guys?” Oh dear, let’s dive into that one.

First off, it’s time to let go of the programmer stereotype from the 1980s, because it’s not useful and no longer accurate. We have a whole new crop of stereotypes for you to choose from.

Most distressing is the fact that most women have had a lifetime of exposure to the idea that “programming is for boys”, and from a young age, mentally wall that area off. This costs us in software quite dearly, both in sheer numbers and in the diversity of perspective that smart women bring to the activity.

Don’t let a lifetime of people trying to intimidate you (even subconsciously) prevent you from realizing that you have all the capability they do.

Programming is a special ability, akin to a superpower. It transforms you from a consumer into a maker. But it’s not for special people.

Some programmers feel otherwise, that programming is something you need special skills for. Instead of punching them in the face, just remember that a few hundred years ago, these are the types who thought reading and writing should be reserved for clergy. Learn and make all you can, so that these code hipsters can someday complain that they were programming before it went all mainstream.

Starting on your own path

Learning to program isn’t as hard as it sounds if you’re working with people who know how to ramp up the difficulty properly (and speak English instead of jargon). The Learn to Program (Ruby) book I used is a tried-and-true introduction to programming concepts, and I recommend it highly.

Because I evangelize programming to non-programmers, I am often asked, “What language should I learn?” That actually does matter, but mostly because the quality of materials available varies greatly from language to language. This is why I’d say Ruby, Python, or Javascript are great first languages: the quality of instruction materials available for all three is quite good, and they’ll have you actually building things relatively quickly.

There are great resources for new programmers online at Codecademy (Javascript), RubyMonk, and Learn Python the Hard Way. But my personal favorite, by a wide margin, is Hackety Hack (Ruby).

Find the community

Plus, with those languages, there are communities of people who are knowledgeable and generally helpful. There’s simply no substitute for personal, interactive feedback with experienced mentors. Even as a brand-new programmer, I found the pattern of showing up to local Ruby User Groups and following the attendees on Twitter to be incredibly valuable. It helped me create a support network of people who could answer questions or buoy me up when I felt like I was underwater.

Finding a local User Group, following helpful people on Twitter, joining related IRC channels (I use the fantastic IRCCloud service for this), and generally trying to grab the attention of people who do this for a living are all good ways to help luck start to fall in your favor.

Later this year, my understanding is that Mendicant University will be holding classes for newer programmers, and that may be a great time to start. If your local programming groups don’t offer workshops for new programmers, I bet they’d be open to the suggestion.

If you’re interested in learning to program, find me on Twitter and I’ll do my best either to help you or line you up with people who can.

If you knew half of the doors it’d open for you, you’d be starting one of these books or tools tonight and beating down the door of your local programming community leaders to build an initiative for new programmers. If you give learning to code half a chance, I can promise that in some significant way, opening your mind to it will have an impact on the course of your life.

  • http://fleetventures.com David Richards

    Another thought here: programming languages are primarily tools for thinking. In other words, they guide our imaginations into something concrete, something we can share. It’s an incredible feeling to have a clear thought then make something with it.

    • http://brandonhays.com/blog Brandon Hays

      So true. I’d say that next to a text editor, my most important programming tool is my whiteboard. Taking thoughtstuff and turning it into something that exists, dozens of times a day, is an underrated source of satisfaction in life.

  • http://raywu.tumblr.com/ Ray Wu

    Brilliant Brandon. Aee you at the next Ruby DCamp