[Sort of] Prepare for a software engineering interview

Interview tips from an ex-non-FAANG engineer

In this article, we look at the preparation that goes on on both sides of a software engineer interview.

The contents of this post ended up being a bit more serious than I had originally intended.

My bad 🤷.

Candidate preparations

It does not matter if you are trying to break into tech or if you are a seasoned veteran hungry for new work politics and novel, revenue-generating tech debt - preparing for a technical interview can be a lot of work. Depending on your life situation and career aspirations, you could credibly be preparing for months in advance!

Tip

Remember that discipline is key.

You can do it!

Introspection

The first step in your preparations should be introspection. Figure out what you’re looking for in your next job. Are you looking for a higher salary? Bigger company? Smaller company? Remote? More mentorship? More autonomy? No matter what it is, figure it out first since it will guide the rest of your process.

Pipeline building

The software engineering interview process can be broken down to the following milestones.

  1. Resume writing: Try to put yourself in a recruiter’s / hiring manager / business owner’s shoes. What are your most marketable qualities? List those first and don’t forget to weave in your story.
    • You should be able to get this done in a couple days.
    • Keep it simple. No one actually wants to hear your life story. They just want to know if they should hire you.
  2. Application: The main goal here is to get as many callbacks from places that you would credibly work at. You’re building your “top of funnel” here.
    • This could take a really long time depending on what you’re looking for and where you are at in your career. Budget at least a 2-3 weeks for actually getting callbacks. Realistically, you might be looking at several months (especially if you’re earlier in your career).
    • More senior folks will have an easier time getting callbacks.
    • Time between application to callback is generally a function of company size. Not always true, but typically bigger company = slower pipeline.
    • Referrals can increase your callback rate, but they’re not a sure thing.
  3. Recruiter screen: Whether or not there are recruiter screens varies from company to company. If they do happen, the actual screen varies from a pulse check (i.e. are you a real candidate) to mini behavioral screens. The main thing for you at this stage is to try to identify glaring red flags (e.g. is it a scam?) and then get to the next stage. You’ll want to have your story about why you’re looking for a job more dialed in at this point.
    • The main thing here is scheduling. This is doable in an hour or so (prep, then call).
  4. Technical screen: If all goes well to this point, you’ll finally be offered a chance to show your skill. The first technical screen can range from a live coding interview to an automated online assessment to a take home project. You’ll want to make sure that you’re sharp enough to pass this round. These screens are usually easier versions of the full onsite.
    • Similar to the recruiter screen, the main thing is scheduling. You can get this done in an hour or so. If it’s a take home, these can take up to 4 hours or so. Any company that wants even more than 4 hours is either a scam or a waste of time for you at this point.
  5. Onsite: For most companies, this portion is usually about 3-6 separate 1h interviews on various topics. The other preparation topics below are aimed at helping you pass the onsite interviews.
    • Expect this to take a full day (or more if you break it up over multiple days).
    • In the virtual era, it’s more likely that companies will allow you to schedule over multiple days. Take advantage of this if you can! You want to be as sharp as possible.
  6. Offer: If you make it to this stage, congratulations! The goal at this point is to find the best match. Try to envision yourself actually working at the company and go from there. On the negotiations front, it’s really hard to go wrong following Haseeb Qureshi’s two posts on the topic.
    • At this point, companies will want you to sign ASAP. If you are looking at multiple offers, you will need to fight for the time to consider. In that case, budgeting for a week or two is reasonable.
Tip

Your goal for the pipeline building process is to explore your personal job market so you can find a great fit for yourself.

One way to do this is by trying to land many offers at approximately the same time.

Time spent

If we assume absolutely everything goes smoothly for a single company, we can expect at least a month of calendar time to pass from first contact to signing an offer.

In reality, we should account for potentially having multiple companies at different stages at once. Keeping all the companies at the same stage will draw out the timeline. It’s not the perfect heuristic, but for every company you add that you take all the way to the end, you should add a week. Budget your time and money accordingly.

Coding

Coding interview preparations can be broken down into 3 parts.

  1. Theory: There are a ton of resources out there that I won’t rehash here. You’ll want to make sure you have all your basic data structures and algorithms theory fresh.
    • This could take no time (since you already know the stuff) or a ton of time (if you’re starting from scratch). Post-secondary education usually presents these topics in at least a couple classes - algorithms and data structures.
  2. Practice: This is where the bulk of your time will be spent. Try to do all of these problems without looking first, but don’t spend much more than about 15 minutes struggling on each problem. You’re looking for breadth here.
    • Think about how much time you want to spend, then do the problems on LeetCode from Grind 75.
  3. Mocks: These are useful to get a sense for the cadence in a live setting. Consider doing one of these if you never have before, but no more than 2-3. Spend your time doing self practice.
    • At most, 2 or 3 mock interviews.
Time spent

If you are already in “interview shape” or if you know that all the companies in your pipeline are going to only ask practical coding questions, you could skip this part entirely!

On the other hand, if you intend to study, there’s not really an upper bound to how much time you can spend here. A good milestone is probably knocking off the first 75 representative problems. A month or so might be a good average time spent if you’re looking to get all of those done.

System design

The system design interview preparation is very similar to coding interview preparations. The difference is that this style is more open-ended and usually more difficult to administer. It relies on the skill of both the interviewer and the candidate to produce a good outcome. As a result, the variance on the results is often higher.

Tip

In general, you’ll get a high level problem like “design X” where “X” is a product.

The crux of the interview is to lay out and communicate your plans. You’ll be judged on how well engineered your sketch happens to be.

  1. Tools: This mirrors the “theory” part of the coding interview. You’ll need to understand the different tools that are used in a distributed system like databases and caches so you can apply them to your problem.
    • The lower bound here is close to zero - if you already have a load of actual experience designing systems or if you know your interview loop won’t really ask it, you’re good. The upper bound on this is probably several months. You won’t be able to make yourself multiple orders of magnitude more effective, but you should be able to understand the current state of the art in theory.
  2. Practice: To practice, pick any popular service and give yourself some time to write out a design using paper and pencil. You can pull from this list to start. Note that there are a load of resources out there including paid courses and YouTube videos. There’s rarely “one correct answer”.
    • I personally spend about 20 minutes or so trying to get the gist of a solution, about an hour reading / understanding someone else’s solution, then another 30 minutes trying to solve it myeslf again. Repeat this for the ~20 common problems and that’s probably a good start.
  3. Mocks: It’s worth doing at least a few mocks, but arranging them can be tricky. The main benefit to mocks will be that they let you try out different frameworks for answering these sorts of questions. Much of this interview is finding your voice and how best to communicate to your interviewer.
Tip

Be honest with yourself with what you know and don’t know.

It’s not enough to have just read a description of something. You need to be able to naturally weave it into communication with an interviewer.

Time spent

You should cover at least all the common “tools” and review at least a dozen or so of the common problems.

This will take a least a week for someone already pretty well versed. If you’re starting from scratch, this could take months.

Behavioral

  1. Recount: Think of 2-3 past experiences that consist of large projects (relative to your own experience) with good start, middle, and end. They don’t have to be tech related! You should write these out in as much detail as you can.
    • This should be doable within 1 week.
  2. Mocks: Get someone to ask you some standard behavioral questions. Try to answer using STAR.
    • Probably doesn’t make sense to do too many mocks. You just want to get used to leaning on your chosen 2-3 experience to handle answering most questions. At most a week or so is needed here.
Time spent

Preparing for behavioral interviews is one of the lightest tasks. It’s rare that you get judged really harshly on your responses unless you’re downright offensive.

Use the interviews as an opportunity to tell your story. You probably don’t need to spend more than about a week on the preparations.

Conclusion

As you can see, preparing for an interview can be a ton of work. Don’t shy away from it. This is how you will spend half your waking hours. As silly as the game is, it’s worth it.

Best of luck!

Interviewer preparations

If you are preparing to conduct a technical interview, you probably don’t need much more than about 15 minutes to familiarize yourself with your company’s problem bank.

If your company does not have a problem bank, it’s even easier. Search or generate results for something like “software interview questions” or just make up your own if you’re feeling unique ❄️.

Tip

Remember - if you make a mistake administering the interview, it’s OK!

There will likely be dozens more opportunities to try again over the next several weeks.

Time spent

About a day, max.

🤷