

Any advice to a sw eng who can't remember/be expert on stuff - blindra

Hey guys!<p>I'll try to explain as clear as possible my situation. (and short)
I am not sure what to expect. Any advice, or maybe a similar story would be great.<p>problem: 
1. No matter how I read/practice on a tech subject (PL, fw), after couple of months I forget
(Ex: I studied JS and then created several js apps (6-7) 4 months ago, now I don't remember anything.)
2. No matter how hard I study on something, I still can't get.
(Ex: DP)
(Ex: I am building web apps with rails for the last 2 years, and I can't tag myself as mid-rails eng. I still need to search API for even basic ActiveRecord queries or to define scope statements)<p>personal background:
1. I completed BS in CS 3 years ago. 
2. I am building web apps since 2008. I never took a break. 4 full years.
3. I've worked on really big projects. (apps more than 3+ million user base or created several apps that utilizes ML algorithms)
4. I am 28, I don't see myself stupid but I started thinking my brain does not function as well as 2 years ago.
5. I try to follow new technologies, open source libraries, and news sites.(this is not my actual HN handler)
(Currently I use backbone, coffeescript, rails stack. But again if you ask me some basic thing in backbone or coffeescript, probably I can't answer.) I created 4 apps using this tech stack.<p>It's been a very long post, but any help really appreciated.
Thanks
======
brudgers
I have a friend who is a Phd chemist. We were undergraduates together. We went
to High School and Junior High together, too. When he was studying chemistry
as a senior, I remember one of the pithy academic phrases he learned from a
professor.

 _"Five hours in the lab will save you a whole hour in the library."_

I'm an architect. I once had a job as a building plans examiner. I read the
entire building code, front to back. Others have at times considered me "a
building code expert" - I think of myself more or less equivalent to "the
office computer guru" because they can install a new video card in a PC, but
anyway...When I am designing, or someone asks me a building code question, I
have learned over the years that the fastest most efficient way to proceed is
to open up the code book and read what it actually says. I learned my memory
is faulty and incomplete by paying the dumb tax.

Flailing around has it's place. It's part of the creative process. It's not a
good method for executing an objective plan.

Good Luck.

~~~
blindra
"Five hours in the lab will save you a whole hour in the library." I am
confused on this, you mean "a whole day" or am I missing something here?

What I do to cover my this stupid problem is I work a lot. I always repeat
myself and it is of course frustrating. (for example I studied Dynamic
programming 3 times from scratch, solved 20-30 problems each time, but after
1-2 months I completely forgot how to solve.)

~~~
brudgers
I studied Basic in High School on TRS-80's in 1981. I bought the Amiga ROM
kernel manuals a few years later. I've owned Turbo C++, basic compilers,
downloaded VS express, Python for my Symbian Phone, Beans, JavaFx, and a whole
lot more. I did the Code Academy Javascript class. I worked through some of
project Euler in Javascript. I started working through Graham's _Common Lisp_
a few months ago. I am hung up in Chapter Three. It's pretty obvious that I
can't program for shit after thirty years.

So what? Sometimes I enjoy the challenge anyway.

~~~
blindra
Wow that's a lot of trying. What you are suggesting is basically I should keep
trying to learn. Because even though I can't memorize important stuff or I
have to re-learn important concepts, at the end I am able to write good code,
and I solve problems.

------
tom_b
I have found that I really only "remember" those aspects of my job that I
currently use on a daily basis for some period of time. Learned material that
I don't refresh by use in some relatively short period of time (days? weeks?)
drifts away.

I may have "aha" moments when a problem comes up that requires previously
learned, but relatively unused topics. This is often handy by itself "hmm, I
think we can use language feature y for this and it will be easier . . . "

I have experimented with Anki (spaced repetition software system) and like it,
but it requires an upfront investment of time along with the taste to know
that something is worth the effort of memorizing.

I think it would be helpful to consider what is it you want/need to know
without reference materials. Come up with a learning plan for that, and make
some regular investment of time in those learning activities along with some
Anki to help keep it fresh. Lastly, realize that you probably aren't going to
turn into a machine at the keyboard when you are grokking full tech stacks.

Ruby/Rails/Javascript/Backbone/Coffeescript - this is a long list of tech that
is both different and highly focused. There is no shame in having to refer
back to ref materials to keep all of that straight.

As a personal anecdote, I recently was playing around with a new PL on some of
the competitive programming sites. I was stunned to find that the vast
majority of my basic algorithms knowledge had just evaporated. I shouldn't
have been surprised, because frankly, I simply haven't had to do any
algorithmic work in years and years. I can tell similar stories about any
number of topics that I once would have listed with pride on a resume or CV -
at this point, I would not include them at all other than as a dusty reference
point that I used them long ago . . .

~~~
blindra
Great answer and suggestions, thank you! It's great to see that I am not alone
on this. Except using Anki, everything in your posts apply to me.

Ruby/Rails/Javascript/Backbone/Coffeescript - I know I can't be expert and be
very fluent all of these stuff, but since I am a full stack developer, when I
apply for a job, they ask questions about these technologies and expect me to
know these.

I have various previous projects with this stack, and I generally recall while
developing new ones, but currently I am trying to get a fulltime job, and now
this problem is much more obvious to me. (and kind of blocker too)

------
ppereira
Try converting quick reference card into a deck for Anki. If an online quick
reference is not available, the regular structure of language reference
manuals and apis makes it straight-forward to create a card deck for the tool
of your choice.

~~~
blindra
Thanks for the suggestion ppereira, I'll check that out. But the thing is I am
ok with not remembering small things or api call, as I tried to give some
examples, I am having bigger issues than that.

------
maxdemarzi
I have the same "problem". I have a terrible memory but can learn new things
very fast. I solved my problem by having a technical blog and a metric ton of
github projects online.

<http://maxdemarzi.com> (40 some technical posts)
<http://github.com/maxdemarzi> (almost 100 public and private repos)

Makes it easy to recall how I did something or "re-learn" how to do it.

~~~
blindra
"I have a terrible memory but can learn new things very fast." Exactly!

I write technical blog posts as you do some time to time, and I have also
github account. Besides that, I always keep opened my previous projects as
references.

So thanks to these, I can quickly develop my new apps, but whenever I am in an
interview, I can't develop most of programming questions, or I can't answer
specific questions (even simple ones) about technologies I work daily basis
like rails or js.

------
staunch
Are you chronically sleep deprived? If so, that's almost certainly a huge part
of this problem. Even if you think you get enough sleep, you might try getting
more.

~~~
blindra
I considered that too. I tried to find the best sleeping time and duration for
me, so I tried 6hour sleep, 7 and 8 hours. I didn't notice any change, and I
can say I generally have solid sleep.

Now I sleep around 7 hours, and I think I found my most productive hours.

~~~
staunch
It can take a surprisingly long time before the effects of sleep deprivation
are fully overcome. I'd suggest a week of sleeping 8 solid hours before ruling
that out.

~~~
blindra
Ok I'll give it another try starting next week. thank you

------
robodale
Every time I want to use a switch-case statement (C#), I have to look up how
to do this. I have used C# since 2002.

~~~
blindra
So what is your strategy while writing new programs? Do you use google/past
projects/API docs all the time just like me?

How did you survive interviews if you had any?

