Educative.io is perhaps the most under-promoted online coding platform at the moment.
Disclosure: I’m an enthusiastic affiliate of Educative.io and may get compensated if you buy something.
Although I ended up not producing a course for Educative, I was intrigued. For one, the course selection seemed not only robust but wonderfully specific. For example, Reintroducing React: V16 and Beyond was created for web developers who dabbled in React a year or two ago, but need a modern refresher.
Ruby Concurrency for Senior Engineering Interviews? You don’t get more specific than that.
Similarly, the Grokking the System Design Interview course on Educative is designed for those who need brushing up on a highly specific skill set. If you’re hoping to land a job at one of the FAANGs (Facebook/Amazon/Apple/Netflix/Google), read on.
System Design interviews are arguably some of the most difficult for software engineers. A lot of this you just won’t learn in college or coding bootcamps. But this course eases the pain. You’ll learn how to design everything from Dropbox, to Pastebin, to your expected regulars like Facebook, Twitter and Netflix.
This course was developed by Design Gurus, a group of hiring managers who’ve been working at Google, Facebook, Amazon and Microsoft. So the designers of this course know exactly what’s being asked at these interviews. Essentially, Grokking the System Design Interview is a short, concise and practical course broken down into two sections. It includes 2 coding playgrounds, 22 code snippets and over 100 illustrations to reinforce critical concepts.
Section 1 is all about system design problems. You’re introduced to a step-by-step guide to system design interviews, then thrown into the challenges. Each challenge also contains sections detailing various conditions and constraints of the system.
Sample Case: Design a URL Shortening Service like TinyURL
In this challenge, your job is to design a URL shortener service.
Like the other challenges, you get an introduction to the system (i.e. why you would need a service like this), then you walk through the requirements and goals. In the case of the URL shortener, you are given functional requirements, non-functional requirements, and extended requirements. The course emphasizes that these are things you need to clarify with your interview before you start designing so that you can find the exact scope of the system that the interviewer has in mind.
For this challenge, the following are listed as the functional requirements:
1. Given a URL, our service should generate a shorter and unique alias of it. This is called a short link. This link should be short enough to be easily copied and pasted into applications.
2. When users access a short link, our service should redirect them to the original link.
3. Users should optionally be able to pick a custom short link for their URL.
4. Links will expire after a standard default timespan. Users should be able to specify the expiration time.Functional requirements for Design a URL Shortening Service like TinyURL
Additional details for your URL shortener are hammered out in additional sections including:
- System APIs
- database design
- basic system design and algorithm
- data partition and replication
- load balancer
- purging or DB cleanup
- security and permissions
This step-by-step problem solving process is mirrored in all the other design challenges. Some challenges do have variations on these sections, such as Designing Facebook’s newsfeed. You’ll also be dealing with the Feed Ranking portion and detailed component design, for example.
You’re given tips, techniques, and methods on how to solve these design challenges throughout each step.
The second part of Grokking the System Design Interview is a large glossary of System Design Basics. Remember all that stuff I listed like Caching, Data Partitioning and Load Balancing? If you’re a little rusty on that, this section explains exactly what that stuff is. You’ll also learn about:
- SQL vs. NoSQL
- Consistent Hashing
- Long-Polling vs WebSockets vs. Server-Sent Events
- and much more.
From a financial investment standpoint, the nice thing about Grokking the System Design Interview is that you can buy a monthly subscription to Educative. That way, you can feast on this course and dozens of others. It’s also part of a learning track called Ace the Java Coding Interview, which consists of 8 other courses in addition to this one. In my opinion, you can’t go wrong with the subscription even if you just need to prepare for a technical interview.
All in all, Grokking the System Design Interview is a high-quality course.
However, it is geared towards a specific subgroup of engineers with their sights set on top tech companies. While this is a great course, I wouldn’t recommend it to code newbies or new engineers as there is a high opportunity cost. (If you’re wondering what I mean by that, check out this video on my review of Cracking the Coding Interview.)
If you want to stand out in front of the pack of hungry FAANG applicants, study the components of these design challenges. They will do wonders for making you stand out when the big day comes to show your interviewers what you can do.
👉Check out Grokking the System Design Interview
- Covers dozens of popular system designs
- Step-by-step explanations cover basic, intermediate and advanced concepts
- Over 100 illustrations
- Design challenges seem randomly organized (would be nice to have them listed in order of difficulty, for example)
Developed by hiring managers who’ve been working at Google, Facebook, Amazon and Microsoft, Grokking the System Design Interview is a short, concise course designed to help you land a job at a top tech company.