Table of contents
A few months ago I posted an article about my choice to not do the LeetCode grind. My writing resonated with a lot of people. It felt great to finally be validated by a community of people, especially when I was walking down a rather uncommon path. Today when I woke up I had no idea that my choice will be tested.
It was an ordinary day at work. I'm about 7 months into my internship and the work is something I've managed to get a hold of by now. I have a good idea of the project I'm working on, and also the ecosystem that surrounds it. That was until I delved into a relatively new section of code today. I met my villain.
I'm fairly good at most data structures you'll generally encounter in code in real life; stuff like arrays, linked lists and hashmaps are incredibly common and will generally be the data structures most programmers will work with 95% of the time. I haven't worked directly with linked lists in production, but I was fairly confident in my ability to work with them (in a non-interview setting).
That is until I met one. It was an element insertion routine. I noticed a prev
and next
pointer, so I understood that it was doubly linked. That part was easy. I read the code further, and all hell broke loose. All I could see was that pointers were flying willy-nilly, pointing to head
, to the current node, to the prev
and next
blocks. I thought:
I whipped out the marker and prepped the whiteboard. It was time to start mentally stepping through the code line by line. I hit Roadblock after roadblock. Pointers in C are notoriously hard to work with, but I considered myself to be fairly knowledgeable in them. It was like I was watching my knowledge disintegrate in real-time. I felt like I was entirely incompetent in the work that I was doing. There are people out there who can work on incredibly heavy graph theory-based algorithms, and I couldn't even figure out a simple linked list. It all came crashing down. I opened exercism to practice some C, but I couldn't even understand what exactly they wanted me to do in that question :p
I was heartbroken. I thought about my decision to not do DSA and wondered if it was just a plain wrong decision. In my final year of engineering, in a company working on a language I learned 5 years ago, I felt like I had learned.....nothing.
I told a friend that I feel like I'm an impostor. I packed my bags and went home. Likely the best decision I took was to fill a bucket with cold (ish) water and go for a bath.
The world feels.....different when that first pale of cold water hits your body. It's like the brain is lost in thought one second, and the next second the body interrupts your brain to tell you that we're going to die. The brain shuts up. The body takes control. Deep breaths come damn near automatically. Your heart rate increases. It's incredibly meditative, and really puts things into perspective. In that moment, all you want to do is breathe. No thought passes your brain. The cold clears you of all that is unimportant. I finished my shower with a much clearer head.
The friend I had messaged was concerned. I told them that I feel much better now and opened up Hashnode to pen down my thoughts.
On Shame
One thing I learnt at the beginning of the year was the existence of alexithymia. It is best described as an emotional colour blindness, the inability to access your internal emotional state. It can lead to problems with motivation, purpose, addiction, and relationships, and affects men more than it affects women. I learnt about this condition and thought, Hey! that's me!
Ever since then I've tried to understand what emotion I was going through whenever I felt a bit off. I do that by closing my eyes, taking a few breaths and asking myself what I'm feeling right now. Generally, my body and mind will give me an answer. Today I asked myself the same thing and my face started heating up. My body said it felt ashamed. It has been a turbulent time for me. Since I'm in an internship I'm not sure if I'll convert to a full time employee. Good companies visiting my college are a few and far between. On top of that I don't know Data structures and Algorithms, putting me at a disadvantage. Being good at development is the one thing I have, and I felt like that was taken away when I looked at that code. My brain then takes leaps subconsciously, trying to analyse the reality I'm experiencing and extracting insights from them. My brain probably went from my reality, which was that I was unable to understand a part of code, and took leap after leap, making me feel as if I'll never amount to something, and that I'll never be loved.
Feels incredibly wrong when I pen it down. I'm surrounded by people who don't love me for my intelligence or the job that I have. I have friends who love me just for who I am. They don't care about my programming knowledge. When I go home my sister won't hug me any less tightly for not knowing DSA. When my mom sees me she'll cook my favorite food even if I'm unemployed for a long time. I am loved because I am me.
You see, shame is a funny thing. It'll notice a small reality, and it'll blow it's negative side out of proportion. The reality was that I was just encountering something challenging. My shame told me that I was unlovable. Just seems funny in hindsight.
The best way to counter shame is to share it. You'll quickly realise, that what you were thinking was incredibly inaccurate. That's what I did here. First I shared it with a friend, now I share it with you.
Better does not exist
Part of the reason I was so hard on myself was because I felt like I made a big mistake by not doing DSA. I compared myself to someone better. Someone who could breeze through the work I was doing. I took half an hour to understand what was happening in that piece of code. A competitive programmer might need two.
What I failed to see, was that such a person simply does not exist. If a competitive programmer was in my place, he might read that code easily, but he might not have been successful at what I had done in the last 7 months of my internship. Maybe he wouldn't have gelled with my team. Maybe he would be frustrated at some other part of the code that I had already breezed through. You are the result of a trillion things coming together to make the person that you are. There is no one who's exactly like you yet simultaneously better at all the things that you struggle with.
When I dropped DSA, one of the reasons was that I knew that if I find a complex data structure while working, I could spend a little extra time then, instead of spending six months grinding, learning something I might not use any time in my career. When that thing actually came up, I judged myself for not knowing it. Seems stupid in hindsight. The ramifications of my choices showed up and I panicked. The fact of the matter was that I had never encountered a circular linked list being used as a stack before, and I was a beginner at it. When you're a beginner, you're naturally going to struggle. It says nothing about your intelligence, and struggling to understand a new thing doesn't make you stupid. Again, its incredibly simple in hindsight, but equally challenging in that moment.
Memento Mori
Memento mori is a Latin phrase. It translates to ”remember that you will die”. It is not meant to be grim. It is a reminder that, well, you're going to die one day. Everything you've done will cease to exist. Everyone you love is going to disintegrate into atoms. Will you really care about not being able to understand a line of code, if it's not going to matter at all on your deathbed? It's an incredibly powerful phrase that puts things in perspective. It doesn't mean that you should stop caring about things, instead, it means that you should remind yourself often to focus on things you care deeply about, and let go of things that you don't.
I'll definitely forget about this minor setback I've had today, but I won't forget my friend who rushed to show me support, my family who'll love me even if I'm not doing much, and you; for reading my ramblings ;)