The Complete Guide to Grokking the API Design Interview
Tags: api, design, career, careerdevelopment
Published: 2023-04-21 22:04:41

> *This article was written by Educative's Co-founder and CEO, Fahim ul Haq.*

When I heard Meta was starting to give software engineering candidates **API design interviews**, I knew a trend was beginning. Word travels quickly among MAANG companies, so the others were not far behind.

So, what exactly is an API design interview, and why have top tech companies like Meta started to prioritize it?

To recap, **design interviews** are a unique subset of technical interviews in a typical interview loop. They're quite different from traditional coding interviews for a number of reasons.
* They don't typically require you to write any code
* You are expected to lead the conversation
* They are one of the primary sorting tools that interviewers use to determine your level of seniority

![API](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hu97gvt02xzei6e4qlqu.png)

Going into any design interview unprepared brings the risk of getting **down leveled** into a less senior position or even **missing out on the next big step in your career** entirely. 

The API design interview is relatively new to the software developer technical interview loop. As a result, it requires special preparation. 

Since we know API design interviews are exploding in popularity at top tech companies – both for hiring managers and developers – we created a truly one-of-a-kind course on API design. (**Seriously, we couldn't find another resource like this one anywhere on the internet!**) 

Today, we're excited to introduce you to our brand new course: [**Grokking the API Design Interview**](https://www.educative.io/courses/grokking-the-api-design-interview?utm_campaign=topic_interview_prep&utm_source=medium&utm_medium=text&utm_content=&utm_term=&eid=5082902844932096). This newsletter will lay the groundwork for you to navigate this new frontier and help you get ahead of your competition for your next interview.

First, I'll cover _why_ you need to prepare and how to ace an API design interview. Next, I'll break down the design process (with our own special acronym). Finally, I'll tell you exactly what you can expect to get out of taking Grokking the API Design Interview. 

## Why do you need to prepare for the API Design Interview?
The API design interview is a new phenomenon in the tech interview loop. Therefore you might be wondering if it will apply to you in your interview process. The two roles that now must prepare for an API design interview are **front-end developers** and **back-end developers**.

To optimize an API, you need to walk through the entire lifecycle of a request, from the front-end to the back-end. As with other design interviews, more senior candidates will face higher expectations for design efficiency and completeness. Even as a junior developer, though, you may be subject to an API design interview.

That said, almost any professional developer should check out this course. Although it has "interview" in the name, **the course does so much more than focus on interview preparation**. 

Even if you are a complete beginner to APIs, Grokking the API Design Interview presents a comprehensive approach to learning everything you need to know about modern API design and development. The course builds on these basic concepts in a bottom-up approach. In addition to diving deep into the "how" of API design, we also discuss the "why," so you can **apply the teachings to meaningful projects** in your career. 

Later, we'll look at precisely how this course prepares you for working with APIs in your daily development work. But first, let's turn back to the API design interview itself, since it was the inspiration for the course.

## How to get hired from the API Design Interview

If you're applying for a role that has anything to do with designing and building new products, there is a chance you will face an API design interview. Regardless of your API development knowledge, you'll need to **assess, plan, design, and review an API** capable of requirements set forth by your interviewer. 

It's important to remember that these interviews go by quickly too. You'll need to **send hireable signals** to your interviewers in only around 40 minutes. You'll be expected to drive this conversation on your API design, so being knowledgeable about the general software development lifecycle of an API is crucial.

Let's briefly cover what a successful interview should look like. 

 **1-** The interview begins with a **very broad problem statement** from the interviewer. Usually something along the lines of _"Design an API for…"_

**2-** To ensure you understand the problem, you'll need to clarify the **functional and non-functional requirements**. What will the API need to be able to do? How many users will it have? How is it expected to grow or change? 

Try to get all the info you need from the interviewer. (We'll review some necessary details to cover a little later.)

**3-** Next, start the **design phase**. Here you must address the architecture and protocols needed to satisfy the functional requirements. What endpoints will the API need? What type of data format are you using to exchange info?

 **4-** Finally, you'll need to **optimize your design**, and consider techniques like client-side rendering and server-side rendering. 

Strong hires will not only walk through the entire lifecycle of an API call, but also be able to optimize their design given a **latency budget**. Given the initial assessments based on the data and usage requirements, consider how you can improve the API all while staying within a budget of a few hundred milliseconds.

Now that you have an idea of what an interviewer will expect in an API design interview, let's take a closer look at the type of technical material you'll need to prepare for.

![REDCAMEL](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1h7az44rijytztb95y0f.png)

## How to understand the API design process
Knowing where to start can be tricky. There are multiple factors that need identifying before we can jump into the design. 

* **User**: Is this an internal tool, or is it a product that other parties may need?

* **Problem**: What does the API aim to solve?
* **Response type**: Endpoints and successful or unsuccessful calls must be clearly defined.
* **Use-case**: How will the API be implemented? This is essential for testing and debugging.
* **Scalability**: Plan for an increase in demand. The API should be resilient and expandable.
* **Documentation**: What documentation is required for other developers to successfully integrate the API? This includes structure, behaviors, and parameters to be defined.

This is a lot to consider, so let's break down the information that you need to convey in the interview. Luckily, we have an acronym for memorization purposes: **REDCAMEL**.

This acronym stands for:
* Requirements (RE)
* Design Considerations (DC)
* API Model (AM)
* Evaluation and Latency Budget (EL)

### Requirements (RE)
**Functional** and **non-functional requirements** should be noted and clarified. Make the problem statement and motivation for developing the API clear. Following the discussion of requirements, you should make informed **back-of-the-envelope calculations** on data pipelines, users, and number of requests.
### Design Considerations (DC)
Next, we can consider the high-level design of the API. 
* **Workflow**: How does the API fit into the larger system?

* **API architecture styles**: What style API is needed given the client, API gateway, and backend servers?
   - Common API architectures include: REST, GraphQL, and RPC
* **Data formats**: How should the data delivered by the API be formatted?
   - Common formats are: JSON, XML, binary
* **Protocols and versions**: As a followup to the architectural style, what client-server communication protocol will be used?

### API Model (AM)
This is where you'll first develop a **base URL** and the necessary **API endpoints**. Following that your design should include:
* **Data entities**: What data elements will your API need access to given the use-cases?

* **Request-response type format**: What is the format of each operation?
* **Failed requests**: Your API should have clearly defined failed request status codes.
### Evaluation and Latency Budget (EL)
After outlining a functional API structure, it is time to revisit how the design will successfully meet the **non-functional requirements**.
* **Evaluate and improve**: Navigate the tradeoffs given your design choices. Explain the thought process behind the choices you made. If there are other, more optimal options feel free to suggest changes.

* **Latency budget**: Revisit the calculations you made at the beginning. Use these numbers to calculate proposed response times of the API.


## Why our new course prepares you for interviews **and** the rest of your career
**Grokking the API Design Interview** opens with a comprehensive approach to understanding the architecture of APIs and how they can optimally glue the front-end of a system to the back-end.

After covering the basics of networks, API architectures, availability, scalability, and security, the course presents **real-world design problems** and outlines **exactly how to solve them**.

It features foundational design problems that are reusable to the reader. Learning and understanding these basic API styles will help you solve more complex API design problems down the line. Not only will these types of foundational services help you **solve more complex interview problems**, but they will **level-up your dev skills** in the real world too!

 We cover the how and why of common APIs like:
* Design a **search service**
* Design a **file service**
* Design a **comment service**
* Design a **pub-sub service**

While these are not the only foundational services that matter, they are some of the most common and most reusable.

Following the foundational services, we start discussing more organization-specific API services. The course covers APIs from organizations like:
* Google Maps
* Facebook Messenger
* Zoom
* Stripe's payment gateway
* And many more!

Given the nearly endless functionality of hypothetical APIs, as an interviewee, you can really be asked almost anything. But, these APIs in the course represent the **most important feature** for any given service (e.g. the payment gateway for Stripe).

We paid a lot of attention to variety when selecting APIs to cover. We want to make sure that regardless of what industry you occupy, you'll be able to translate your course experience into your professional life.

Finally, to emphasize the importance of resilient API design, we cover several notable API outages and recommend some API failure mitigation techniques that help strengthen a system. Designing an API for resiliency in your interview will help you stand out among candidates – and prepare you to avoid the costs of an API failure in your future roles.

## Get hands-on experience with API design
APIs are ubiquitous in every successful digital company, and industry leaders have set the standard for implementing APIs to transform their products and increase competitive advantage.

As a developer, you must (at minimum) know how to work with APIs if you want to succeed in the industry. To stay ahead of the curve, you'll need to excel in the API design interview. 

**We believe that [Grokking the API Design Interview](https://www.educative.io/courses/grokking-the-api-design-interview?utm_campaign=topic_interview_prep&utm_source=medium&utm_medium=text&utm_content=&utm_term=&eid=5082902844932096) will help you do both**.

We're very proud of this course and we hope that you get plenty of use out of it, whether you're preparing for an interview or want to learn more about designing and building APIs.

What would you like us to cover next?

_As always, happy learning!_