How Do I Learn To Code?

I received an email this morning about learning to code. I responded to it, and felt like maybe I should share it with others. So, um... here it is! :-)

Have questions? Comments are open :-D



So, the number one thing when it comes to learning to code - is to want to learn to code. It can start out as a curiosity thing (that’s generally how it starts), but it gets frustrating fast, so inherent self-drive is critical.

There are a lot of programs out there where you can pay money to have someone teach you to code. I don't recommend spending it, unless you need the structure and are confident that the extra connections and opportunities are worth the cost. In the world of Time, Talent, and Treasure, I'd rather spend my Time building my Talent, rather than my Treasure. (But that's just me.) More often than not, these classes involve someone giving you a roadmap for learning to code - you're still going to have to learn it on your own (you'll just have people right next to you when you have questions, instead of relying on the Internet). Again, emphasis on the need to be self-driven.

Here are the basic first steps:

  1. Pick a language to learn. There are LOADS of languages - pick the one that seems to be good for now. You can always switch later (in fact, knowing one language makes it easier to learn another). The best way to pick a language is to figure out what sort of things you want to do - do you want to play with web stuff? Phone stuff? Hardware stuff? The answer to these questions will help you narrow down your options and pick the right language for you to learn.
  2. Start messing around with code. Get stuck, ask questions, mess around. Get stuck, ask questions, mess around some more. This is where things get frustrating, but also where you do the most learning. For asking questions: Stack Overflow is a really good resource (best used when searching via Google and accessing specific topics). Also reach out on IRC and Google Groups (depending on what you’re trying to do). Most important, though, is to meet people who are doing what you want to do and ask questions in person. (When you're starting out, you don’t yet know the vocabulary you need to ask good questions. Being able to talk to people and say “this thingie isn’t doing the whatchamacallit I was hoping it would - why not?” and have them understand that you’re talking about databases and storage is MAGICAL.) Go to and search for the language you picked earlier. Go to those events. Ask questions, get involved, become a better programmer.

Words of warning: it is hard. You WILL mess up. But programming is the closest thing to alchemy that you can get in the 21st century (we turn 0s and 1s into things that people use, sometimes to save lives!). It’s so incredibly rewarding and I’m so grateful I get to do it every day.

If you have questions, let me know!!



P.S. If the only goal is to get a good job in the field and make loads of money with little effort, you can do that, too. But it’s also soul crushing and will make you want to quit after about 5 days. Learn to code because you want to build stuff, not because you want to make money. People will throw money at you once your skills are up to snuff (and if you put in the effort, you'll get there!).