views:

783

answers:

5

I'm familiar with some mnemonic/memorization techniques for about a year.

I think that this techniques can give a developer significant benefit or even make you an expert in the field.

If you are familiar with this techniques, you know that there are mnemonic techniques for long-term memorizing. We often read lots of books, and there are many concepts which you don't remember because they won't appear often in your daily coding-life. So, you need to learn it again and again, months and years later.

The same situation with frameworks. It takes some time to become familiar with framework's syntax, useful code constructs and so on. But after some time you forget many concepts from your previous framework(or framework which you rarely use - but it is very important to you).

By using this techniques you can build with time your sustainable knowledge base, which will reliably grow - you can be confident that after some time you won't forget about the concepts you learned earlier.

Please tell me what do you think about this idea? You are already familiar with Mnemonics techniques, please tell about your experience - it will be very useful and interesting to hear.

Useful links:

Method of loci

Mnemonic

+10  A: 

My favorite method:

Type it into Google

I'm being totally serious - why do you need to remember it?

Chad Birch
I'm with Chad, experience will help you remember a lot of stuff (learning!) and for the rest, if you can remember how to find it out quickly, that's good enough
David Caunt
It saves your time. You actually has to remember lots of information from different fields to be a productive programmer. Why don't you like my idea? Please explain..
Fedyashev Nikita
Yep. If it's important enough in your day-to-day work, you'll use it often enough that you'll remember it. If not, what does it matter if you have to look it up? Use it enough, and you won't have to look it up again...
Adam Jaskiewicz
Simple, Fedyashev. Deliberate memorization is not an effective way to spend your time.
Matthew Flaschen
The hard part of programming is not remembering things. An expert is not someone who can list every function in an API, but someone who knows how to *work* with that API. Remembering what 400 different functions are called is useless. You'll still have to look them up to see how they should be called.
jalf
@Fedyashev: I don't like the idea because you're concerned with the wrong things. It's a common mistake though, many interviewers seem to have the same outlook. Which is a better interview question: "What order are the arguments to PHP's array_splice?" or "Explain to me how you would go about solving this problem: ..."? Does being able to answer the first question demonstrate absolutely anything at all about the respondant's programming ability?
Chad Birch
@Chad Birch I agree with you at that point. I personally prefer to use this memorizing techniques for another type of info: Design patterns concepts, useful UNIX commands attributes, and so on.
Fedyashev Nikita
+4  A: 

You don't memorize how to be a good programmer any more than you memorize how to be a good classical violinist. You practice, practice, practice. That will let you naturally recall the most important constructs, and as Chad says, Google is there for the less important ones. I have never felt the need to use mnemonic devices or rote memorization to learn a programming construct or technique.

Matthew Flaschen
+4  A: 

"Expertise in the field" isn't about memorizing function calls. It's about the ability to break problems down, and provide performant, maintainable, reliable solutions in minimal time.

You could memorize every function call in the STL, and still be a complete neophyte programmer.

Frank Farmer
+1  A: 

I read Harry Lorrayne's "The Memory Book" a few years ago, and found that the techniques therein were great for remembering related facts. However, in my experience I the techniques could have been more useful, namely:

  • The memorization didn't tend to work in the long run. If I wasn't practicing remembering a particular list, or body of facts, I would eventually completely forget them within a few days or weeks.

  • I had trouble applying the techniques to hierarchical data sets, like class libraries. This made their use less powerful for programming stuff.

  • The techniques were very useful for things that could be easily explained by voice, or a single stream of text. However, I had trouble applying them to things of a more visual nature, such as mathematical equations.

That said, I have used Mnumonic Techniques while coding for things that google could not replace. I sometimes use the number memorization trick to recall a specific line of code (by its line number) while I jump around a code file, or remember function names as I jump between files.

Tristan Havelick
1) To persist facts in long-term memory you need to recall it monthly; 2) hierarchical data sets can be easily remembered - it described in books/articles.
Fedyashev Nikita
@Fedyashev Nikita - what books/articles describe how to memorize hierarchical data?
Tristan Havelick
+1  A: 

Agree with other answers, some of the more useful things you could focus on improving are:

  • Troubleshoot a problem, using the 'elimination' technique, basically eliminating problem areas, one by one, until you hit the right one
  • Quickly get to the resource/API/Information I need - Use Google, SO, CodePlex, Google code, Koders.com codesearch, Google codesearch, MSDN etc - Knowing what information lies where is enough to save time drastically
  • Avoid thrashing (stuck with a problem for too long, no results), once you've spent enough time on the problem, by giving others 'complete' and 'relevant' information on your problem you can help others help you

Finally, memorizing about theories in programming is not helpful, however just reading, listening to experts and podcasts, attending conferences can help great deal in 'access to information from memory'

HTH

Vin