My tips for landing a software engineering job
Read all this list before you start applying, especially Patrick McKenzie’s article (linked in the salary negotiation section).
Get your resume in shape
Show don’t tell. Focus on the objective data. Cut the weasel words. Exercise attention to detail.
Let’s look at a few examples from real resumes and how we can improve them:
- “Developed advanced image recognition algorithms using opencv-python.”
- Why not tell the reader what algorithm have you used?
- You may also add more details such as: the metric used for evaluation, the final performance on validation or testing, etc.
- “Developed alongside a team of python developers an AI powered assistant bot that can recognize speech patterns and respond or help out with tasks accordingly.”
- I would add how big the team was and would use “engineers” instead of “python developers”. Ex: Designed, alongside a team of 3 engineers,…
- I would be more specific about what I mean by AI. Ex: a logistic regression powered bot…
- I would be more specific about what the bot did. Ex: to execute PC command using voice input…
- I would highlight the results, if they exist. Ex: allowing engineers to save 20% of time when setting up new repositories.
- The final sentence would then be “Designed, alongside a team of 3 engineers, a logistic regression powered bot to execute PC command using voice input allowing engineers to save 20% of time when setting up new repositories.”
For more concrete examples, have a look at Gayle McDowell’s (author of Cracking the Coding Interview book) resume advice and this article by Lewis Lin describing the writing culture at Amazon.
Land an interview
Don’t apply directly, get referred instead. Genuinely reach out to people on LinkedIn. Attend conferences or meetups or host ones if you don’t find meetups locally.
- Usually, applying directly to job openings online should be your last resort and not your first. Instead, you want to get referred by friends, former colleagues or same-university alumni who work at the company/startup you want to work or who know someone who does.
- If finding friends or friends of friends to refer you is not possible, you can ask current employees on LinkedIn for their time. Ask them genuine questions (that you hopefully have) about the company, its culture, etc. They may tell you about other positions/tracks inside the company that you didn’t know might be a better fit, they may even suggest to refer you.
- Attend conferences or meetups to expand your network (i.e. get to know other people who share your interests).
- If you can’t find local meetups about topics you care about, you can create your own meetup.
Prepare for interview
Pro Tip: watch mockup interviews on Youtube (I personally like this channel), but also try to do mockup interviews with others (either friends or other software engineers whom you might pay for their time).
- For the time being, you can expect the interview process, especially from junior to senior levels, to involve a lot of LeetCode-style questions. So make sure to practice these types of questions on your preferred platform (not necessarily LeetCode though).
- Additionally, you can expect design interviews. Depending on the position you are applying to, these might be machine learning design or system design or other types
- There is also the “behavioral” aspect of the interview process. There could be a dedicated interview to assess cultural-fit, talk about previous work situations and how you dealt with them and what did you learn.
- Finally, it is important to know that implicitly, all your interviewers are assessing your communication skills, ability to deal with ambiguity, etc.
Salary negotiation
I am not an expert :), but I highly recommend going through the following 2 articles:
Other resources
If you are Arabic speaking, I have created 2 short courses to get you started in Data Science as well a short course with career tips (the course I wish existed when I graduated university), which are free to access.