In the Real World Memorization is Overrated

Nov 8, 2011

I find it amusing reading stories of programmer interviews where the candidate is expected to know everything off the of their head. If you repeatly can't answer questions about programming syntax or parameters and the like but only answer "I usually look it up" you won't ever get a job.

I remember in the past having people ask me when I refuse to remember some function parameters "what if you're in a situation where you can't access documentation, then what?". Even early in my career when there was no internet and documentation came in loose-leaf binders on something called paper I have never been without documentation. Only in the movies does it happen- "OMG if I don't remember the home interface of an EJB the world will come to an end!" (which would be shitty movie for sure).

In my first Mac application (Trapeze Spreadsheet) the only things I needed to know were K&R C and Inside Macintosh, which came in 3 loose-leaf binders in 1985, plus a little 68K assembly.

In my recent job at a game company I had to work in 3 languages (Objective-C, C++, Javascript) on two platforms (Windows and OSX) plus web tools that I built in PHP. At home I worked on iOS plus doing my web projects also in PHP. Prior to that as a Java architect I worked in Java and its SDK and Javascript in web and backend projects along with a host of open source and proprietary frameworks and even a little Ruby/Rails. There's no way I could remember everything.

The internet has made it possible to learn or "remember" anything. Google has become a second brain, allowing you to find explanations and examples of virtually anything you need to do.

The real talent lies in being able to find what you need (often you have no clue what the right search terms are), evaluate what you find to see if it applies and whether it is correct, and then adapt it to your situation. Add in your experience on how to build an application and you can do anything.

That's the key to programming today, especially in things you've never done or even seen.

Memorization is for college students taking tests. A skilled programmer knows how to acquire knowledge for the problem at hand, apply it successfully and then move on to the next. Details live in short-term memory only.

Today almost anything you might be ask to do has been done by someone somewhere and likely posted in some fashion on the internet. Sometimes the shear volume of what you find is amazing. Everything from in depth tutorials to open source code to stackoverflow and its cousins to people write examples in a blog: it's all out there.

Of course this is tough to prove in an interview, where off the top of your head is easier to query. While working on projects however being able to leverage this Google Brain Extension is the key to being successful as a programmer.

Programming was a lot easier with one paperback book and 3 binders but I think I like this modern world better, where stuff is complicated but information is plentiful.