My Experience
They say that every rejection to a job position can be viewed as a “learning experience”. After 200+ rejections, I can definitely say that I’ve learned more than I’ve ever wanted to. After months of applying and grinding interview prep, I eventually landed a full-time Software Engineer position that I will start next year. I hope to share some of the things I’ve learned (as well as some resources I’ve used) to help any job-hunter reach their offer more easily than I did.
Ultimately, landing a job can be boiled to two simple (but often extremely difficult) steps.
1. Landing An Interview
This may seem obvious, but it cannot be understated how important having a solid resume is. Recruiters often only give your resume a 10 second skim through before they decide whether to toss it or move the candidate to the next round. While the content of your resume is key (education, work experience, etc.), people often neglect the importance of formatting and organization. I would look to keep the resume to a one-page length, use consistent formatting, and to avoid unnecessarily flashy graphics that can detract from the content. One advice that I often got was to highlight your individual contributions and use a lot of action verbs to demonstrate your ability to provide value to a company. If you are in a position where you don’t have much work experience, be sure to include some personal projects to show off your technical skills and passion for programming.
2. Passing the Interview
There are usually two major components to the interview – a behavioral portion, and the technical portion. For the behavioral section, I think it is important to remember that the interviewer is judging to see whether you’re a person that they would want to work with. Try to highlight experiences that demonstrate your ability to work in a team, and your eagerness to be continually learning new things.
The technical portion usually involves data structure / algorithm questions. I see a lot of people doing random questions on LeetCode and focusing a lot on doing an arbitrary X number of questions. However, I believe that it is much more effective to focus on making sure that you understand the problems you do, rather than grinding out as many as possible. While there exists more problems than you could ever do, most problems are focused around a core of problem solving patterns or strategies. For example, learning the “two-pointer” and “sliding window” strategies for arrays can be a strong basis to solve a large number of array problems, even if you have not seen a particular problem before.
Instead of choosing random problems to solve, I think it is more effective to study problems grouped by what data structure they use, or which problem-solving pattern they implement. Here are some resources that I have found to be helpful in my own studying:
https://leetcode.com/explore/learn/
https://seanprashad.com/leetcode-patterns/
Keep Going
Applying for jobs is never a fun process, and it is difficult to stay persistent after countless rejections. It really is a numbers game though. While everyone’s “number” might be different, try to remember that it only takes one to get your foot in the door. As long as you put in a steady effort to continually improve, then I know you will get there! Good luck hunting!