How to Retain Lots of Technical Stuff ?
May 20, 2012 2:07 PM   Subscribe

I move back and forth between language, technologies and systems. I spend inordinate amounts of times getting back to speed. Is there any way I can ease this and reduce this time period?

I work with a variety of languages: C, C++, Python, Scala, Perl, Assembler, Javascript, PHP over different time periods and with different technologies over a wide range of APIs of many thousands of calls.

I might spend about 6 months working on something and then not use it for a year or more and come back to it later. E.g. I spent most of last year using Boost and then switched to C and used glibc for some embedded systems work and then went off and did some python based code for 5 months. I'm now back to using Boost.

I spend a lot of time learning the runes of the APIs and the languages making things as efficient and clean as I can, but once I've been away for a long time I come back to things and find I've forgotten quite a lot of the API and sometimes even fundamentals of the language (e.g. I'd actually forgotten of pythons new "with" statement until I saw it online in an example)

I've recently taken to keeping notes for myself but I was wondering if anyone has any ideas on handling this scenario better. I tend to thrash about for two weeks or more before I get my fluency back every time I get away from things or switch and it's becoming really annoying.

This issue tends to repeat itself with tools as well: e.g. make/gdb
posted by gadha to Technology (5 answers total) 11 users marked this as a favorite
I'm a novice programmer, but I do use about five or six languages also. My strategy has been to keep useful code snippets and notes in Evernote (the notes are easily searchable and tagable) and I've found it very useful for specific complicated tasks that took me a few hours to figure out the first time. I've found it much more efficient than just searching through my code files for snippets using a keyword. The other benefit is that it is roughly chronological so you can build up a record of the general thought and action process that you went through and just read through the steps so that it reminds you what you did.
posted by a womble is an active kind of sloth at 2:28 PM on May 20, 2012

I git grep through my old projects all the time to find out which API I used to do something, or to see if I already have some sort of snippet. The simplest, cleanest or newest projects are also useful whenever I need to create a new one by taking a few base files. git blame and git logs are where I look if I want to understand why I did something in the past. I also use Tomboy notes for more narrative stuff. I keep a daily log using the daily note feature, and if something grows beyond a few paragraphs it gets moved to its own note. Project urls and howto get a favorite, as well as a bookmark if I particularly care. I'm okay not remembering every detail, as long as I have an efficient way to find it.
posted by Tobu at 3:20 PM on May 20, 2012

Well, what works for me is a combination of the GMarks Firefox plug-in (to organize links to important Web pages with good overviews of various languages, tools and topics), storing personal notes (with code snippets) on anything that took me a long time to solve, and/or heavily commenting within the code anything that took me a long time to implement. With regard to the second point, I originally tried using Journler on my Mac Book Pro and KeyNotes on my Windows machine, but eventually settled on a Wiki instead (platform agnostic, able to do code snippets better, decent search capabilities). YMMV.
posted by forthright at 4:45 PM on May 20, 2012

If you can get back to fluency in two weeks, I'd say you're doing incredibly well.

Personally cheat sheets like the ones at Hyperpolyglot help jog my memory if I go back and forth between languages.

Also I have a blog on where I keep notes on stuff that I've worked out how to do which I'm probably going to forget again at some point in the future. It's quite a good way to keep notes as there is good support for tags, categories, searchability etc. Writing the notes in a way that might be useful to other people is a good way of making them useful to me in the future too.

For the most part I just accept it as a fact of life that I'm going to forget stuff I'm not regularly using, and I don't consider the overhead of what it would take to keep everything perpetually current worthwhile. I tend to think the brain is designed to forget stuff that's not likely to be needed anytime soon, and that's probably important to its being able to process efficiently the stuff that is likely to be needed soon.
posted by philipy at 5:28 PM on May 20, 2012 [1 favorite]

I'm not sure I recommend using notes like others seem to be suggesting, at least not exclusively. Someone who takes two weeks to get up to speed may not be perfect, but it's still ok. Far worse is someone writing code that looks like some sort of relic, ignoring modern best practices,
posted by vasi at 1:21 AM on May 21, 2012

« Older In the past 4 days I've had 4 lapses in memory....   |   Is the Chum-Churum drinkable? Newer »
This thread is closed to new comments.