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.

I'm not sure if it's just me or if this is common in our field.

The past year has been a bit intense for me. I've been learning a few different technologies to get some tasks done and sometimes I've had to completely focus on that one new technology I'm learning.

What I noticed though when I go back to using everything together in the full project is that I forgot how to do things that I already knew how to do before I started focusing on learning that other new technology. Sometimes I find that I forget even simple things like the syntax for selecting a div in jquery, that I have to go back to old files to get a quick peek.

Sometimes I could be coding something that I recognize I did before in another project, but can't quite remember which project it was for, so I have to go through several projects and look through the code to try and remember where I did that.

What ways have you invented to prevent yourself from forgetting things you've done before, or to easily access code you've written in the past?

share|improve this question
8  
You're not alone man. That happens to the best of us most of the time. The human brain tends to forget stuff that you don't need in everyday tasks so it's perfectly understandable. –  Terence Ponce Oct 10 '10 at 8:09
2  
IT'S JUST YOU!!!! :O Just kidding. Happens to me all the time. –  Nick Oct 10 '10 at 9:14
    
> Does this happen to other people? It happens to me a lot. The only solution is to get younger. :-) –  Stephen C Oct 10 '10 at 10:33
    
Possible duplicate of How do you manage your knowledgebase. –  Anna Lear Nov 11 '11 at 4:34

8 Answers 8

It happens to me. For example, since I don't really use them at my job, I am constantly re-learning Ruby/Javascript. You eventually start remembering some things, but I have also acquired a HUGE number of browser bookmarks with a lot of tags that I depend on heavily. For commonly used code-snippets, I have a collection of them, but I still have to: 1. Remember that I have them, 2. Find the one I thought might be relevant, and 3. Determine whether what I remember was really applicable or not. I haven't bothered to come up with a better system, unfortunately.

share|improve this answer

I keep a work log. It's just a plain text file. Every day I make notes on stuff I'm working on: what I did, what sort of problems I encountered, how I solved them, who I talked to, what we discussed, what decisions we made, relevant files/classes/webpages, etc.

So any time I have a problem and I have a deja-vu feeling about it I just search in my work log and in most cases I can quickly find what I'm looking for.

Work log also makes it easier to keep track of how you spend your time, write weekly/monthly reports, prepare for performance reviews.

share|improve this answer

Nah, it's not just you. I believe this to be common in almost anything theoretical which you don't use for any longer length of time. Think about all the stuff you've learned in school or uni which you don't remember anymore. I tend to forget stuff already 2 weeks after the final exam...

The only way to remedy this, that I know of, is to use it. Often. It's like TV commercials where you remember each and every line and scene. Why? Because you see them every day - a constant reminder which causes your brain to rearrange its synapses (or whatever it does) for you to remember it. Imagine if we could do the same for all knowledge we would like to remember - algorithms, methods, formulas, syntax, etc. (I think it's time that we protest and make the TV stations show this kind of useful stuff during program breaks instead of those tacky commercials.) But fortunately, almost everything you have once learned you can relearn in a shorter time.

If you happen to know when you're writing a piece of code that you'll want to look back at this some time in the future, copy it to a separate file and keep a library of useful code snippets. That way you don't have to search through entire projects. Also make sure to arrange these snippets after language and kind (What does the code do? Why did you save it?) for easy access.

share|improve this answer

This happens all the time to me. I just have so many things going on in that noggin of mine I'll forget so many of the simplest things. Names, birthdays, irritating meetings all slip through like water through sand. But anything to do with computers, programming, math or anything like that just stays there. The best way to memorize a language, technology or even a project is write a Cheat Sheet.

I generally have a qucik reference for everything I work with so I can quickly remind myself whats going on. I also have a notebook I keep all my notes in and reference page numbers on the cheat sheets.

share|improve this answer

That happened to me in many instances before. That's why we write documentation in our code.

And sometimes, you just need a reference over the internet to help you. It's perfectly fine to look up for help.

share|improve this answer
1  
"That's why we were to write documentations in our code." grammar aside, documenting a language syntax in production code just clutters it, making it less maintainable. How about writing down the basic syntax of a given language + some useful links in a separate .txt? –  vemv Nov 11 '11 at 4:53

I can assure you it seems to get worse as you get older :-) But that's because the longer you're into developing, the more knowledge there is to forget.

On the other hand, you gain more "intuition". You recognize patterns, how to solve certain problems, and other things you've learned in older projects with different languages and environments and can make use of them even though the current conditions are different. I mean, I constantly look back at code I wrote just a year ago and think, "Today I would write it differently" and even quite often "Today I know how to solve this one better".

So, even though you might forget a lot of stuff like method and class names for a certain API, your skills normally improve on a higher level.

share|improve this answer

I often forget things after not using them for a while - syntax, keywords, techniques, etc. To help, I read this book by Dominic O'Brein (8 times World Memory Champion). There are some techniques and tips from that book which I use to help me remember things. It's not always easy to apply these to programming, but with some creativity, you can begin to link things together to help you recall them better. It's not perfect, but it might help over time.

Also, have a read of this article. It's an interesting read that gave me some ideas on how to improve my recall for my development work.

By fa the most useful tool for me has been mind maps. I use them for allsorts:

  • Documenting test cases.
  • Visually describing the architecture of a project I'm working on.
  • Notes and links to websites on a technology I'm interested in.

Mind maps can be used for many different scenarios. Certainly has made a difference for me when learning new things.

Cheers. Jas.

share|improve this answer

As for code (from short snippets to whole classes) you have written and which you think that you will possibly need to reuse in the future: maintain a public programming blog in which you write and explain all of these. This has a number of advantages:

  • The most obvious, you will have a code repository to check in the future.
  • You will want to write really useful blog posts, so that other people that might read them will actually understand them. Most times this will force you to refactor your code on the fly, which is a good thing.
  • Occasionally blog readers may point bugs or suggest useful improvements to your code, which is a VERY good thing.

You may write a regular blog or use programming oriented sites like Refactor My Code or The Code Project.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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