Journey to Becoming a Software Engineer: Navigating Challenges and Staying Consistent
Tags: beginners, webdev, programming, productivity
Published: 2023-08-21 14:37:25

Embarking on a career as a software engineer can be a daunting journey, especially when faced with challenges such as imposter syndrome and limited experience. In this article, I will be sharing my own pursuit of landing a job as a software engineer - highlighting the strategies, experiences, and lessons learned along the way.

My journey began as a student in the Philippines. I found myself at a pivotal moment, transitioning from a math major to the wonderful world of computer science. Determined to make my mark in the highly competitive field of software engineering in the United States, I understood that exerting extra effort was imperative. Despite harboring imposter syndrome and comparing myself to peers, I recognized the importance of self-awareness and channeled it into working a bit harder than anyone else.

### Projects

While good grades can play a role in securing a first job, other factors like experience and projects are equally important. During my school breaks, I seized the opportunity to engage in diverse projects - encompassing various programming languages and stacks, including Django, MERN, and Java, among others. In these moments, YouTube became my ultimate best friend making it a great source of knowledge - one that can be an invaluable resource for you as well.

I made a conscious effort to develop my own projects tailored to my personal interests. Being an avid user of Twitter and an enthusiast of food and restaurants, I crafted a Twitter clone application focused specifically on showcasing diverse restaurants, employing the powerful Django framework. Additionally, my love for cinema propelled me to create a theater booking application utilizing the MERN stack (a stack that is very useful as of the time I'm writing this article). Further expanding my horizons, I used my love for books and literature by collaborating with my groupmates to develop a book rental/store application using Java and Android Studio. It is best to discover something that sparks your interest and find innovative ways to intertwine it with your passions. With this, you are able to keep a motivational spark that will enable you to create projects that are not only technically compelling but also personally fulfilling.

### Leetcode

When it comes to gaining knowledge in logic and algorithms, one resource that played a significant role for me was LeetCode, particularly with the assistance of Neetcode's website (https://neetcode.io/practice). It allows me to keep track of the problems that I have already solved, and ones that I have yet to encounter. Right after graduating, I made it a habit to tackle at least two LeetCode problems each day, gradually increasing the count whenever time permitted. I allocated around 30 to 45 minutes to solve each problem on my own. If I found myself feeling stuck and losing hope, I turned to YouTube for solutions. Again, Youtube is your best friend!

Once I finished a problem, I refrained from immediately checking the provided solution. I also don't mark the problem as done. Instead, I would set it aside for two to three days and then revisit it, aiming to solve the problem once again. Only when I successfully solved the problem on my own, without relying on external help, would I consider it truly accomplished and mark it done on the website.

I also found it beneficial to focus on one data structure at a time as it allowed me to become familiar with the patterns and challenges associated with each specific data structure. Initially, I started solving these problems with the use of Python, however, I highly recommend trying to solve LeetCode problems using Java. This is due to the fact that Java is a strongly typed language allowing you to show that you have a good understanding on the concept of variable types and data structures being used.

### Mock Interviews

Another crucial aspect to consider is engaging in mock interviews. I personally struggled with shyness and initially avoided them altogether. However, if you can muster the courage, I highly recommend participating in mock interviews. If you, like me, feel hesitant, turn to our trusty ally, YouTube, and watch as many mock interviews as possible. Pay close attention to how interviewees handle technical questions and articulate their thought processes. Remember that behavioral questions are just as vital as the technical aspects, and they often recur. Familiarize yourself with these types of questions and strive to provide authentic answers that reflect your true personality.

### Apply, apply, apply

Lastly, don't underestimate the power of applying for job positions. Leverage LinkedIn to its fullest extent. As a personal challenge, I aimed to apply to at least ten different positions each day. While it is important to carefully read the job descriptions, don't hesitate to take a leap of faith and apply even if you don't perfectly fit the requirements. Surprisingly, I landed my current job when I unknowingly applied for a position that demanded seven years of experience. As it turned out, they were actually seeking a junior software engineer, and here I am! Remember, the path to success often entails facing more rejections than acceptances. Stay consistent in your efforts. I personally submitted nearly 200 applications, underwent 2 interviews, and ultimately received 1 offer.

The central message of this article is to emphasize the significance of consistency. Even now, as I have secured a job, I continue to tackle LeetCode problems, embark on new projects, and stay updated with emerging technologies. Consistency is the bedrock of becoming a skilled software engineer. Always nurture your curiosity, persist in your endeavors, and trust that you will eventually arrive at your destined destination.