paint-brush
Ultimate Guide to Software Development Job Interview Prep by@devgrowth
593 reads
593 reads

Ultimate Guide to Software Development Job Interview Prep

by devgrowth.techFebruary 10th, 2023
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

This job hunting guide covers resumes, job application process, coding interview prep, system design interview prep, mock interview practices, behavioral interview prep, computer science fundamentals, and negotiation tips.

People Mentioned

Mention Thumbnail
featured image - Ultimate Guide to Software Development Job Interview Prep
devgrowth.tech HackerNoon profile picture


This job hunting guide covers resumes, job application process, coding interview prep, system design interview prep, mock interview practices, behavioral interview prep, computer science fundamentals, and negotiation tips.


📝 Resume Tips

Step 1: Write down your career stories in a resume

You should have a brag list of your own, basically collecting your achievements in day to day work, the challenges you’ve faced and how you solved it, it does not take much time to keep a record of these achievements, but they are super helpful when you need to revamp your resume, or write promo docs.

Step 2: Vet your resume

Once you finish writing your resume, it is essential to have someone else to vet your resume, you can ask your friends to help with proofreading, run it through Grammarly to correct grammar errors, or if your resume has never been vetted before you can find dedicated service on Fiverr to review and edit your resume.

Step 3: Take it further to build your personal brand online

If you have projects you are proud of and can demonstrate your skill sets you can showcase it with one page websites. You can use Carrd to create simple, free, fully responsive one-page sites for your projects/products.


If you want to take it further to establish a personal brand online as a developer, you should get a domain via registrars such as Namecheap, they usually have very affordable domains.




🎯 Apply For Jobs and Manage Your Applications

Where to apply for jobs

There are some popular job postings aggregator sites:

  • LinkedIn: I would say LinkedIn has most of the job postings for tech, and they often give you one month free premium trial, you can use that to see more analytics about an opportunity
  • Indeed and Glassdoor: Still being used by many companies
  • AngelList: more towards startup jobs
  • Hired: more towards startup jobs


Don’t forget referrals

The job posting aggregator sites are great, but if you can get someone to refer you to a position, it usually has a better response rate. Trying to reach out to your network for potential referrals is always a good thing to do.

How to manage multiple applications

If you are applying for multiple positions, you probably want to manage all these job applications with a tool or system to track progress and keep notes:

  • Huntr: a great tool to manage your job search, the free tier should be sufficient for individual usage
  • Notion: a powerful tool to write and collaborate, for example, you can use it to summarize knowledge for coding interview, write down behavior stories and ask your friends to provide feedback. You can also find beautiful notion templates to get started faster.
  • Todoist: What’s powerful about Todoist as todo app is its natural language todo creation and advanced filter views to track todo tasks



👩‍💻 Prepare For Coding Interview

If you are new to data structure and algorithm or you want to brush up on it:

There are many other classic books or courses on data structure and algorithms, but to ace coding interviews, we should focus on practicing to solve common coding interview questions, there is no shortcut, practice makes perfect. Having said that, as of right now there are already more than 2500 practice problems on Leetcode, we also need to be smart about preparing for coding interviews.


A common and effective strategy I’ve seen many people used and worked(including myself) is:

Step 1: Learn the fundamentals

After learning about the fundamentals of a data structure or an algorithm, try to solve some corresponding classic problems.


Step 2: Recognize patterns

Once you are familiar with these topics, now it’s time to see if you are able to recognize which data structure or algorithm to use when you encounter a new problem


Step 3: Mock Interviews

Once you are confident you can solve most new problems, the next step is to practice mock interviews

Note that Leetcode has a Mock Assessment feature, you can try this feature to see if you can solve a problem within limited time, it mimics the online assessment in interview pipelines

A more challenging yet common way to evaluate candidates is to have an interviewer work with you to solve a problem, it usually requires the candidates to be able to clarify requirements, communicate his or her thought process and solve the problem within a limited time. Other words, you also need to practice this scenario.

  • Pramp is a free platform where you can pair with random peers to mock this type of interview

  • interviewing.io also provides mock interview with FAANG engineers, although it’s pricey, personally I think if you practice enough on Pramp and Leetcode it should be sufficient, but up to you if you want to invest a bit more in getting a FAANG engineer to mock coding interview with you


Other useful resources



🧑‍🎨 Prepare For System Design Interview

If you are targeting senior and above level, system design is probably where you would want to spend more time on, since this is usually where the employer see if you are qualified for the level you are applying for, if your day-to-day work doesn't include a lot of hands-on system design, you may want to plan time ahead to prepare this type of interview, even if you have the work experience, designing in an interview setting is different than designing in day-to-day work, so you have to prepare for it.

Step 1: Learn Basics


  • InfoQ: It has many great recordings from those who worked on large scale systems
  • System @Scale: It has recordings from tech conferences maintained by engineering community at Meta
  • interviewing.io: It will share some mock interview recordings where you can observe and hear the feedback from the mock interviewer.
  • System Design Interview: It goes over some common system design problem in depth.
  • SDE Skills: This community also has regular mock interview sessions
  • Exponent: It is the owner of the Pramp mock interview platform, sometime they share mock interview recordings
  • Hussein Nasser: He shared videos on common backend system problems, it is not geared toward interviews, but is helpful in terms of learning backend in general

Courses

Step 2: Mock Interview

I can’t stress enough about the importance of mock interviews, you learn from the feedback, adjust or learn, then rinse and repeat, it applies to system design interviews as well.

You can also set up random peer mock system design interviews on Pramp. However for system design interviews, the feedback is often valuable when your peer is already an experienced engineer, this is not always guaranteed since the platform pairs peers randomly.

I would say try to find people who are more experienced in your network see if they can help with mock interview, but if you think this is your bottleneck, perhaps check interviewing.io to find some experienced engineers to mock and provide detailed feedback with you could be a good investment(they also release some video recording on YouTube)


Other Resources



🙇Prepare For Behavior Rounds

To nail the behavior round, it highly depends on what role or level you are interviewing at, but a few things that are generally helpful is to 1)keep note of your achievements and challenges you solved at work 2)use format such as STAR to tell your story.

There are some resources showing you common mistakes you want to avoid and tips during behavior interview:

Courses

Youtube Channels


Other Resources

  • Cracking the soft skills
  • The Reverse Interview (usually towards the end of the interview you will have a few minutes to ask questions, it is also a great opportunity to learn about your potential employers, remember the interview is a two way street)



💻 Computer Science Fundamentals

Depending on the company and position you are interviewing for, you may need to refresh on computer science. With the time constraints of getting ready for an interview, I recommend finding the knowledge gap you need to close and close it, instead of going through the material sequentially(but if you have the time to go through the books or courses, it’s always good to learn).

Open source courses

Books



🤝Negotiate Offers

To negotiate offers you need to know the market, you may also get this question at the beginning of the interview pipeline as well, whether you want to disclose is up for you, but it’s always good to know the market trend, here are some resources to help:**
**

  • Candidate Planet : Youtube channel talks about negotiation
  • levels.fyi: It has the most comprehensive data points for tech jobs
  • meterwork: mostly 🇨🇦 tech job data points
  • payscale: not just for tech jobs
  • glassdoor: not just for tech jobs, not too many data points there but you can check the review and ratings
  • Teamblind: it has ratings and reviews for a company, and some time you can see people sharing compensation anonymously



I’ve compiled and curated a list of job hunting resources for software developers, it covers resources for writing resumes, applying and managing job applications, efficient ways to prepare for coding interviews, resources to learn system design, you can download the full free PDF here.


Note: This article is based on my personal experience. If you have more suggestions please leave them in the comments below.. I’m always open to meet new people so feel free to contact me on Twitter.


Also published here.


Thanks for reading!

If you enjoyed this story, show your support by sharing with your friends!


Additional references


Image credit, HackerNoon AI prompt of “a robot prepares to make software inside a computer.”