This is the fourth post in the teaching and learning series. The teaching and learning series includes the following posts:

  1. All Developers Should Know How They Learn Best
  2. _The Secret Of Being A Great Mentor_**


  1. _The Secret Of Being A Great Apprentice_ ____
  2. _Become A Better Developer By Indexing Your Brain __(this post)___
  3. Learn More – Faster By Using The World-Wide Community
  4. What Playing Cards Can Teach Us About Ramping-Up And Transferring Knowledge

BrainI believe that one of the most important tools or attributes you have as a developer is your memory. I am already hearing people trotting out the old, ‘I don’t need to remember anything, I’ll just Google it’ argument :). It is a decent argument, but I can poke several holes in it without having to think too hard. Aside from the fact that there are still some places out there that will not allow Internet access for security reasons (that’s right you gotta work with no web access – bummer), you will always need to know what you actually want to Google for. Google can’t read your mind (yet :)), you need to remember the concepts your search centers around as well as related information. Hell, you need to remember that whatever you’re searching for exists in the first place. Regardless, you can’t Google everything. You don’t want to keep searching for the basics, or you risk slowing the pace of your work down to a crawl. You can’t Google domain knowledge, it is simply not there to be found, you need to learn it. Not to mention the fact that having a great memory can be damn impressive, try reciting Pi to 1000 places at a party and watch the ladies swoon :).

Seriously though, having a good memory is important. It is valuable in interviews – being able to recall and talk about concepts you haven’t worked with for a while. It is valuable in your day-to-day work – being able to remember what classes do what and which script is executed when. It is an important interpersonal skill – being able to remember names of colleagues, customers etc. There is no doubt, having a great memory will make you a better developer. So, how do you turn your sieve into a steel trap?

Training Your Memory

You’re probably expecting me to say that there is an easy way and a hard way, unfortunately there is only the hard way. Like everything else in life, practice makes perfect and memory is no exception. You need to train your memory to increase capacity, recall time etc. First thing first, you need to memorize crap. Seriously, the first step is that simple, memorize whatever strikes your fancy, poetry, music, code, trivia (even Pi to a thousand places) just make sure you keep doing it. Over time this will make your memory better and better, but it will take a while, fortunately there are some techniques you can use to fake a great memory in the meantime.

Using Mnemonics

Mnemonics are basically memory aids that can help you recall information by association. There are many different ones, some are specific to particular information such as memorizing numbers while others can be generalized to all kinds of information. Here are some common ones:

  • Visualization – associating concepts we want to memorize with parts of a vivid image that we already remember well (such as the layout of your room, or the face of a loved one)
  • Rhyming – making up a rhyme around the concept, thing you want to memorize can help as we are a lot better at remembering rhymes than we are at memorizing random data
  • Chunking – forming data you’re trying to memorize into larger pieces of data that is easier to remember (e.g. forming letters into words, forming words into sentences, forming binary numbers into decimal etc.)
  • The number shape system – associating raw data that is harder to remember with shapes that are easier, in this case associating numbers with shapes so that you have to remember a sequence of shapes (which is easier for our brain to process) instead of a sequence of numbers

Much has been written about all of the above, it is not voodoo science, they really work. The reasons they work are twofold. Firstly, simply by virtue of trying to use a mnemonic technique on a piece of data, you focus on it for a period of time which gives your brain more opportunity to do whatever it does. Secondly, mnemonic techniques are all about associations, you associate your information with various cues; either visual, verbal, musical, conceptual etc. This gives your brain more entry points into the data you’re trying to recall later. How does this help? It is incredibly useful when you use a recall technique called priming. We all do it unconsciously but you can also use it in a targeted fashion.

You’re priming your brain when you’re trying to remember a piece of information and you try to recall anything that you can possibly associate with the data – sounds, smells, concepts etc. It is like building a virtual mind map around the concept you’re trying to recall. The more different associations you have formed with the data the more chance your brain has of finding the information you’re looking for. Simple. I could keep going and going about this stuff and I probably will at a later date :), but for now I’ll leave it here.

In the meantime, if you want to know more about specific mnemonic techniques as well as your mind and memory in general I recommend you pick up a copy of Mind Performance Hacks, which puts together a bunch of these techniques into a cookbook format. However if you don’t feel like reading a book and doing a lot of practice here is a ‘trick’ that I use, which draws from many of these concepts and can give your memory a noticeable boost without too much hard work (if you remember to use it :)).

Your Brain Is A Search Engine

I think of my brain as a search engine. Like any search engine, your brain contains a bunch of data and it also contains an index that allows you to recall this data. You’re constantly bombarded by new information (the web, blogs, books, tv etc.) so adding more data is not an issue, being able to efficiently recall this data is the challenge (your index is more important than your data). According to what I said above, your brain’s index is formed by associating data with a bunch of stuff, you can help out by consciously trying to form these associations. Every time you hear/learn a piece of information you want to be able to recall later (like a name), focus on it for 2-3 seconds and associate it with stuff around you, colors, music, smells, shapes, feelings etc. You want to give your brain a chance to form as many different types of associations as it can. After that just let it go and don’t worry too much about it. In essence you’re trying to piggyback important and hard-to-recall information on sensations and concepts that are less important and easier to recall. That’s all there is to it.

It may not seem like much, but if you do this consistently you will find you can recall things a lot more frequently and easily. You may not be able to impress anyone with a Pi recital, but you will find that after a while people will start telling you that you have a ‘good memory’. So there you go I was wrong, there is an easy way, I guess I forgot :). Seriously though, it is a helpful technique but it is not a substitute for real memory training. Infact in one of those ironic twists that the universe is famous for, the better your memory is already, the easier this technique will be to use. Do you have a favorite memory technique that you use in your day-to-day life? If so please share it with everyone, as always, the more we share, the more opportunity we have to learn and the better off everyone will be in the long run.

For more tips and opinions on software development, process and people subscribe to today.

Image by brain_blogger