Developers are just human. They forget. But in what other craft or industry, other than writing code, you might look at your piece of work from a month ago and not recognize it anymore AT ALL!?
So it's even more crucial that you train your developer memory, in a wasteland of abstractions and text characters that ultimately serve as ephemeral translations from your brain to a computer engine.
I started to use memory techniques somewhere around Christmas 2011. I don't think you can reliably measure if memory techniques improve your brain's capabilities, but I performed some feats since then:
- learned a technique to memorize 100+ things at a time without much effort
- memorized a deck of cards in under a couple of minutes
- "cheated" my way through the memory parts of an IQ test to achieve a smart person score
But is it useful in real life?
Yes, I'm using the mnemonic peg list technique to memorize shopping lists and information I encounter to note down later.
And there is more...
Real developer applications
As a developer, I have 2 major use cases that I'm privileged to enjoy having mastered these techniques:
reading engineering books
I like to make use of the reflection technique when reading a technical book. After each reading session, I like to take a couple of minutes to note down what I've just read in a quick graph or drawing.
If you have ever tried to make notes from what you've just read you will have noticed that no matter how much you read, be it 15 minutes or 1 hour, you'll have 3-4 items that you can retrieve from your memory. Unless you were super excited about the content and the content was some easy-to-digest motivational guru speak, then you might have some more on your mind, even hours after reading.
In any case, there is never a guarantee that you capture all the important parts. By using a memory technique you will be able to reflect on 99% of the items that you deemed important during your reading session.
So basically while I'm reading, I'm memorizing the important parts on the way. Then retrieve them from my short-term memory once I'm ready for the reflection part one by one.
This does not have much of an additional cost, in the worst case I'm thinking about the right visual for 5-10 seconds, but this is rather rare. Most of the time the reading flow is uninterrupted.
watching talks at conferences
Sometimes you will watch a talk at a conference or have a watch party with fellow developers with a talk that you know you folks will be discussing after.
Again, usually, if at all, you will have 3-4 items on your mind after the talk.
Using a memory technique can allow you to have all the items that you considered important, which you can then discuss with your peers, retrieving them 1 by 1 from your memory.
going through a process step by step
Are you creating a lot of new apps? Are you following the same steps every time? Time to automate it into a script, a template, or a package manager module!
But if you teach that stuff, you might still need to do it every time step by step. Instead of following a list, you could memorize the setup process step by step and show your incredible memory at workshops and classes. Hats off! 👏
Fun developer applications
If you are someone who has time for memory fun or wants to impress others, I imagine you could use the memory palace and the major systems techniques to:
memorize a codebase's cornerstone classes
I haven't tried this myself, but what if you could mentally walk through all the classes of the huge legacy application you are working on?
This might be just a fun exercise.
But once you have the whole code base (or database schema) in your brain, you might walk through it mentally and have additional architectural thoughts here and there.
memorize facts or libraries
I'm not sure if it will boost your productivity if you can memorize all of Ruby's Enumerable methods and walk mentally through them.
What can be beyond just fun sometimes: If you often need to reason about certain layers of technology, like the OSI model layers or all the HTTP status codes. Then these techniques could be nice to stuff your brain with these facts quickly.
How to train your developer memory
Memory techniques are all about visualizations. Somehow our brains are just better at memorizing images than anything else.
To enjoy the perks above, you'll need to do some upfront investments check out the mnemonic major system technique:
You can do a similar thing with the loci (memory palace) method, but the major systems come with lessing mapping, I find them more enjoyable for beginners.
It should take you a couple of hours over a couple of weeks to learn all the "pegs", but after that, this is a thing for life. A great investment!
I'm not sure of a good easy to digest book, but here's the translation of the book that I started with over 10 years ago:
I'm also building an app for you to learn major systems: