Many of you may know that I have been working as a Freelance Software Engineer for past 4 years. The past 4 years have been a great experience, a rollercoster of learning and growth. Though I have been working as a freelancer on various projects, from small startups to large corporations, and have gained a wealth of knowledge and experience in the process, I felt that it was time for a change, and I wanted to take my career to the next level.
Why the change?
Working as a freelancer has its own perks, but it also comes with its own set of costs. I have been working on my own for a long time, and I felt that I needed to be part of a team again. The main goal was that I wanted to work with other talented individuals, learn from them, and to grow to become a better engineer. And of course more stable work environment, with a regular paycheck and benefits are bonus. Though I have been working remotely with an amazing company called Legion Collective for the past 5 years alongside freelancing, I recently realized that working with a team in a physical setting offers the the growth that I needed. Thus, after long consideration, I decided to start looking for a new job.
The Job Hunt
As many of you know, job hunting can be a daunting task, and it was a daunting task. To be honest, I did not look forward to it as there are so many factors to consider: coding interviews, technical and behavioral interviews, and so on. I was also concerned about the time and energy it would take to find a new job, as I need to polish up my long dead coding interview skills (data structure and algorithms) and also practice my technical and behavioral interviews. It was a lot, so I decided to come up with a strategy to make the process efficient and effective.
The Strategy
Data Structure and Algorithms
We all know that data structure and algorithms are the bread and butter of coding interview. I have been out of touch with them for a while, so when I decided to brush up my skills, it was not easy (as expected). There were two things that I needed to do: first, was to brush up the fundamental knowledge of data structure and algorithms and second, was to practice solving the problem. For the first part, I used Neetcode to brush up my knowledge. I have to say I think Neetcode is the best resource for learning data structure and algorithms. (I am not sponsored by them, just to let you know). The reason behind this opinion is that quality of the Neetcode's explanation and the delivery of the information is top notch. Never before I had such an experience where I had clear and focused understanding of data structure and algorithms from an online course and the author does a terrific job in this. The pricing can be considered expensive, but I have to say, it was worth all the penny. If I were to recommend just one resource for learning data structure and algorithms, no doubt, I would recommend Neetcode.
After brushing up my knowledge, I had to practice solving coding problems, and with that, I used LeetCode. The strategy here was that I solve 1 to 2 problems every single day. No more, no less. Just 1 or 2 problems. And the problems needed to be at least a medium level problem. I knew that job hunting is a long process and I needed a smart strategy to sustain the process. Though I frequently felt an urgency that I needed to solve as many problem as possible, I decided to not to take that bait. At the end of the day, that strategy indeed worked out well. After doing this for about 2 months, I felt pretty confident in coding interviews.
Technical and Behavioral Interviews
For technical and behavioral interviews, I actually used YouTube and online blog posts of all the lists of fundamental knowledge that I needed to know. To be honest, I daresay YouTube have enough content that is sufficient for getting all the basic knowledge and fundamentals needed for computer science. My strategy was to just read a lot of technical blog posts and watch quality content on YouTube, doing my best to gain a good understanding of the the fundamental knowledge of computer science. I must say it did help me a lot, and fill up any hole that I had in my knowledge.
The numbers
As doing all the preparations for the job hunt, I started applying for the job starting on the 1st of October 2024. To share you some numbers, and applied about 142 jobs in total. I actually surprise to recieved a quite handful of interview requests and a coding assignments. Around 20 companies reached out for me for interview or coding assignments. I guess the work experience and portfolio for my past 4 years of freelancing seemed to pay off. Among the 20 companies, I manage to proceed to the next steps with 9 companies, and among them I had a about 4 onsite interviews.
The onsite interviews
The onsite interview process of the actually happened to be the best part of the entire job hunting process. Instead of thinking as an interview, I considered the interview to be more like a coffee chat just to discuss about technology, disucssing how to improve them and so on, just like I would do it in a working environment. Each of them was about at least 1 to 2 hours long, and did some onsite coding challenges as well. Also I did not realize this, but solving the coding questions happened to be quite an enjoyable experience, as the questions itself were very interesting. In a nutshell, the onsite interviews were quite fun and I really enjoyed the process (though I don't miss it).
The onsite interview with Plang
On January 6th, I submitted an application to a company called Plang. Trying to know more about the company, I realized there wasn't a much information about the company, but just a simple website introducing they are the tech startup trying to help people learn English with AI. I initially applied the company with no expectation since I had no knowledge about the company. But bext day, I received an offer for an onsite interview. It was strange because many of the companies that I applied to initially offered me a coding assignment, but this company offered me an onsite interview right away. I was surprised at first, but I decided to take the offer and went to the onsite interview.
The onsite interview was actually quite fun and I really enjoyed the process. One thing that was unique about this onsite interview was that I was asked a lot of Backend related questions, though I applied as a Frontend position (during the interview, I actually thought they are asking me Backend question, because either: 1. My Frontend knowledge is amazing, they want to pick my brain about backend, or 2. They are just wasting time because I've already failed to meet their expectations). With my knowledge and experience from freelancing, I did my best to answer all the questions they had for me as much as I can. But the questions itself were intriguing, and I received questions about how to design a system that can solve a specific problem. I've heard about system design interviews, but actually to receieve one, it happens to be quite fun and enjoyable. I was also asked a lot about general and fundamental knowledge of computer science, and was fun to answer those as well.
The offer
After one week from the Plang's onsite interview, I received an offer to join Plang, and of course, I accepted the offer. I've started working at Plang starting from February 10th as a Software Engineer, developing mobile application using React Native. I must say that the React Native domain and mobile application development is actually very interesting and fun and I am enjoying every part of it. The company Plang is also happens to be a phenomenal company, where all the members of the team are full of energy and passionate for success. I actually think Plang is an amazing company with full potential to be something great, that can have a great impact to the world. Of course, only time will tell but it is a bless to be part of the such a great team and I am learning a lot every single day and I am looking forward to the next chapter of my career at Plang, excited to see what the future holds for me.