Maximizing Your Chances: Quick Tips for Landing Your Dream Software Job
Before we get started, please note that there is no “cookie cutter” method that will guarantee you success. These are just tips that can help you expand your network and potentially land a job in the software industry and does not necessarily mean that if you follow all of these tips, you will 100% land your dream job. Happy coding! :)
Nobody needs to grind 1000 LeetCode problems to get into a software job.
Here are some quick tips to maximize your chances:
Maximize your chances of being shortlisted
Being shortlisted means that you weren’t even considered for an interview. This means to buff up your resume and linkedin, then start reaching out to people on linkedIn. For example, look at your school’s alumni, filter by a company you’d like to work for, and now you have a list of alumni can potentially reach out to for a referral. (There can be a whole linkedin tutorial on how to maximally use linkedin, but we can probably save that for another article).
Also make sure to prepare for school career fairs and industry events. These are essential to begin networking. You can buff up your resume by doing side projects and including leadership positions. A pro tip is to do projects on topics that actually interest you. No one likes a project that you can just Google or follow on Youtube. Instead, do something that expresses you! If you like basketball, for example, a score tracking app for games would be an amazing side project, and it’s something you can passionately talk about in interviews.
Find out the interview format
Common interview formats include multiple rounds, a take home coding problem, one round, only behavioral, etc. You can usually search a CS reddit or any other resource to see what other people have gotten on interviews. This gives you an idea of what to expect. Here is the main one for interview and company info: r/csMajors,
Pick a programming language for interviews
Focus on one programming language for your interview. This does not necessarily need to be the one you use the most. I recommend NOT to use difficult languages like C++, even if you are very good at it. For interviewing, they don’t care if you know a “harder” language. Pick an easy to use language like Python or Java, and stick to it as you prepare. For example, I use C++ as my main programming language, but I only use Python in interviews. In my experience, using Python for interviews makes your life much easier.
Sharpen your Computer Science fundamentals for interviews
You can check out Cracking the Coding Interview, it won’t be linked here, but you can probably find an online pdf of the book. Know your Data Structures inside out, what you can or can’t use with them, etc.
Practice for the coding interview
This is where you can use Leetcode as a great source to practice problems. However, DO NOT just grind problems and look at the answer. I recommend you the following steps:
Try writing out the question on a blank paper or iPad
Critically think about the problem, and try your absolute best to explain it out. If you don’t know it, come back to it later. DO NOT LOOK at the answer.
Try drawing diagrams/graphs that can help you visualize the problem. I find it much easier to finish a coding problem if I can see what I am trying to solve.
If you come back and cannot do it, then check out the answer. Make sure you can concisely explain your solution, cover your corner cases, and also offer alternative solutions if applicable.
Repeat this process for other questions.
Pro tip: Don’t be discouraged if you can’t do Leetcode medium or hard questions. Everyone starts somewhere. Start off with Leetcode easy’s until you can comfortably complete them. This gives you the ground work to complete Leetcode mediums, as harder Leetcode questions are just comprised of a combination of techniques needed to solve Leetcode easys.
Prepare for the system design interview (for mid/senior levels)
For this, I recommend reading Grokking the System Design Interview, some common questions include:
Design a URL shortener (e.g. Bitly)
Design a social media website (e.g. Twitter)
Design a video watching website (e.g. YouTube)
Design a chatting service (e.g. Telegram, Slack, Discord)
Design a file sharing service (e.g. Google Drive, Dropbox)
Design a ride sharing service (e.g. Uber, Lyft)
Design a photo sharing service (e.g. Flickr, Pinterest)
Design an e-commerce website (e.g. Amazon, eBay)
Design a jobs portal (e.g. LinkedIn, Indeed)
Design a web crawler (e.g. Google)
Prepare for the behavioral interview
Practice, practice, practice with friends. Make sure you are sociable and do not give boring, generic answers. Try to be YOU by including your hobbies and unique traits. The behavioral part is JUST as important if not more than the technical part. Most of the time, interviewers decide if they want to hire you based on the behavioral part. They would want to work with someone cooperative and friendly. Usually, if they like you based on behavioral, they will try to help you out more on the coding portion.
Negotiating the offer package
Finally, the last thing you absolutely need to prepare for before your interview is salary negotiation for software engineers. At any point during the interview process, conversation about salary may crop up. Note that some roles do not allow for negotiation (namely many intern roles and return offers)
First, know the general market. Check a website like https://www.levels.fyi/ to check the compensation of your position at your company. This way, you know how much room is available for negotiation.
When speaking with the recruiter, make sure all negotiations are written down. This mean after a meeting, send a recap email detailing the terms of your negotiation.
If negotiations don’t go your way, always leave the door open.
Lastly, give the company you’re trying to negotiate with a clear path on how to “win” you over. Don't bullshit them or play stupid games. Be clear and unequivocal with your preferences and timeline.
If you do not like the offer or package they are compensating you with, do not mess with the company or waste time. Immediately and politely turn down the offer.
NOTE: Interviewing also has luck involved. Don’t sweat it if you get a horror-story interviewer. Everyone in this industry likely does. Pick yourself back up and get back at it! If your interviewer is really bad, such as blatantly doing something while interviewing you (walking dog, etc.) you can try reaching out to HR or your recruiter about the experience and they may give you a second chance. If you get rejected, you can always reach out to HR anyway to stay in touch and hopefully they can recommend you to another job or let you try again, though the chances are not high, there is a chase nonetheless.
Coding Tips (credit to the Grind 75 interview prep guide):
Breadth-first preparation - Revise every topic and then start practicing a variety of questions across all topics. This strategy is recommended if you have around a month to spare.
Depth-first preparation - Tackle one topic at a time - revise materials for a topic, practice lots of questions for that topic. After ensuring mastery of a topic, move on to the next topic. Repeat for all or selected topics. If you don't have much time, this might be the best way to prepare. You can focus on the High priority topics in our recommended study plan.
Depth-first-then-breadth preparation - Tackle one topic at a time - revise materials for a topic, practice a few questions for that topic. After ensuring mastery, move on to the next topic. Repeat for all topics. At the end, practice a variety of questions across all topics. This strategy takes more time than others, so it's recommended if you have more than a month.
Here is a list of concepts to start preparing: https://leetcode.com/discuss/interview-question/2069641/the-only-lists-you-need-for-your-interview-preparation?fbclid=IwAR2Bz8r10fmUX7a0d-0FsYGq4dt5H_Q5qigWJwuKelpdVn-DhM1d2X81FyU