Developers are just human. They forget. But in what other craft or industry, other than writing code, might you look at your 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.
Interested in how this technique works and what you could use it for? I'm always more than happy to meet fellow memory training enthusiasts live:
I started to use memory techniques somewhere around Christmas 2011. I have 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 an intelligent person's 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...
As a developer, I have two major use cases that I'm privileged to enjoy having mastered these techniques:
Reading engineering books
I like to use the reflection technique when reading a technical book. After each reading session, I take a few 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 learned in your reading session or tried to memorize random words under pressure, you will have noticed you'll have ~7 (+-2) items that you can retrieve from your memory. So, unless you were super excited about the content and the content was some easy-to-digest motivational guru speak, you might have some more on your mind, even hours after reading.
There is never a guarantee that you will capture all the essential parts. However, using a memory technique, you can reflect on 99% of the items you deemed important during your reading session.
While reading, I memorize the critical parts on the way in the order they appear in. Then retrieve them from my short-term memory once I'm ready for the reflection part one by one.
This has little of an additional cost. In the worst case, I'm thinking about the right visual for 5-10 seconds, but this is relatively 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.
Usually, you will have 3-4 items on your mind after the talk.
Using a memory technique can allow you to have all the critical points, which you can then discuss with your peers, retrieving them individually from your memory.
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, but what if you mentally walk through all the classes of the vast 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.
I also imagine a case where you need to know computer science specifics by heart: For example, if you often need to reason or talk about specific layers of technology, like the a coding library's internals, OSI model layers, hardware architecture, or HTTP status codes. Then, memory techniques could effectively 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.
You'll need to make some upfront investments to enjoy the perks above. Check out the mnemonic major system technique:
You can do a similar thing with the loci (memory palace) method, but the major systems have less mapping. Therefore, 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 ten years ago:
I've also built an app to learn major systems in one or more languages: