System Requirements
What this lesson covers
This lesson opens a system design of WhatsApp, presented as a template for chat applications in general. It focuses on how to choose features in an interview so that the design can be finished within the hour. The advice is to start simple and lead with features you already understand, since the interviewer often agrees to the first feature proposed. The candidate features discussed are group messaging, image and video sharing, sent, delivered and read receipts, online status with last seen times, and whether chats are temporary or stored permanently. Group messaging and read receipts are described as the features interviewers usually look for, while online status and chat retention are less critical but interesting engineering problems. On retention, the video contrasts apps such as Snapchat and WhatsApp, where chats are kept mainly on users' devices for privacy and to save storage, with office or official communication that may need messages kept permanently for compliance. Image sharing is set aside because it is covered in the Tinder design, which leaves four features for this design, starting with group messaging.
- Pick a small set of features so the design can be completed in an hour-long interview
- Group messaging and sent, delivered and read receipts are the features interviewers usually expect
- Online status and last seen are useful engineering problems even though they are not core features
- Chats stored only on devices save server storage, while compliance may require permanent storage
- Image sharing is left out here because the Tinder design covers it