Not good enough. What then?
All my life, I feel like I am dedicating it to prove myself, to make myself recognized. Something that I didn't quite get during my childhood and teenage years, I suppose, which I tried to actualize in another thing.
School years, I tried to get good grades. Gaming years, I tried to be better as a player. College years were frustrating because I couldn't keep up with the expected pace, hence I couldn't do well. This, not to mention, was also because of my poor time management skill. Finding an internship even was hard for me because I lacked the skills to be considered as an engineer. Those times were... frustrating.
Earlier this year, I began searching for a front-end engineer opportunity. Oh, how I did not expect it would be painful to not get through the screening phase. Oh, how I did not expect that not passing the test stage would feel even worse! It brought me back to my internship-searching years... the desperation to get... something, anything.
So... after I got rejected... what then? In the sections below, I will share my learnings from not getting through each recruitment phase.
I think I can call myself "spoiled", in a way. I was too chill thinking that I would work in my previous company for a longer time, but hey, things happened and I decided to leave things behind. I was not prepared to "compete", so to say.
When I first sent my applications, my CV was kinda "garbage", which is perhaps... fitting. I don't know why I had the infinite wisdom to write, "Good in front-end stuff and probably okay in everything else". I should have smacked and told myself that my CV should be able to make me more marketable, instead of undermining it!
For the first few weeks, I aimed for the high. Needless to say, I was rejected for every one of them. Still, I continued the CV rework. I tweaked the parts that weren't "selling" and replaced them with those more "appealing".
Learning 1: make your CV shiny, don't undermine your value!
After 4-5 of iterations, I finally "locked" my CV and spread it to other international companies that allow remote working. You might be asking, "Why international companies?". As I said before, I want to prove myself. If I can compete against other international candidates and come out on top, it will be some sort of personal achievement to me. It doesn't mean that local companies don't challenge me, but this feeling of being "foreign national" and being able to do well there, is the thing that I chase.
Well, guess what, in total, from 19 applications (to international remote companies only), 8 were unanswered, 6 were looking for a more senior role, 1 was not convinced (because I didn't fill the application form that well), and 1 didn't fit with me geographically.
That leaves us with 2. Let's get into it.
Well, here we are. When people are at this phase, you know it, we know it, everyone knows it. It's coding challenge time! But again! I usually was on the other side, so I didn't experience much of how it feels to be on the interviewee side.
Learning 2: perhaps doing interviews for fun can be a good idea to keep yourself up-to-date with the current trend.
So, I am going to tell you a story of a misguided me, who thought that, from his past experiences interviewing people, the interviewee should always think out loud when doing coding challenges. Spoiler alert: it is not.
You are probably going to ask, "But, why? Isn't it a good way so that the interviewer can learn about your flow of thoughts?" That is true. However, in the process, I forgot the one thing that makes me a software engineer in the first place: software engineers craft code from "human-friendly steps"! That was the part I forgot and it cost me dearly. Imagine me blabbering from the start of the coding challenge until the end, mindlessly. As such, I didn't have a clear direction because I was too busy speaking my mind.
It pains me to recall these moments. After doing 2 interviews like that, I took a step back and thought about what did I do wrong that caused my mind to be so... paralyzed. I couldn't think the way I usually did. Then, I tried to re-do one of the tests from scratch. I was a bit on autopilot phase at that time... so I didn't expect I found the answer right away.
It turned out me autopiloting was a blessing. I realized that instead of starting with the code right away, I wrote comments on the steps that I needed to do. What are the possible scenarios, actions, and exit conditions? From there, it was mostly straightforward to convert the "human-friendly steps" to code.
Learning 3: ask for 1-2 minutes to "do your thing", such as writing comments or sketching. This is crucial before you code so that you have some sense of "foundation".
I am actually baffled. I had a lot of experience sketching before coding, but during the coding challenge, it just escaped my mind. Accepting rejection isn't easy, I was sick to my stomach when learning about the rejection. It made me ask a lot of "what-if"s. I was frustrated with myself because I couldn't prove that I was worth my salt. It was pretty tough, but it was a great lesson nonetheless. Hopefully, I can bear this in mind in the future when I am set for another round.
Well, I guess that's all from me. I am now even thinking to practice LeetCode stuff so I can familiarize myself with these kinds of challenges. Still, I am not an expert in computer science so my brain is not ready for "popular challenges" like Binary Search. Hopefully, I never have to do that kind of problem!
Thank you for reading this far and I hope this post is useful for you. Stay safe!