To Learn Programming, Do Projects You Actually Care About

Data Rebellion is all about getting your programming abilities to the point of usefulness as quickly as possible. And when it comes to learning programming, some paths up the mountain are shorter than others. If you’ve ever watched Anime, think about when characters make their greatest improvements. Sure, training often helps them get stronger and faster. And assisting others in fights gives them valuable experience. But their biggest evolutions almost always occur when they’re fighting their own arch-enemies (think Goku going Super Saiyan against Frieza). They’re being pushed to their physical limits by their nemesis, and unless they achieve new heights, they or their friends or their world will surely perish.

Now, a majority of the time the fate of the planet won’t depend on your latest Python project. But if you’re serious about learning, it’s worth thinking about how you’re allotting your time. So let’s consider what your learning options generally are. You can:

All of these things are helpful, and I’ve made use of all of them myself. But have you ever had the experience where you start a course and get through the first few lectures, only to forget about it the next week? Or download an ebook and never get around to opening it? Or get bored of artificial exercises? Or lose interest in a project you know isn’t really useful to you or that you don’t truly care about? Personally, I’ve lost count of all the things I’ve started and never finished. And I think that’s perfectly fine. Why? Because those things aren’t what actually matters.

When I first decided to learn programming, I enrolled in Udacity’s Intro to Computer Science course. How far did I get through it? Maybe a third of the way. Then I heard about Codecademy, and got maybe two-thirds of the way through their Python track. Sounds kind of pathetic, doesn’t it? But at that point I was starting to get a feel for the language, and I came up with a personal project I was genuinely interested in: writing a program that composed music.

To start, I didn’t have a clue if you could even do anything related to music with Python, but I was obsessed with the concept. After working on it here and there over the course of several months I produced a script that was able to “evolve” unique musical passages based on a genetic algorithm. It didn’t win any Grammy’s, but going through the entire process of envisioning an ambitious (for me at least) project, methodically working through it, and ending with an actual working product brought me to a whole new level in programming, more so than any course or ebook ever did.

I’ve now gone through this process a number of times. For example, there was a time when my boss at my day job needed to get a ton of data from a website with a really shoddy interface. As far as we knew, manually copying and pasting each individual data point into a spreadsheet was the only solution, something which probably would’ve taken at least a couple weeks (and most of my sanity) to accomplish. So instead I tried to find a way to get the data via programming. I didn’t even know at the time that webscraping was a thing, but after about a week or so of hacking together a monstrously ugly R script, I had my data. Again, this project brought my abilities to new (if still modest) heights.

So if you’re in the beginning-to-intermediate stages of your programming journey, here’s my suggestion to you: find a need or passion of yours that you think might just be possible to address with code and start working on it ASAP. Here’s a list of projects to jump-start your thinking. Use courses and ebooks and such just enough to get you to the point where you have some idea of where to start. If you can’t see exactly how to get from point A to point B, good! That means you’re going to learn something along the way.

Maybe you want to automate a query on a government website so you can spend more time playing Tetris. Maybe you want to remotely command your office’s high-tech espresso machine to start up so that it pours as soon as you walk over there. Or maybe you feel clinically depressed every morning you arrive at work and want to write a script that tells a new joke whenever you log in. Whatever it is, be creative and ambitious, and don’t underestimate what can be accomplished with a little effort, Google, and Stack Overflow.

Tune in next week for a walkthrough of the general process of completing a solo programming project. In the mean time, best of luck, be sure to subscribe, and feel free to comment or email me with any questions or suggestions.