Skip to content

Using flash cards to become a better programmer, Part 1

Wait, what?

Flash cards can make you a better programmer? Programming is a complex, sophisticated skill. And flash cards are about drilling very low-level, atomic information!

Yes, that's true! Flash cards alone will never make you a good programmer. But programming is also made up of low-level skills, like remembering method names you haven't used in six months. And that gotcha that causes subtle bugs. And the name of the module that has the data structure you need...

When programming, how often have you googled how to do something, only to see purple links? Wouldn't it be cool if you could remember stuff after only using it once? Having these bits of info on the tip of your tongue can radically speed you up, freeing your brain for higher-level thought. You've already done this for other skills, like touch typing! You memorized where all the keys are so you can focus on emailing love notes to bae. You memorized your times tables in grade school so you could focus on algebra. And you memorized all those Spanish vocabulary words so you can focus on navigating Madrid without a dictionary.

But my memory is pretty good. I remember many things!

Yes, but your brain is made of meat. It is subject to the laws of human biology, and thus forgets things. And the less you use knowledge, the quicker you forget it.

The graph below shows the rate at which you forget information. See how getting reminded at just the right time helps slow your rate of forgetting? It keeps your chances of remembering above 90%. Showing you the right facts at the right time—just before your forgetting curve would dip too low—is called spaced repetition.

Graph that describes the rate of forgetting new information over time.

Graph from sivers.org/srs

If you're working mainly in one toolset all the time, this is less of an issue for you since the repetition and practice is built into your work. My work has me using 10-15 different languages and tools regularly, but not frequently. Sometimes I won't use one for months at a time.

Wouldn't it be cool if everything you ever tried once were just at your fingertips, all the time? How much faster could you be if you didn't need a ramp-up time? And you didn't have to google for that one thing every time you need it?

Remember that game Katamari Damacy? You're this little green prince with a pill-shaped head, pushing a sticky ball. Your goal is to roll up all the items you can find as your ball gets bigger and bigger. You start with thumbtacks, you end up able to handle cows and houses.

The goal here is to get your brain to be the ball.

Clip from Katamari Damacy

Does this actually work?

I first came across this idea in reading Jack Kinsella's post. I thought it sounded rad, and I tried a few times to do it but it never stuck. I didn't consistently make or review cards. I would get a lot of cards that didn't make sense to me when I reviewed them, or were written to be too hard to answer. It was discouraging. I never saw results. I gave up quickly.

This summer, I became a believer, and it's all thanks to jury duty. I got selected for a two-week grand jury (no, there's no way to get out of it). I had been preparing to start a client project where I would be using Pandas for the first time. But I was suddenly assigned to be in a windowless room all day every day with no wifi or cell phone signal. With no way to get a connection to the database I needed, the project was put on hold.

Normally, two weeks away from a brand new tool would mean that I would have an unproductive week of reentry, needing to look up every new method or attribute. But because I made cards and reviewed them in between hearing witnesses, I was able to hit the ground running my very first day back. It made a huge difference!

I've also noticed a difference in using tools that aren't new. I'm much faster and more fluent in writing SQL, Python, awk, bash, and all the other tools in a data scientist's toolkit. I write fewer bugs and waste less time looking stuff up. It feels like a superpower!

It's also kind of fun that I've been doing this for long enough that some of the cards are old enough that there are some that stump me. What this means is that at one point I knew the info! And without the card, I would have completely forgotten it! But because it's in my deck, a quick review and it's right back in my brain.

Clip from Katamari Damacy

Cool! This sounds rad, how do I start?

I'm working on a second post in this series with all the tools and habits I used to get over the hump and actually make this a daily habit.

In the meantime, you can go read Jack Kinsella's blog post, which is where I first heard about this method. Derek Sivers also wrote about this and included lots of examples. I found that neither of these covered the emotional/habitual side enough to really get me started on a sustainable habit, so I'll focus on that in my next post.

You can also check out Anki, the free flash card program I use. It keeps track of when cards need to come back for optimal studying, which is super helpful. Be careful, though, as it contains lots and lots of bells and whistles and is somewhat hard to figure out. In my post I'll show you which features are most important and which you can ignore, so don't be scared off quite yet.

Until next time, keep a tally of all the times you needed to pause to look something up that you used to know. You might be surprised!

Thanks to Nick Ward, Dan Bentley, Ricardo Vidal, Julia Evans, Allison Kaptur, and Erik Osheim for reading a draft of this post.

Comments

Next

In defense of practical gifts

Your Brain's API: Giving & Getting Technical Help (my talk at Pycon 2015)