Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

How do I go about improving my memory and recall as it relates to Programming?

I have a tendency to cache API information short term and then immediately put it out of my head as I move on to something else.

This sometimes makes me look bad as I can't recall API information on code I should be really familiar with. It also can be a big time sink, as I often know that I can do something with an API, but I have to look up the specifics on how to actually do it.

Are there any tools or methods I could use to make up for my memory short comings?

share|improve this question
3  
Maybe you should use your HDD instead of your cache –  John Shaft Apr 5 '11 at 14:43
    
the easy answer is to spend more time when looking at it in the first place, then it will get shifted to long-term memory instead of being discarded. We do this all the time to remember stuff that matters and forget trivia that doesn't. –  gbjbaanb Jun 12 '13 at 11:45
add comment

closed as off topic by gnat, Blrfl, Thomas Owens Jun 12 '13 at 11:46

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

8 Answers

up vote 6 down vote accepted

I know some people who make up little cheat-sheets (or "quick-reference cards" as they're sometimes called) on the relevant parts of APIs they're working with. It probably doesn't help them remember better but the information they need is posted on the wall right beside the monitor so they aren't constantly looking for things online.

It's also possible that other people have already uploaded cheat-sheets for the API you're working on, search google to see!

share|improve this answer
    
+1 for cheat sheets :P –  Aditya P Apr 5 '11 at 15:12
1  
+1 my cheat sheets are on Evernote. –  sange Apr 5 '11 at 17:27
    
I like cheat sheets but I would probably change that to, go in properly document the API's your working on. There no memory needed :) –  James McMahon Jun 12 '13 at 13:30
add comment

There are two things that spring to mind:

  • Who are the people who you look bad in front of?

I'm more impressed when someone can remember how certain algorithms work than when they can come up with all the names of the methods in a certain api. Looking up the API for something takes at most a couple minutes on the web, whereas knowing and retaining knowledge about complex problems and solutions is not something that can be that quickly solved.

And

  • Remembering an API is the same as remembering anything else: improve your memory

Your brain is a muscle, kind of. :) And practice makes perfect. Go research and read about improving your memory (mnemonic tricks, etc.), and memorize something every week -- it doesn't even have to be an API. It should probably be like an API, like muscle groups, the periodic table or historical events (all related lists). The more you do that, the better you'll get at being able to remember API's. As to whether or not that skill is useful, see the first part of this answer! :)

share|improve this answer
2  
What's the point of memorizing anyway? try to UNDERSTAND, then you won't forget it –  Tony The Lion Apr 5 '11 at 15:22
    
I think to some extent there is a trade off between ability to memorize a lot of information, and the ability to solve problems (IOW, have a goal in mind, assess a situation, find additional information and propose and implement a solution). I'd rather allocate more resources to the latter and make up for the former with good notes. –  user21007 Apr 6 '11 at 12:27
add comment

I use a personal wiki system called Connected Text to take and link notes together. Offload the minutiae and use your brain for solving problems and thinking, not trivial syntax apis.

share|improve this answer
add comment

God invented reference manuals for a reason. Keep your mental bandwidth clear for the problem at hand; there's absolutely no shame in having to look up stuff you don't use every day (better to look it up and get it right the first time than poke at it for an hour out of a misplaced sense of manliness).

You'll internalize the stuff you use all the time, and over time your capacity and recall will improve.

I've been working in C for most of the last twenty-some-odd years, but I still keep a reference manual handy just because there are corners of the language I don't use very often.

share|improve this answer
add comment

There are a wide variety of tools like Mind Maps, or Concept Maps as they're sometimes called. I'm currently reading the book "Moonwalking with Einstein" by Josh Foer that details his story of spending a year learning from various memory coaches and winning the US Memory Championship. As someone with ADD these visual techniques work a lot better for me that trying to rote memorize, as that takes practice, and practice...makes....me.....SQUIRREL!!

share|improve this answer
1  
My master made me this collar. He is a good and smart master and he made me this collar so that I may speak. SQUIRREL! - Dug from Up –  Craige Apr 5 '11 at 17:14
add comment

Rather than try and improve your retention and recall in a limited area, the growing body of research suggests that you should work on this in a more general manner.

For example, the simple act of maintaining a daily journal helps general (and specific) recall, even if you never again read what you have written.

Another tip is to take a five minute break about every 30 or so minutes - just do something else entirely, like play minesweeper or go get a drink. Make sure you do limit it to 5 minutes, though.

One that I've read recently is that if you spend some time reading/listening to something and concentrating on it, then the same amount of time with it in the background, then you will retain more than if you just concentrated for that whole time. Obviously, reading is not easily backgrounded - but the plethora of podcasts and vodcasts make this simpler... you can focus on the reading, and then listen to a podcast with similar content while doing the dishes.

I agree with most of the other answers there which consider learning specific API functions to be trees in the woods... Really what you need to learn are what kinds of trees there are in the wood, rather than specific configurations of branches and leaves.

share|improve this answer
add comment

The first step would be to run a performance profiler on yourself:

  • Video-tape as well as screen/keyboard capture your own programming session.
  • Analyze the data to see what information your brain chooses to/not-to remember, subconsciously.

Most of the time, (well, I guess) our brains are hardwired to choose to remember the right things - those that are needed most frequently. However, there might be some reasons why we were influenced to choose to remember the wrong stuff, thus weakening our memory on other more important things.

Sometimes the influence come from technological failures - bad designs in UI/IDE, latencies in text editor, waiting for loading web pages, distracting environment, a coworker who keeps asking about the syntax of another language, etc.

share|improve this answer
add comment

Never memorize something that you can look up -- Albert Einstein.

every time he was asked something, he'd say he didn't know and needed to look it up! He must have been a right thicko....

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.