A Call for Memorization

Someone (I don’t know who), said “Half of intelligence is knowing the answer. The other half is knowing where to find the answer.”

In today’s world, we all know how to find the answer. But has that made us less inclined to know the answer from memory?

Google has just exacerbated this, really. There are so many things related to my job as a PHP developer that I just don’t bother to remember because the answer is one search away.

For instance: PHP date formatting codes. I have to look them up every single time. It’s the same with any number of function calls and input parameters (PHP is a bad example, since it’s all over map, but still…).

My point is that the Web tends to make us lazy in terms of remembering things that we’d normally study and memorize. Why do that when you can find the answer online in 30 seconds?

But is it really 30 seconds? If I’m cranking through some code and I suddenly have to break out of it to look something up, I’ve lost the all-important “flow,” and I have to stop and collect my thoughts, not to mention switching windows and such. Contrast that to being able to code right though without even looking up or wasting a single memory cycle on the answer.

And how much extra code have you written just because you didn’t know there was a function that did exactly what you’re trying to do? Or that there was some rock-simple code structure that you should know, but don’t (but would instantly remember when you found it after 30 minutes of looking…)?

All of this is aggravated by the fact that relatively few of us have formal training, and those that do are often trained on a lot of theory and not rote memorization. But there’s a lot to be said for memorization.

I was watching “Harry Potter” the other day, and Alastor Moody asked a class of students, “Who can recite the three unforgivable curses?” (Hermione could, that little brown-noser…)

Anyway, I suddenly envisioned myself sitting in a classroom and someone asking, “Who can tell me all the possible function calls for getting elements onto and off of the beginning or end of an array, complete with their input parameters and return values?”

Could I answer that? Maybe. Probably most of it. But how about this:

Could you write perfect code for each of these without looking anything up? I hesitate to provide examples, because I know some of you could do these from memory, but you get the idea.

If your job depends on coding PHP every day, would you be better off if you concentrated just as much on memorization as you did on theory?

Remember in college when you used to have to memorize a lot of stuff? Should you get back into that mode? Should we approach our profession with more of an academic bent than we do now? Do we disrespect our craft by not bothering to do this?

I think you’d be a better programmer for doing this. Like it or not, unless you’re a lofty “software engineer” who doesn’t write code, a lot of what we programmers do is rote memorization.

In order to build better software, you need to remove friction. And friction is not knowing exactly what tools you have in the shed, not knowing what all of them do, and having to drop everything to go look things up when you forget.

In saying all of this, let me repeat that I’m just as bad as everyone else (probably worse). But I’m willing to try and get better at it.

This is item #260 in a sequence of 357 items.

You can use your left/right arrow keys to navigate