Your interview is an opportunity to do more than solve a problem. It’s a chance to demonstrate the behavioral traits that make you great to work with.

With no right or wrong answer to a System Design problem, it is how you come to an answer that will give your interviewers hireable signals. In this chapter, I’ll share the best practices that will help set you apart in your System Design Interview.

Understanding trade-offs

A trade-off is a compromise that is made between two desired but incompatible features. Trade-offs are performed mostly between the non-functional requirementsNon-functional requirements (NFR) define the operational capability and general usability of the system at hand. in the System Design world, as we will see below.

In order to show that you can devise a real-world solution in your interview, you need to be able to navigate trade-offs. This becomes increasingly important as you advance in your career.

Every system is optimized at the cost of trade-offs. Otherwise, you’re trying to build an impossible system. Optimizing for all features—such as the ability to have fast writes and reads and scale to billions of users with lots of data—is impossible.

In this section, we’ll explore some of the most obvious and common trade-offs that happen in an engineer’s everyday work and how you can reflect a real-world thought process in your interview.

Types of trade-offs

Have you ever experienced freezing or slow load times while using a banking app? This is not a fluke—in fact, it’s a necessity of System Design.

You can’t have a perfect app that satisfies all requirements, so you’ll want to get comfortable identifying the most important requirements for your system. In some cases, one requirement will necessitate and justify trade-offs in various other areas. A banking app is a good example of an app that must be secure and will have to accept less flexibilityFlexibility refers to a software’s ability to adapt to changing circumstances. and lower performance.Performance refers to an app’s speed.

Trade-offs can occur at any stage of the design process and can affect various features and requirements of a system. For every requirement a solution can fulfill, another may have to be compromised. While the list below is not exhaustive, some common trade-offs revolve around the following:

Press + to interact

Demonstrating your understanding of trade-offs

It’s up to you to perform in such a way that your understanding of trade-offs is apparent to your interviewer. Here are my suggestions for how to highlight your ability to navigate trade-offs in your interview:

  • Consider 2-3 possible solutions.

  • Narrate the trade-offs between the solutions.

  • Justify your chosen trade-off.

Let’s go into detail for each of these points.

Consider 2-3 possible solutions

Instead of jumping to one solution, you can briefly consider 2-3 possible solutions to your problem wherever it makes sense. This gives interviewers an opportunity to see how you weigh trade-offs between each solution and land on the solution that seems to best satisfy your requirements (within your known constraints).

At this stage, you can:

  • Narrate the trade-offs of each solution.

  • Ask clarifying questions as needed.

  • Eliminate the solutions that don’t align with the priorities of the system.

Wherever there’s room for clarification, it’s a good idea to double-check with your interviewers about the priorities of your system. For example, let’s say you’ve been asked to design an audio streaming app like Spotify. Based on your requirements, you’ve pitched two solutions with different optimizations:

  • A solution that provides streaming of high-quality audio at the cost of higher bandwidth requirements.

  • A solution that provides accessible service to users with varying speeds of internet at the cost of streaming quality.

Narrate the trade-offs between the solutions

You can then narrate the trade-offs that come between them:

“While providing high-quality streaming would be an amazing user experience, it would only work for people with access to broadband or 5G internet, which is a small fraction of the world’s population. If accessibility is the bigger priority, then we’ll have to sacrifice some of the quality of the media and stream at a lower bitrate. People who can hear the nuances in the audio won’t be happy with it. However, we’ll reach more people.”

By weighing the pros and cons and narrating your thought process here, you show that you’re considering the implications of your design. You can then ask your interviewers about the priorities of the system. Depending on your interviewer, you might be given more details that will help you make an informed decision. However, if you only get brief or ambiguous responses, simply make some assumptions and move forward. The important thing is to get to the next step and to show that you’re strategic about your decisions.

Justify your chosen trade-off

When you land on a solution, you should justify why it’s the solution with the most acceptable trade-offs. Which requirements will you be able to fulfill? Why is this best for solving the problem, given what you know?

Let’s say your interviewer asked you to design YouTube. As you discussed the problem, you could have identified a trade-off you needed to make. For example, you may need to decide between prioritizing the speed of:

  • Uploading a video, if you optimize storage for write efficiency.

  • Viewing a video, if you optimize storage for read efficiency.

Now, when you make your decision, justify it. You could say: “I’d compromise uploads for optimal streaming.” Then, explain why:

  • “There are fewer people uploading videos than watching.”

  • “The user experience suffers most for delays in viewing videos vs. uploading videos.”

In the end, you may receive feedback and learn that youve chosen one of the less ideal trade-offs—and thats ok! The important thing is that you did your best with the information and understanding that you had and that you addressed your solutions shortcomings appropriately. Well discuss how you can handle this kind of situation in the next lesson.

Mastering the game of trade-offs

Here are some key points to remember about trade-offs:

  • Trade-offs can occur at any point of the design process.

  • Always justify trade-offs and narrate your thought process for your interviewers.

  • By considering several potential solutions in the beginning of your design process, you can give yourself the opportunity to demonstrate more knowledge about trade-offs.


Quiz

Suppose you are part of a team developing a cloud-based document storage platform. You need to make a trade-off decision related to data redundancy:

Option A: Implement multiple data backups across different geographic locations to ensure high redundancy and data durability.

Option B: Optimize for cost efficiency by having a single data backup in a central location, accepting a lower level of redundancy.

Which option would you choose, and why? Provide your answer in the widget below.

Which Option Would you Choose, and Why?