Tuesday, September 20, 2011

Tips for debugging

A reiteration of some well-known truth, but it's nice to have a refresher anyway:

Watch it on Academic Earth

Tuesday, September 13, 2011

Short term memory

A few weeks ago I picked up this mobile app, that tests your short-term memory. It's basically the classical "find pairs of matching cards" game that kids always play, just with a lot of variations, and difficulty levels. On the Android store, it's called "Matchup", and I highly recommend it.

Here's some observations I made about this game:
  • It doesn't get that much easier with time. While with many "fundamental knowledge / trivia" games you might end up knowing all the answers at the end, and be quicker, with Matchup, you don't really have much of an advantage, whether you're new at it or have been a seasoned player. 
  • Your skill goes up after a while, and then down again, as you get fatigued and start getting confused
  • It really helps to pronounce the names of objects either out loud, or at least internally. Your short-term memory is better when you connect it to auditory clues, instead of visual ones. 
  • Unfortunately that means that any auditory distractions (and most external distractions are auditory), will have a tendency to throw you off
  • It helps to repeat, and when matching pairs are found, to re-pronounce the list of remaining cards to yourself. It helps to know the names of the objects, or have an internal self-made name for them. I typically play the flag version of the game, and I found that if I don't know the flag names, improvising them on the fly takes up more energy and is more error-prone.
  • The other thing that can throw you off is if you think you need one word to represent the object, but in fact it is not sufficient to distinguish it from other objects. For example if you flip a card with a car in it, the first word that comes to mind is "car", until a car of another color comes up, then it's important to re-pronounce the list with "yellow car" and "blue car" in it.
What I find frustrating about this game is that the skill is not really cumulative,  and doesn't work like IQ tests or math puzzles. Many times math or visual puzzles can be hard, but once you get the trick, your speed can go up drastically. Unfortunately, short-term memory games don't follow this rule. As soon as you lose focus, you'll start missing a lot of points. There are tricks, but they're not automatic, and take effort every time, so how well you do depends on you following the script, more than it does on "getting good".

How does this post belong on the refactoring blog? Well of course short-term memory is very useful when it comes to programming, especially in debugging mode, because you need to keep a lot of details in mind at the same time in order to make sense of the complex state of the program. So play memory games folks, and be a happy programmer!