Showing posts from November, 2022

Just keep it simple and break it down

"Just keep it simple and break it down" it is not just a statement, it is a mantra we all should think about first when designing any system. If an interviewer asks you how will you design whatsapp? Take a pose for a moment and think about how whatsapp works? what is the core functionality of whatsapp? It is a messaging app, sending and recieving messages is the most important part of it. Lets focus on this part for now and lets not think about how group chats will work? how to manage online/offline status etc? think about plain simple text messages. Lets list down things We need one sender who sends the message and one receiver who recieves the messages. Sender and reciever could be an android app, ios app or a webapp. We need backend server which receives the messages from the sender and sends it to the receiver. Do we need anything else? Umm lets think about. Sender and receiver can be online or offline at any point. It might happen that sender sends the message but receiv