Review of Grokking the Object Oriented Design Interview
Update: The course has been taken off from Educative, and can be purchased on DesignGurus platform for lifetime access.

Please consider supporting us by signing up for a paid Medium account.
Today, we’ll review another very popular course listed at Educative.io platform: Grokking the Object Oriented Design Interview. Writing object oriented over monolithic code gained favor starting in the 1990s but the history of OOP predates much further back than that. Two earliest object-oriented languages were SIMULA 1and Simula 67 introduced in the early 1960s . The languages were the work of two researchers Ole-John Dahl and Kristen Nygaard working at the Norwegian Computing Center in Oslo, Norway. However, OOP as we know today was first implemented by a language called Smalltalk, developed by Alan Kay at Xerox PARC in the early 1970s. Smalltalk is often credited with ushering the OOP paradigm in the mainstream but in reality, OOP didn’t experience true widespread adoption until the beginning of 1990s with C++, Delphi and other languages adding support for OOP.

Frankly, over the several years of interviewing in the Bay Area and elsewhere, the only time I was confronted with an OOP question was at AppDynamics (acquired by Cisco) and Box. In fact at Box, “design an elevator” has been a repeat question for years. FANGs and related big tech are not known to ask for these types of questions. In fact they seem to be more popular among Indian IT companies rather than US companies.

The intent of OOP design questions is to judge how thoughtful and analytical a candidate is. Let’s take an example, say you are asked to design a Car class. You would approach the design very differently depending on the application. If you were designing the class for a Car repair shop you’d likely break-up the Car concept into several dozen constituent classes such as tire class, seat class, engine class etc. And then some more depending on the complexity of the component e.g. the engine class itself can contain dozens of objects that make up an engine. On the contrary, if you were designing a Car class for a video game, you’d likely not go into the same depth as that in the case of an application for a car repair shop. Such questions challenge a candidate with the following:

- Can you imagine the various use-cases of the system?
- How many objects can you identify in the problem statement, where each object represents a class?
- How well can you capture and detail the interactions among the classes of a system, technically referred to as sequence diagrams.
- Can you describe how control flows among all the classes known as activity diagrams in technical jargon.
Following is the list of questions covered by the Educative’s course.
- Design a Library Management System
- Design a Parking Lot
- Design Amazon — Online Shopping System
- Design Stack Overflow
- Design a Movie Ticket Booking System
- Design an ATM
- Design an Airline Management System
- Design Blackjack and a Deck of Cards
- Design a Hotel Management System
- Design a Restaurant Management system
- Design Chess
- Design an Online Stock Brokerage System
- Design a Car Rental System
- Design LinkedIn
- Design Cricinfo
- Design Facebook — a social network
Personally, I feel that this genre of interview questions is very open-ended and doesn’t add much value to determining the qualification of a candidate for a job. Only really unimaginative and limited answers help an interviewer raise red-flags in a candidate’s competency but most answers are high-level or too hand-waived to rank. Another shortcoming, these questions suffer from, is that candidates tend to go into rabbit-holes when discussing a particular component of the system and may run out of time to touch upon the other aspects of the question.
Overall, I wouldn’t recommend buying this course unless you are interviewing for an India based company or that you are sure that the company you are interviewing for is known to ask such types of questions. If you must then you can always read-up free blogs on UML (unified modelling language) and “designing an elevator system” to get some exposure on how to answer such questions.
