Bad Memory as a Software Engineer

Image for post
Image for post
Image of https://www.imdb.com/title/tt0343660/mediaviewer/rm3001391360 referring to 50 first dates movie, where the role played by Drew Barrymore used to erase her memory every morning

Have you ever read and fully understand the concept you were targeting or followed through some lecture or documentation and got everything but later when you were asked about that you don’t remember the answer? I have. Even recent tasks I have implemented (less than 1 or 2 months ago) and I just forgot what I have done or, at least, don’t remember things I thought I would remember.

That’s very common, at least for me. Quick story: Some people used to say I have a great memory. In high school, I memorized every chemical element (not only the main one but even those at the bottom) from that periodic table and their atomic number. This is easy, right? You can use some tricks to get that. I had a good memory of histories as well from childhood or college time or almost everything people normally forget, I used to remember. My point is, I have no memory disease or problem and still constantly forget things. Most of us don’t have pathologic mental issues (maybe stress or sleep problem).

Periodic Table of Elements
Periodic Table of Elements
Image from https://cdn.britannica.com/45/7445-050-C970D7FA/version-periodic-table-elements.jpg

As soon as my world started to be more complex, especially regarding IT, I started to forget things. Things that were fresh at my head and still didn’t make me feel comfortable about answering all questions about it and that kind of frustrates me. This makes me insecure about presenting something or even asking someone about their presentation. Can you see where it takes us? Both sides of a presentation or discussion are always insecure because nobody owns all knowledge. We work in an area mostly abstract and nobody has enough time to go deep into everything. We connect on several remote services and import libs and start-up frameworks with tons of modules that are constantly updating so fast you can’t follow and that’s an overwhelming amount of code you’d possibly enjoy debugging.

Tips

Nobody actually randomly debugs those pieces of code. We work on demand, we focus where we need to focus because the IT is huge, even your framework is big and your time is a limited resource. That’s why I invite you to enjoy the chaos of insecurity, be aware that some audience can get you with a surprising question you are not sure the answer and then be humble to give yourself the right to not know it. Be humble to admit you can be wrong. (Too much of self-help phrases? Sorry, I promise I am no coach at all lol)

Image for post
Image for post
Image from the movie In Time starring Justin Timberlake. This is his living time left.

All I have said doesn’t give yourself the right to be raw at all subjects. You will focus on the key concepts, key modules and everything you judge is important and you will master it. You can read Baeldung or Medium texts and completely understand the context. Go further and try to compare the author’s opinions, try to implement or test yourself, try to explain to someone, argue about that. One week later, try to recall all the key points. One month later do the same. Probably your long-term memory will be accessed by now and eventually, on-demand, you can check all of it on your past annotations or your Github repository.

That’s how knowledge is built. The last aspect that I’d like to mention is expertise. The more you are aware of the subject you are trying to master the more easily you will fix that knowledge, consequently faster. The opposite way is valid as well, when you don’t know the subject you will take more time. But, persistent, you will get there eventually.

Example

You don’t exactly know how git rebase works. You find some answers on Stackoverflow and understand it all. That’s great but it doesn’t feel you can do much in practice. I suggest you create a repo on Github with readme file, open several branches to reproduce the concurrent work of your company. For example, change the readme and commit to one branch called reb. Now go to another branch called mer, change the readme and commit it, then merge mer onto master. Now, go back on reb, do the rebase with the master, git log it to see the order of commits, push it to master and git log on the master to see the final result. Now you seem more prepared, you can continue going deeper in this, just keep in mind how much deep you need it.

Image for post
Image for post
Poorly image made by myself lol

Conclusion

Your mind is an optimizing system that operates in the manner of if you don’t use it then you don’t need it. Your garbage collector will erase it. So, select wisely the key knowledge you need and work towards master it. Don’t try to master every piece of code or concept. Live with the feeling you don’t know a lot of things in order to know a lot of other things. Your time is like the ring for Smeagol, it is your precious. You will face odds when you are getting in some new area because you don’t have enough expertise YET.

Don’t you agree or have something to improve this conversation? Share your thoughts on the comments session.

That’s all folks.

Written by

I am making people’s life better as a software engineer. https://www.linkedin.com/in/guilherme-andraschko/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store