Facing the cold hard truth
I never chose software engineering. It chose me. Kidding, the real story is that I didn’t have good enough grades to go in the hard-to-get-in and prestigious health sciences, thought that business was for greedy sharks and didn’t know where to go from there. I decided to do what I always did, which is simply to follow my brother. Consequently, I was going to apply for the Electrical Engineering program at McGill, but my brother had the clutch instinct to intervene and tell me to lean more towards software because the field was booming (and still is). Not knowing what to do, I ended up accepting my offer at McGill University in Computer Engineer (middle between Electric and Software). One semester later, I officially switched to Software Engineer because I couldn’t see any job offers that specifically asked for “computer engineering”. Great decision in retrospect.
Year 2 was a pretty rough university year for me. Not only did I get my first heartbreak that year, but I was also taking my toughest classes. My GPA dropped by 0.3-0.4 that year and it wasn’t even because I wasn’t trying. In fact, my 2nd year was probably the year that I worked the hardest in my classes and I was still doing poorly… especially in my software engineering classes.
And that’s when began telling my false story. “I dislike coding”.
I never really disliked coding, I just didn’t understand shit. Especially in that second year. I just finished getting floored by COMP 250 (algorithms class) in my second semester and I was taking COMP 302 (functional programming – my worst grade in Uni), which destroyed me. Instead of facing the cold hard truth that something was hard for me and that I needed extra time to learn and understand more, I defaulted to 2 things.
One. I decided that I disliked coding. It wasn’t that I had to learn more or understand more, it was that I simply didn’t want to learn more. I mean, why would you want to be good at something you disliked right? That doesn’t make sense. Also, disliking it lowered my expectations. If I got an A in a programming class: “Wow, look at that, I must be naturally good at it”. If I got a bad grade in a programming class: “Well, that’s okay, I’m not interested in that subject anyway….”. You see how it became a never-lose situation for me? I hate losing…
Two. I prioritized results & memorization over understanding. School is savage. If you don’t learn at the pace you’re supposed to, your grades suffer greatly. I started out with a really high GPA and was very keen on keeping it that way. As a result of that, results became everything to me. Understanding was the 100th priority because “I didn’t want to understand anyway”. And no, I didn’t cheat lmao. But I’m very good at memorizing and applying formulas without even understanding what I’m doing so I used that to my advantage. I was able to get good grades because I knew when and how to apply the correct formulas. I also leveraged my network to get answers on my assignments. Additionally, I was an easy person to give answers to because I never asked questions. I didn’t need to understand. As long as you gave me your answer and you knew it was right. I was fine with it. I could simply take your answer and apply it to my numbers to get my answer. As I said, I’m good with formulas.
Note: very-related to this is the fact that I never applied to any of the tech giants: GAFAM (Google, Amazon, Facebook, Apple, Microsoft) because I knew I sucked and would probably get rejected in the interviews. Instead of facing the truth, I told everyone that “I’m not interested in working for the big companies”. Sure Nick, suuuuuuure 🙄
How I screwed myself post graduation
Surprisingly, my new default attitude actually worked pretty well ! At least, school-wise. I managed to graduate without failing any classes and I had a decent GPA. Do I actually remember anything from my university years? I do remember the fun times I had with my friends and the struggle of cramming stuff before exams, but theory related? Not really to be honest. I mean, I think most people don’t remember what they learned at school, but even more so for me because I didn’t bother to understand. Beyond school though, my default attitude royally screwed me over.
For those who might not know, software engineering interviews are usually comprised of two parts. The first one, we call behavioural because that’s where the companies try to see if you’re a “good fit” for the team. You’ll have your typical questions like “why do you want to work here?”, “what are your weaknesses?” “what are your strengths?” , etc. Those I am pretty good at. The second one, we call technical because that’s where companies test your skills. Your coding skills or your knowledge of the coding world. Do you think someone who went through school thinking that understanding was “useless” and only caring about results would be good here? If you think so, then you’re wrong. At least in my case; because I was horrible at them. Even when I was able to give them the right answer, the moment they asked me to explain my logic, I just didn’t know what to say. “Because that’s what I learned in school” or “Because the formula says so” would have been terrible answers lol.
I got screwed over because I couldn’t get pass those damn technical interviews !! I mean, it’s normal, those interviews are meant to test whether you know your shit or not and I clearly didn’t know (and still don’t know tbh) my shit !! For that reason, I had to spend extra time cramming interview answers into my head just so I can get job offers. It was rough and time consuming, but I eventually managed to get a few job offers and am currently working at my second company.
Note: my whole situation with the first company was a real shit-show so I won’t talk about it. The company itself wasn’t great, but I was also mentally not there during that time. We are both to blame. I did meet awesome people though so no ragrets there.
But wait, there’s more !
At this point, I got my second job, it pays well, it’s a good company. You’re probably thinking that it’s not that bad. My university default attitude only screwed me over for the “Finding a Job” part. I thought that too, but I was wrong and you’re also wrong if you thought that.
Here’s the thing, getting in was actually the easy part. I crammed interview questions and positioned myself as someone worth hiring, but did my actual knowledge grow? Did I actually learn something? Do I now understand what I’m doing? No, No and… No.
The hard part was staying. I had a big fat secret (I SUCK) and now, there were actual consequences if my secret got discovered: Bye bye job, bye bye salary, hello disappointment from my parents and friends. I felt like Eleanor in season 1 of The Good Place. or Mike in Suits if he wasn’t a god-sent lawyer. I was in an extremely good and privileged situation, which I, unfortunately, didn’t feel like I belonged in and getting kicked out would suck hard.
Of course, on the outside, everything was triple-C. Cool, Calm and Collected. I was acting out the part that I was exactly who they hired. This really good software engineer that knows his stuff. Except I didn’t know what I was supposed to know and what I wasn’t supposed to know. Consequently, I just acted like I knew everything (coding-wise, not product-wise or company-specific wise) and tried to learn on the job until my knowledge was up-to-par with who they thought they hired. But learning on the job is extremely hard when you can’t ask questions. I was afraid that if I asked a “too stupid question”, my team (and manager) would be like “what the fuck, shouldn’t he know this shit? He must be a fraud. FIRED” 😬 😩
This resulted in me doing my work slowly (because I had to learn first and then actually do the work), procrastinating at work (I often do this when I don’t understand something), me feeling extremely bad for my team because I sucked and putting pressure on myself because I didn’t want to let my team down.
The sum of all those things made me go back to my default attitude. The one I had perfected during my university years. It’s not that I was lacking in knowledge, it’s not that I couldn’t learn on the job, it has to be that I dislike coding. No, not just dislike, I actually hate coding.
I hate coding, thus I’m not good at it thus that’s why I always feel stupid at work thus I don’t want to understand it thus I need to get out of this world ASAP.
And that was my “I NEED TO CHANGE FIELDS ASAP” phase that I had from January 2020 to March 2020. Business Analyst, Marketing, Product Manager, Youtuber, whatever it was, as long as it wasn’t software engineering.
Note: My thought process here was that no matter what company I worked for, as long as it was software engineering, I would have to bullshit my way through the interviews so I’d feel like a fraud no matter what. Whereas going into a completely new field provided me with the “he’s new to this so it’s okay that he doesn’t know his shit” status.
My saving graces
Those were hard times for me. I wanted to change fields, but I didn’t have any other skill that I could leverage for a career change. I was trying to learn a new skill on the side, but I had the pressure of having to learn it ASAP so I didn’t really understand what I was learning (this would have simply continued my vicious circle, but in another field). Every day I was still at my job, I still had to work, I still had stuff to deliver and as time passed, my chances of getting discovered only increased.
Until saving grace number one happened. The Coronavirus lockdown.
Even before the whole world officially went in lockdown, my company had already instated a work-from-home only policy. Suddenly going from office life to work-from-home only life would undoubtedly create a period of adjustment for the whole company. Not only was the management team scramming to get all the wfh processes in place, but even some employees had to adjust to this new way of life. Especially those with families. My company knew that though so they expected a drop in productivity while everyone settled into this new way of life. And that was deliciously good for me. As I said, during those 3 months, I was procrastinating a lot more than I should at work. Don’t get me wrong, I was still working. Just not as optimally as I could (I know this because I’m doing like 3 times more work now than I was before lol). But for the outside world, it was simply a drop in productivity. “Is Nick procrastinating today or is he just struggling to adjust to this new way of life?” Who knows (it was probably a mix of both tbh). All I knew was that it was understandable to be less productive and that relieved me of some pressure.
Then saving grace number two happened. Deciding to code an app as a side project.
I wrote an extensive two part article on this subject. I’ll link part one here.
The important part of it is that I picked up Ruby & Ruby on Rails [RoR] as a total noob and it made me fall back in love with coding. That’s really when I realized that I didn’t hate coding. I actually loved it especially because it was almost a superpower. Being able to think of a product and make it come to life.
The other thing I realized is what I talk about in this article, which is that having an environment where I’m allowed to learn is key to me loving something. As in, if I’m put in an environment where I am given the permission to fail while learning, then I’ll find learning fun as hell and will be extremely motivated to continue learning and thus, get better at something. I was learning Ruby and RoR for fun, on the side. Even if I created the worst application in the history of histories, it wouldn’t matter. I could fail all I want and there would be no consequences. I personally find that learning and improving at anything is addictive as hell as long as the environment allows it.
This eventually led to saving grace number three. Telling a version of my secret to my manager.
After saving grace two, I knew that all I had to do was find an environment where I was allowed to be a noob, ask questions and learn. I was already applying at other jobs and I told myself that if I got fired, I’d try to find a software job where I present myself as a “beginner” that is very interesting in learning.
On a faithful Friday, I was scheduled for my bi-weekly meeting with my manager and I said “fuck it, let me tell him the truth.” And that’s what I did. Okay, I didn’t exactly say to him “yo, I suck at coding, you guys hired a fraud” (that would have been a lie anyway because I don’t suck suck at coding). I told him something more along the lines of “hey, I noticed that I’ve been struggling to work lately because I don’t always understand what I’m doing and it’s making me lose motivation to do my work properly.” And to my surprise, he actually answered very empathetically with something like “of course ! It’s normal, we hired you as a junior developer, it’s normal that you don’t know everything. You should ask questions until you understand and if people don’t like answering your questions, then you can tell me and I’ll talk to them.” And that response floooored me. In a really really good way. All the pressure, all the fraudness, all the secret that had to be kept went away. He basically gave me the permission I needed to thrive.
Those three saving graces totally changed my attitude. For the better if I may add. I’m currently enjoying working on a software side-project (to be announced soon), I can say that I like coding and am looking forward to expanding my knowledge and I am contributing to my full capacity at work (okay, almost, I still procrastinate from time to time, but I think that’s normal). I still have some reserves about asking too many questions (still don’t want to seem stupid), especially to the same person, but overall, I try to ask questions until I understand how to do my job properly (a cool trick here is to ask several people partial questions so that you don’t annoy 1 person hahaha). It also helps that I have a senior team member who asks as many or maybe even more questions than me (thanks Vlad LMAO).
I guess the main thing I have to remember is to ask myself “do I actually hate this thing or do I hate the fact that I don’t understand it? And if I don’t understand it, am I in an environment that allows me to learn and understand it?”
Alright, that was “Why I hated coding”.
Thanks for reading,
Note: This was written after I actually shifted from “hate coding” to “like/love coding” and in order to understand why I hated coding, I might have connected dots that weren’t meant to be connected. I simply wanted to make sense of such a drastic change in attitude. Maybe I really did dislike coding in University. Or maybe I’m right with my theory. But this is what I came up with after playing with my thoughts and it’s the story that makes me sleep well at night so it’s the story imma keep. All I’m saying is that if I contradict this story later on, don’t be surprised 🙂