Zerø Wind Jamie Wong

Starting to Build Things

I occasionally get emails from people with some amount of programming experience, usually purely academic, asking about how to get started with gaining practical experience. They want to start working on their own side projects, but they don’t really know where to begin.

I find it interesting that people often phrase their question as “what language should I learn?” or “what framework should I learn how to use?”.

The common ground between the responses I give is this: what do you want to build?

It’s far easier to stay motivated when you build things that you want yourself.
This doesn’t have to be anything of any real utility - it can be a silly little thing that you just enjoying looking at or fiddling around with. For instance, as I explained in a previous post, some of my favorite creations have been completely useless.

Focus at first on making something that you want to use or play with. That way, when you have it, you’ll be motivated to keep improving it and toying around with it. I also think it’s important here to not worry about someone already having built it. You don’t need to make the best thing in the world or get everyone to use it. You don’t need to market it or convince anyone else of its merits. You just need to make something you think is cool and learn some stuff along the way.

It’s okay to reinvent the wheel. You’ll learn a hell of a lot more making your own beautifully oblong wheel than riding atop 4 perfectly round ones someone made for you.

Keep in mind that what you do when you’re writing software for thousands of users, or trying to get to a minimum viable product as fast as possible is going to be different than what you do to keep yourself learning. And that’s okay.

Here’s a list of my projects that motivated me to learn how to program before I landed my first internship. I’m writing largely for my own nostalgic benefit, but I hope you can find some inspiration in it, or at least be reminded about your own learning adventures.

The common element between all these projects was that they were all incredibly satisfying once I saw them work. I would get terribly stuck some times, but after enough googling for, honestly, usually the wrong thing, I was able to figure out what I needed to do to make it work.

I had the good fortune of being able to start working on these kind of things while still in high school, but if you didn’t, no need to distress. Many of the best programmers in the community started in their twenties or later. DHH, the creator of Ruby on Rails started in his twenties, and so did Yehuda Katz, the creator of Ember and Handlebars.js, and a core team member of Rails and jQuery at various times.

I did a pretty wide variety of things to learn what I have about programming, but building things is the most common thing I hear questions about, so that’s where the focus is for this post. Among other activities were reverse engineering challenge sites, algorithmic competitions, and the occasional bit of academics.

If you still find yourself at a loss for ideas, click into one of the folders of karan/Projects. If you’re still stuck for ideas or have an idea but don’t know where to get started, feel free to shoot me an email.

If you’re reading this as an experienced programmer, I want to hear about the cool projects you did to get started.

If you liked reading this, you should subscribe by email, follow me on Twitter, take a look at other blog posts by me, or if you'd like to chat in a non-recruiting capacity, DM me on Twitter.

Zerø Wind Jamie Wong
Up next Metaballs and Marching Squares August 19, 2014