
Ask HN: Can't seem to remember basic things, should I give up on computing? - varintnotmine
I&#x27;m really frustrated and it&#x27;s getting the better of me.  I just spent 3 hours getting a basic varint encoding and decoding set of functions right because I had forgotten how it&#x27;s done, then I forgot how negative numbers are done, and when I did implement it, I forgot how two&#x27;s complement is represented, looked it up wrongly and did the wrong thing.<p>This is one example of where I forget basic things that lead me to take much longer than most people to do basic things.  Other examples in the last three months include:<p>- Working out how to do huffman codes
- A wrong implementation of basic UTF-8 encoding that meant the program used it was segfaulting<p>Everything is slow, cumbersome and I need to keep on relearning basic concepts I should have at the top of my head.  How do you guys deal with this frustration?  When I compare myself to my colleagues they seem to be much quicker and able to understand&#x2F;comprehend faster, so I just am the slowest and worst coder at my firm.
======
dijksterhuis
You say that you're talking about "basic" things... I have no idea what a
huffman code is or what two's complement even means.

Literally, not figuratively, zero idea.

...

I'm a PhD researcher in Deep Learning... But I had to DuckDuck why
differentiation works the way it does to explain it for a friend the other
day. I still can't remember what happens when you differentiate minus powers.
Does x^-1 become a squared fraction, or fraction of fraction...? Who knows.

I've lived in Linux for years now... Totally forgot how to set up a new user
account last week.

I burnt my soup last night. I BURNT A LIQUID.

...

Did you end up getting it right? Yes? That's fine then.

You're human, not a computer. You make mistakes and you forget things.
Especially when it's complicated & technical.

If you learn to stop beating yourself up, everything gets easier (he says not
quite being there with it yet myself).

~~~
vizzier
Beyond even that a lot of what we do in computing is about making it easier
for humans to safely forget implementation detail. We have to assume that when
you call the object.toString() function that you'll get a string back
representing that object. Be it object orientation or functional programming
its all about composing the minutia into a grander program and intentionally
disregarding implementation detail along the way.

This is why people get frustrated when things are named badly.

------
milesvp
No one’s mentioned the obvious here. We have computers so we don’t have to
remember basic things. It’s far more useful to know a thing exists and what
words will help you search for it. Being able to build things through first
principles will mean you understand things better, but doesn’t make it
required. It’s not clear to me why you are implementing things that should
already exist in a library, but I will say, if you are slower than coworkers,
and that this is indeed a problem, then turn it into a strength.

I have a sort of mild dislexia, where I tend to confuse my perspective. For
example, am I looking at a local minimum or a local maximum? The plus side is
I’m super creative, but the down side is I have to constantly make sure to
double check my work. As a result, I can be much slower developing software,
but because I’m paranoid, my code tends to be less bug prone.

What I’m trying to say, is if you find you’re slower than coworkers, then make
sure your quality is higher as a byproduct of this slowness. The main thing
about work, is it’s literally not a competition, teams work better when we
each work to our strengths.

------
runjake
Join the club.

What I do:

\- Take lots of notes with code examples and thorough basic explanations to
self.

\- Reduce inputs (news, social media, knowledge that doesn't matter)

\- Exercise (moving meditation. walk, run, whatever. time to self. no
listening to podcasts/music/etc.)

~~~
dijksterhuis
I live without internet at home now. It's amazing how much more space there is
in my brain after reducing that single input.

~~~
thrax
Are you a programmer? Because that doesn't sound helpful. If I didn't have
internet at home, I basically wouldn't learn.

~~~
dijksterhuis
PhD researcher for cybersec/ml. So yes... ish. Not doing commits/builds every
day.

It's actually fine for that. I have 24 hour access to my uni building so I
just go in when no-one else is around to write my code.

I print off research papers to read them at home/coffee shops. I prefer
reading from paper anyway.

Got my phone if I _really_ need to read something. But limited data allowance,
so have to ration it...

------
sethammons
Make sure you are eating well, sleeping well, and doing some vigorous exercise
3+ days a week. After that, look into getting 360° reviews set up at work. It
was these that really helped me with imposter syndrome. Having anonymous peers
let me know where they thought my strengths were and what areas were
opportunities for professional growth was really enlightening.

You don't see the sausage being made in others heads. They will have trouble
with things you find trivial and vice versa. If there are things you can learn
from them, do so. Practice the things you need to work on. Compare your
present self to your past self, not as much to your peers. When I started at
my current company, I was the slowest person, had the least professional and
domain knowledge, and had to majorly catch up. I set aside some time per night
or per week to get a little better. Fast forward and it all worked out. I'm
still slower, I think, at a lot, but I have a lot to offer too. Note the value
you bring.

------
jeffshek
I just published my first blog piece about memory and engineering! It took me
a few years to get the systems in place, but I came out as a much better
engineer. Spaced repetition is my savior.

[https://senrigan.io/blog/chasing-10x-leveraging-a-poor-
memor...](https://senrigan.io/blog/chasing-10x-leveraging-a-poor-memory-in-
software-engineering)

------
denkmoon
Knowing how to find information is much more valuable than just knowing the
information.

Does it really matter if you just happen to know how to do huffman codes, or
does it matter more if you can find out how to do them when you are required
to?

The amount of knowledge in the universe is essentially infinite.

------
kowdermeister
> I need to keep on relearning basic concepts I should have at the top of my
> head.

Who says you should? As an engineer you are a problem solver and not a hard
drive to store every step of an algorithm. You seem to know what pieces fit
together but struggle with the details, but that's fine. It's not a negative
thing, you are just a bit hard on yourself. If you don't use a concept
regularly, you are naturally bound to forget it. I can now confidently write
xmlhttprequest and fetch without quick googling :)

> When I compare myself to my colleagues

Don't do that, that's a way to depression and anxiety. They are probably
suffering too you just don't notice it.

------
nf05papsjfVbc
"looked it up wrongly and did the wrong thing"

"Everything is slow, cumbersome"

You may want to evaluate if this is going on even in other spheres of your
life and see where the crux of the problem lies. Unless this is how you always
were, these are symptoms of something else. Perhaps you need to figure out
what is bothering/troubling/ailing you. It could be inadequate rest or
something entirely different. Find someone who can look at things objectively
and can help you sort this out - perhaps a therapist, doctor or a trusted
friend?

------
HeWhoLurksLate
I'm not a programmer by trade, but I can relate. I'm the first chair French
Horn at my school, and have the ultimate responsibility for my section playing
right, sounding good, and blending in. However, I frequently find myself
asking my peers what the fingering of a note is _that I 've played just fine
hundreds of times before_. Does that make me a _bad_ player? _No_ , it just
means that it takes me longer to master things, and that I have to practice a
lot more to maintain proficiency. Should I give up? _Heavens, no-_ I didn't
come this far just to quit because I keep messing up my damn B flats. Should
you quit your job? _Absolutely not._

It's almost like you're human and that your brain slowly removes things over
time to make way for new information.

How are you doing physically and mentally? I've found that doing sports
(getting out and jogging, doing yoga, etc.) or something physical really helps
me stay focused and positive, and that going to bed at a sane hour is more
important for me than getting extra work done- because if I stay up late, I'll
be tired and sub-optimal for the next two or three days.

If you're the _slowest and worst coder at your firm_ , then there's probably
at least somebody who's knowledgeable enough and willing enough to help you
out and talk to you. Find them, and when you ask for advice, write it down
somewhere so that you don't have to go back asking the same thing. If you can,
befriend them, though that will take time.

You didn't come this far just to quit. You can do this.

------
thrax
Why are you writing your own 2s complement and Huffman coding? Better people
than you or me have already written that stuff. The larger question is why did
you get into computing in the first place? Focus on that.. everybody is a
moron until 10 years later you realize people are getting answers from you..
and asking "how did you know that?", To which I usually reply.. "10 years of
being a fucking moron with no social life. You're welcome."

~~~
thrax
And by 10 years, I mean 25 and counting, but I don't count the first 15 since
Im self taught and there wasn't much of any internet then.. so even if I
sucked.. I was still an expert compared to the next guy in the phone book.

------
cbanek
If it makes you feel any better, I think this is almost true for everyone.
There are so many "basic things" that it's hard to keep them all in memory.
I'd have to look up all these things you're talking about (other than maybe
two's complement, but even then, I'd look it up just to be safe).

Much of this memory trouble is also referenced in the interviewing process,
since they want you to remember it but in real world scenarios, everyone just
goes and looks up a reference.

On the other hand, I think by having to "relearn"/refresh these things, it
makes you faster at taking on something you don't know, which I find to be
pretty common.

It also sounds like a lot of things you're doing are based on standards or
formats, which are much harder than most people give them credit for. I always
have to refer to the standard.

How do I avoid these details? I try to use libraries wherever possible,
although these tend to be another thing I have to reference anyway!

------
mjmj
I still look up the order to create a basic Linux symlink.

Acronyms or pneumonic devices can help solidify the things you do frequently
to commit them to memory.

Frequent repetition, de stressing, quality sleep, exercise and SLOWING DOWN to
actually digest the patterns and actions you’re doing can help.

Beyond that note things down and the rest isn’t important enough to need to
remember, google is fine.

~~~
renholder
I find that, if it's a concept completely foreign to me and it took me 30
minutes or more to figure it out, I'll write a blog post on it. (Did so,
recently, with the Swedish Personnummer and Luhn Algorithms.)

This mightn't help anyone else but me _but_ the fact that I took the time to
try to explain it to someone else means I've had to try to solidify my own
understanding of it before attempting to explain it to someone else - if that
makes sense? Perhaps, even the fact of writing it down helps me to remember it
that much more because I have to present it as consumable material to someone
who may not just "get it" from the onset.

------
croo
I sympathize with you. These things sounds trivial and should be trivial
right? If everyone could wrap their heads around these subjects these things
wouldn't be university material. Maybe these things _are_ really hard to
grasp?

Humans are learning by repetition and forgetting things that aren't repeated
commonly. We can do a lots of mistakes, creative thinking and also new ideas
by mistakes. Computers remembers everything forever and can do extremely
precisely anything told but can't do batshit by itselfs. Your frustration
seems to be born from the fact that humans and computers are so incompatible.
I have news for you - to be frustrated by this incompatibility is part of our
job.

Oh and don't forget to compare yourself with your previous-self instead of
your colleagues.

------
hguhghuff
I just try to be good at relearning.

I also try to stop attacking myself for not being smarter/faster.

------
quickthrower2
Don’t give up computing but consider doing test driven development. (Google
it). It will help you discover the mistakes a lot quicker. I would certainly
make the same mistakes especially with rarely used algorithms.

Most coders would use libraries for UTF8 and a high level programming language
that doesn’t segfault - in other words they’d “cheat” but in reality they
probably just want to solve the problem quick and get the job done.

------
ordu
No one cannot possibly know what happening in your mind, to find what is wrong
with it, based on this short description. But I have a guess.

Mostly people do not try to remember this things, they do it the other way.
For example, I'm learning what is two's complement. I'm not trying to remember
math representation, this representation is not something to rememeber, it is
just one more way to explain what happening. It is a way to clarify things, in
case when textual explanation was not enough. What I'm trying to do, is to
find a way how should I think, to reinvent two's complement when needed. I'm
trying to understand what original inventor of two's complement was thinking:
why he did it this way, not the other? And I'm trying to find a visual
representation of two's complement.

It is the best way to deal with math and technology. Even if you learn social
science, you can learn how some author thought, instead of remembering his
books by a heart. If you learnt how to think like others, then you would need
not to remember their thoughts, you would be able to generate their thoughts
yourself. It reminds me: [https://hackernoon.com/how-not-to-memorise-
mathematics-98fef...](https://hackernoon.com/how-not-to-memorise-
mathematics-98fef71aefcf?gi=c7efa38ec9ce)

My history teacher in the school claimed, that he didn't remembered any
historical dates except two or three. He managed to calculate all the other
dates, using these as a reference. I never learned to do that, but I believe
that it is the same thing, as I do with math and CS. He learned to think like
history, and to generate dates like history did, instead of remembering them.

Your memory is not like computer's one, your memory is generative, your mind
is a compression algorithm, that can represent data by smallest possible about
of remembered bits. As a funny consequence, your memory can generate ideas,
that no one have found before, and sometimes you cannot tell is the idea you
found is novel, or you read it somewhere. It is because generating new ideas
and remembering old ones actually the same process in a mind.

(With two's complement, I confess, it is easier for me to remember, because if
is modular arithmetic, it is ring of integers modulo 2^n, I dealt with them a
lot while studying math.)

------
comius
Are you continuously under pressure/stress? Lack of positive feedback? This
might be symptoms. If that's the case you need time off.

------
mesozoic
I wouldn't worry computing is about building a solution then abstracting that
layer away so that you don't have to think about it. DO that and you'll be
fine. I for example rarely remember the specific names for things but remember
and derive concepts very well. Consider it your own personal advantage that
you're not weighed down by details.

------
afarrell
I would take a bit of time to learn a bit about cognitive science. It can help
a lot in thinking about how to set yourself up for success.

Some basics: How consistently are you getting good sleep, exercise, and
nutrition? Don’t forget that your brain is made of meat. Give the meat what it
needs.

------
facorreia
I feel that I have more difficulty remembering things when I'm a little sleep
deprived. Have you tried increasing your sleep time by one hour?

------
callmedaddy
studied cognitive science and all I can tell you about memory is that it's
very, very complex... we don't even know what "forgetting something" actually
means (is something that's forgotten really forgotten, i.e. entirely
inaccessible) nor do we know what causes forgetting.

------
padpnut
Meditation and playing Dual n Back regularly has helped with my memory.

------
ncmncm
You probably need to start taking Welbutrin or something. See an occupational
psychiatrist. They really can help, and quickly.

------
ezds
Hey, you made some mistakes. You knew enough to know they were wrong and fix
them (or attempt to fix them). I was kind of going along with you like, "ah
man, yeah, sucks." Everyone gets frustrated, call that mental sweat.

I am in a daily competition with my peers at a very competitive university in
the bay area. Stats are posted after every exam and most homeworks--so you see
exactly how you compare to everyone else. It can get distracting if there's no
perspective.

As far as your colleagues go, I'd bet some non-trivial percentage of the
perceived skill gap is illusory. It's easy to think someone else is
smarter/faster; it's even easier to let others think that you're the one
that's smarter/faster.

[https://youtu.be/RU_GBcdxT84](https://youtu.be/RU_GBcdxT84)

For me, the best way to level the field is to ask questions. I often find
people don't know as much as they let on (unhelpful). Or the person does know
a lot, (helpful) then I'm picking their brain. I like to think of this as
sharpening against others instead of competing.

What I do to maintain optimal performance/memory/recall:

Prioritize sleep. I shifted my day to the left. I wake up at 5 and I use my
"best brain hours" on priorities. I am a night owl, but giving that up seems
to have helped my memory/study habits.

I practiced these two things without knowing: spaced-repetition and active
recall. Learning about them prompted me to begin a more structured approach.

If there's something I need to learn well, I want to pile as many sleep
intervals on top of it as possible. I don't know if there's science for this,
but I feel as though more sleep on a topic helps me consolidate the memory.

Slow is often fast, but fast is helpful too. If you're going to make a fast
pass over material, then let it be just that--a fast pass. Then make a slow
pass. Try not to build up "pressure."

Sometimes anxiety can set in and it is a drain. I also think it may even
distort the perception of time. So, you may not even be spending as much time
trying to grok something as you might think. Set a timer, and do twenty (or
whatever) minute intervals. My goal is to always work until I surprise myself.

A hurt ego favors downtime and often wastes time. Have a plan in place for
when you do get frustrated. When you're rolling up on gridlock, have a couple
little side streets you can detour on. That is, maybe try to have some related
topic to work on that's in a similar domain. This way, you're still moving
forward; getting another win can boost confidence and might give you some
inspiration.

Yeah, like I said in the beginning I had expected it to read something like,
"...and I can't get a job..." I am in classes with students who think being in
the mean or below it means they'll _never_ get a job. I know we're likely at
very different places career wise, but damn I'd like to be the slowest coder
at a firm ha, you know? Been working my ass off to become a good engineer and
contribute.

Another thing that helps me is maintaining a beginners mindset; I try to not
be offended by something I don't know or have forgotten. It's hard, but not
carrying that weight means I can focus better.

