LinkedIn is a professional networking platform that allows individuals to create and maintain an online career profile, connect with other professionals, apply for jobs, and share industry-related content.
It also serves as a recruiting and branding platform for companies to post job openings, build their presence, and hire qualified candidates.
In this chapter, we will explore the low-level design of LinkedIn like system in detail.
Let's start by clarifying the requirements:
Before starting the design, it's important to ask thoughtful questions to uncover hidden assumptions and better define the scope of the system.
Here is an example of how a conversation between the candidate and the interviewer might unfold:
Candidate: Should the system allow users to create detailed professional profiles?
Interviewer: Yes, members should be able to add a summary, work experience, and educational background.
Candidate: Should members be able to connect with each other?
Interviewer: Yes, the system should allow one member to send a connection request to another. The receiver can accept or reject it.
Candidate: Can members post updates, and should these be shown in a personalized feed?
Interviewer: Yes, members can create posts. A member should see posts from their connections in their news feed.
Candidate: Should members be able to like or comment on a post?
Interviewer: Yes, and the post’s author should be notified of these interactions.
Candidate: Do we support any search functionality?
Interviewer: Yes. Members should be able to search for other members by name (case-insensitive substring match is enough for now).
Candidate: Should the system include messaging, endorsements, job applications, or premium features?
Interviewer: No, let’s keep it simple. Focus only on core features: profiles, connections, posting, feed, notifications, and search.
After gathering the details, we can summarize the key system requirements.