Search
⌘K

Over-engineering is getting you down-levelled

By Stefan Mai

•

We're seeing a lot more down-levels lately to top companies where candidates are expecting a senior role and get an offer for mid-level, or angling for staff and get a senior-level offer.
Some of this can clearly be attributed to the market and down-levels have always been around especially for transitions between companies of different sizes, but as a candidate you have a lot more control over this than you think.
In system design interviews, the evaluation is partly subjective: how does the interviewer feel you did? Do you seem like one of their (mid-level, senior, staff) peers? Many candidates assume if they correctly bring in Elasticsearch to the search problem or use a distributed queue to handle burstiness they necessarily got the nod — but this unfortunately isn't the case.
One of the most common ways to get down-levelled in system design interviews is to over-engineer. Over-engineering is a classic sign of a more junior candidate and frequently comes from overzealously applying a new (to you) technique or technology to a problem where it's not appropriate. This sticks out like a sore thumb to your interviewer because:
  • You're almost always missing something. The more technologies and approaches you bring to bear on a problem, the more likely you're making mistakes.
  • The maintenance overhead is huge. Companies are all trying to bring in costs and having a candidate who wants to drag in many new technologies to solve a simple problem can be a red flag.
  • More moving parts means more mistakes. Senior engineers have seen all the ways that cleverness can make their job a nightmare over time.
  • It's difficult to cover the details. Interviewers are on red alert for name-dropping and referencing stuff you don't know.

So, what should you do?

First, simplify where possible

Senior+ candidates ask themselves whether something simpler can get the job done before adding complexity. In interviews, it's a good idea to start with the most basic design that satisfies your functional requirements before loading up on fancy optimizations that might not be necessary.
Note for staff candidates: Skipping some of the more obvious or boring parts of this is expected, bonus points if you can explain why a more technically sophisticated approach is actually not necessary.

Next, research the downsides

You just learned about Redis? Great! Now you know what things it can do for you in a design. Before you yeet it into your next interview, go find the issues! Did you know Redis' full-text capabilities can bring your key-value gets and sets to a crawl (it's single-threaded, remember)? Do you know how to bring a Redis instance back up after a crash (append-only files only go so far)?

Lastly, learn the details

You don't want to be caught flat-footed by your interviewer when they ask you to explain your decision. Our deep dives are a great way to get the 80/20 of the depth you need, but nothing compares to working with a technology firsthand.

Here's some great deep dives to get you started!

Mark as read

About The Author

Stefan is one of the co-founders of HelloInterview, a platform to help software engineers and other tech professionals to prepare for their dream roles. He's conducted 1,000+ interviews and hired dozens of individuals at big companies and small startups.

Recommended Reading
Comments

Your account is free and you can post anonymously if you choose.

Schedule a mock interview

Meet with a FAANG senior+ engineer or manager and learn exactly what it takes to get the job.

Schedule a Mock Interview