System Design

Hello readers👋 Today we will learn about System Design. If you haven't read part 1, 2 or 3 of the computer basics then I would recommend you to first read it and then devour this blog.

Link to part 1 - Computer Basics - I

Link to part 2 - Computer Basics - II

Link to part 3 - Computer Basics - III


Imagine building a house. You wouldn’t just start laying bricks on an empty plot, right? First, you’d think about things like location, size, floor plans, plumbing, wiring, and more.
Similarly, when building software like Instagram, Uber, or Netflix, you need careful planning. This is where system design comes in. It's essential for breaking down a large, complex system into different parts that work together.

As a product manager, you may not code, but it’s important to understand how the system is built, its components, and how they interact. This helps you make better decisions and guide the development process.

System design is the process of designing the architecture, components, modules, interface and data for a system to satisfy specified requirements. The design process should be well-documented and easy to follow so that everyone on the team understands the system.

As a PM you will be working with different teams like developer, marketing, design and so on. You must keep in mind these important points:

  • User Needs : What you customer actually wants and is your product fulfilling those.
  • Company Goals : Line up your system design with the future goals of your company
  • Technology, Budget & Resources : Check with the other teams regarding the available resources and efficient tech-stack 
  • Data Management: Identify the data the system will handle, how it will be stored, accessed, and protected. Address privacy and security early.
  • System Integration: Ensure that the product integrates with other systems smoothly 
Basically, a system is designed and developed according to the technical requirements(TR). The TR is made looking at the PRD(Product Requirements Document) which is provided to the developer team by the Product Manager. The PRD is made keeping a user-centric view, it serves as a guide to different teams to understand the purpose, features and behaviour of the product. The engineering team analyzes and breaks down the PRD to create TR. 

For system design you must be aware of certain components like -

Defining System Requirements:
Before a system is designed, we check the aim that the system is going to accomplish. Setting proper constraints, will help us focus and clarifies all ambiguities of the system. There are two parts of the requirements - 
  • Functional - These are the requirements that the end user specifically demands as basic facilities that the system should offer. Eg. features & functionality
  • Non-Functional - These are basically the quality constraints that the system must satisfy according to the project contract. Eg. performance, reliability.
Hypothetical example of Instagram:

Functional Requirements of Instagram might be:
  • Upload Image
  • Like
  • Comment
  • Share
Non Functional Requirements of Instagram might be:
  • Any image uploaded by a user should not be lost.
  • There should be no downtime.
  • The load time of images should be very less.
  • Multiple people should be able to access the platform at the same time.

MVC - We know about the MVC, which was discussed in the previous blog. Let's take an example here - Suppose You walk in a McDonald and you order at the big interactive touchscreen. The screen is the View, and you ask for your meal there. The order is passed to the operator, who is the Controller, that will go in the kitchen and fetch a burger (your wanted resource) of the type (Model) you asked, then deliver it back to you.

Data Flows - It is the system's data model and how data flows in different system components. Examples - Youtube Link




To master system design, I have curated a list from which you can practice questions with the answer available - 

Practice Question - 

You are the Product Manager at Amazon and you have your meeting lined up your stakeholders (engineers, QA, DevOps). Create the high-level design (HLD) for a cart reminder notification on Amazon.


Lastly, Here's the book link I talked about in my last blog - Book Link

Comments

Popular posts from this blog

Top 5 Technologies to learn in 2022

Impact of Covid on Real-Estates

Basic Product Management Jargons - I