Why I Taught Myself How To Code

02 December 2013


How I got into building stuff with software.

I resisted getting into programming for much longer than I should have.

My brother has been a programmer for his entire life. I grew up with computers, and my dad always bought the latest and greatest computers. I mostly played games, and my older brother played games he programmed.

Growing up, I goofed around with geocities, and ended up teaching myself CSS and HTML so I could build my first website to sell portraits I was painting at the time. I never really felt like I was programming, and thought of it as completely different.

After being in a band for a while, and realizing that it’s really, really difficult to make any money playing music, I decided to take the plunge and learn how to code.

I started with codeyear.com in 2012 (Just under 2 years ago as of writing this)

Starting in Javascript gave me the confidence to move further into the world of programming. I felt terrified and overwhelmed. I remember telling my brother that I felt like I was drowing when I really started getting into deeper stuff. He said something like, “You might be drowning, but the water level is only a few inches above where you are, so don’t be afraid, and don’t stop swimming.”

Throughout the past couple of years where I’ve dove head on into learning how to code, I’ve learned not to be (as) afraid, and one of the keys to learning something hard is to keep doing it. It sounds obvious, but if you don’t give up, you’ll get one of two things:

  1. You’ll die.
  2. You’ll accomplish what you’ve set out to do.

This idea gives me great comfort, and helps me manage the lows and frustrations that naturally come up while programming. It’s important to me to spend my time doing meaningful things, and the same thing that drew me into playing music also attracted me to writing software: craftsmanship. First there was nothing, I did something, and now there’s a thing. A useful thing! A beautiful thing! A useless thing! An ugly thing! But a thing, and I made it.

I started by building simple ideas for my band. We’d have an idea, and I’d take a crack at it. I ended up accomplishing quite a bit by just taking it one project at a time. Here’s some of the stuff I was able to do.

  • I built an entire dates management system on top of google calendar. This led to me building a way to sell tickets directly to our fans for events. Super cool, and such a blast. I never got over the rush of being able to update our calendar for tour dates from my calendar app on my iPhone.
  • I built a way for fans to sign up on our email list and automatically get a free download to say thanks.
  • Similarly, I made it possible for fans to tweet about us or like us, or send an email to someone else, and they’d get a special link to download an exclusive song in return.
  • I built a backend to all of these tools so we could manage everything easily, and from our phones.
  • When we raised money for an album on kickstarter, I built the system to manage downloads and distribution for our record.
  • I built an entire logistics system for keeping track of show information on tour. This ended up being a lifesaver on more than one occasion.
  • I built and managed a giant giveaway we did, which ended up being by far the most popular thing I’ve built. We ended up giving away 227,000 albums in a month. (All from a single server.) I’m sure I didn’t sleep for more than a few hours those first two weeks.

With each project built, I found that I was able to incrementally build on my previous experience, and make the next thing I built even better.

I have learned about myself that I have to be actively creating something in order to feel satisfaction. When I read this essay by Paul Graham, I was encouraged to go deeper into learning how to program. I can relate to the painting side of things, and how satisfying the process of painting is, and have found it’s the same process in writing code and creating something useful that I love.

Now that I have my first real web app under my belt, I have way more confidence to be able to dive head first into whatever problem that needs solving, and not feel worried that I won’t be able to figure it out.

Learning to code has been one of the hardest and most rewarding things I’ve ever done. I am just starting out, and I’m still learning something new every single day. The crazy part is that there are almost an infinite amount of things that I haven’t learned yet, and I couldn’t be more excited about all the different possibilities of building stuff with software to help make things better.