Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Can't seem to remember basic things, should I give up on computing?
38 points by varintnotmine on March 27, 2019 | hide | past | favorite | 36 comments
I'm really frustrated and it'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's done, then I forgot how negative numbers are done, and when I did implement it, I forgot how two's complement is represented, looked it up wrongly and did the wrong thing.

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:

- Working out how to do huffman codes - A wrong implementation of basic UTF-8 encoding that meant the program used it was segfaulting

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/comprehend faster, so I just am the slowest and worst coder at my firm.




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).


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.


You epic human, thank you for this :) the soup bit made me laugh out loud .


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.


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.)


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


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


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...


I used to be in this boat for financial reasons. I downloaded tons of documentation and learned to love specifications.

Of course, nothing beats Google, but if the docs are good (big if) you tend get a deeper understanding of your tools.


I know that feeling but people were not entirely unlearned before widespread home broadband. Consider the possibility that you could even learn more than you do now, without using the internet at home. It’s likely possible!


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

I gained a ton of productivity when I started creating a set of helper functions, examples, and gotchas for each language / domain I work in. I used to use a network call helper in JS for ages to remember all the different ways errors can bubble out of fetch. I also have a file with a bunch of ML algorithms, cause there's no way I can keep it all in my head, but I don't want to forget the right tool for a job.

I'm still self depricating, but my 'babys_first_elixir.exs' has been invaluable resource for me to dump interesting funtional patterns into while reading other folks code, then referencing when it's time for me to write.


Reduce inputs. Thanks.


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.


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...


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.


> 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.


"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?


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.


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."


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.


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!


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.


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.


Heh. I almost always type 'grep foo bar' and let the error tell me the right order because I never recall if it is needle haystack or haystack needle. I do this a lot.


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.


I just try to be good at relearning.

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


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.


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...

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.)


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


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.


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.


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?


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.


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


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


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

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.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: