DEV Community

Cover image for 10 resources to become a system design hero
Kumar Kalyan
Kumar Kalyan

Posted on

10 resources to become a system design hero

TLDR 🔥

System Design serves as the blueprint for creating a software system. It involves defining the architecture, components, and interfaces necessary to meet specific requirements. This topic is highly relevant in the software development industry and is frequently discussed in technical interviews. Acquiring system design skills can indeed lead to a 10x salary increase. 🚀
Certainly! System design is indeed a very complex subject that goes beyond mastering a coding language . It includes understanding system architectures, design patterns, performance optimization, and other intricate topics. Learning system design from specialists or coding bootcamps can be expensive, often costing around $1000.
To help you on your journey to becoming a system design hero, in this article I have curated a list of free and valuable resources .

1. System Design Roadmap

Contains visually designed and easy to udestand roadmaps attached with useful links to master system design and other programming resources for free

2. System Design primer

Considered for bible for system design this github repository contains a-z free resources to master system design

GitHub logo donnemartin / system-design-primer

Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

English日本語简体中文繁體中文 | العَرَبِيَّة‎বাংলাPortuguês do BrasilDeutschελληνικάעבריתItaliano한국어فارسیPolskiрусский языкEspañolภาษาไทยTürkçetiếng ViệtFrançais | Add Translation

Help translate this guide!

The System Design Primer


Motivation

Learn how to design large-scale systems.

Prep for the system design interview.

Learn how to design large-scale systems

Learning how to design scalable systems will help you become a better engineer.

System design is a broad topic. There is a vast amount of resources scattered throughout the web on system design principles.

This repo is an organized collection of resources to help you learn how to build systems at scale.

Learn from the open source community

This is a continually updated, open source project.

Contributions are welcome!

Prep for the system design interview

In addition…




3. awesome-system-design-resources

This repository contains System Design Key Concepts , building blocks , architechtural patterns , interview problems , distributed sytems papers , books and many more

4. System-Design

This repository contains artchitechtural ptterns of most pospular apps and tech startups

GitHub logo codersguild / System-Design

It's just fascinating. How is modern software designed? 🤔 Some design-level considerations for scalability, maintainability eventual consistency, availability & reliability. 👨‍💻 Interview Prep. 👨‍💻

System Design Bytes for Enthusiasts

System Design Discussions

I complied and collected some of the articles as a part of doing CS654A course at IIT Kanpur for a fantastic course on Advanced Software Architecture taught by Prof.Dr.T.V.Prabbhakar.

Modified from Zach system design repository. Added more links and topics to cover on both PS/DS & System Design Interviews. We will keep updating this posting from time to time. Some more awesome resource

How to "think" (and design) like a Software Architect at Silicon Valley Code Camp 2019

Visualising software architecture with the C4 model - Simon Brown, Agile on the Beach 2019

SYSTEM DESIGN IS NOT JUST FOR INTERVIEWS, IT CAN BE HOW YOU MANAGE YOUR LIFE. GIVE IT A THOUGHT

Disclaimer/Acknowledgements

I didn't write the articles myself. I love expanding my understanding of system design complexities and thus read many books, research papers, and articles that enhance my knowledge. I take the opportunity to thank everyone who found this repository useful. I would like to thank all the authors and developers who wrote the articles aggregated in this repository.

More Content Comming

5 . system-design-interview

The only repository you must checkout 7 days before your system design interview

GitHub logo checkcheckzz / system-design-interview

System design interview for IT companies

logo

How to prepare system design questions for an IT company

System design is a very broad topic. Even a software engineer with many years of working experience at a top IT company may not be an expert on system design. If you want to become an expert, you need to read many books, articles, and solve real large scale system design problems.

This repository only teaches you how to handle the system design interview with a systematic approach in a short time. You can dive into each topic if you have time. Of course, welcome to add your thoughts!

Clarify the constraints and identify the user cases

Spend a few minutes questioning the interviewer and agreeing on the…




6. Grokking-System-Design

This repository will help you master system design from basis to advanced level

GitHub logo Jeevan-kumar-Raj / Grokking-System-Design

Systems design is the process of defining the architecture, modules, interfaces, and data for a system to satisfy specified requirements. Systems design could be seen as the application of systems theory to product development.

Source: educative

Interview Process

  • Scope the problem
    • Don’t make assumptions.
    • Ask clarifying questions to understand the constraints and use cases.
    • Steps
      • Requirements clarifications
      • System interface definition
  • Sketch up an abstract design
    • Building blocks of the system
    • Relationships between them
    • Steps
      • Back-of-the-envelope estimation
      • Defining data model
      • High-level design
  • Identify and address the bottlenecks
    • Use the fundamental principles of scalable system design
    • Steps
      • Detailed design
      • Identifying and resolving bottlenecks

Distributed System Design Basics

System Designs

System Design Interviews: A step by step guide



SYSTEM DESIGN PREPARATION

  • How to prepare for and answer system design questions

Objective

Learning about and implementing large-scale distributed system is not easy. I do not want

7.low-level Design

This repository mainly focuses on low level system design

GitHub logo prasadgujar / low-level-design-primer

Dedicated Resources for the Low-Level System Design. Learn how to design and implement large-scale systems. Prep for the system design interview.

low-level-design-primer

Motivation

Learn low level design of system at scale prepare for the low level design (LLD) / Machine Coding round interviews.

Learn to design low level system

Learning low level design of scalable systems will help you become better engineer.

This repo is an organized collection of resources to help you learn low level design of systesm's.

Resources

Contributing

Feel free to submit pull requests to help:

  • Add new questions
  • Improve new questions
  • add new solutions
  • Fix errors
  • Improve sections
  • Add new sections

Under development

Interested in adding a section or helping complete one in-progress? Contribute!

  • how to guide and study material along with various resources.
  • add more questions and improve exisiting questions.
  • add solutions for the problems along with their detailed explaination (maybe video)

Credits

Credits and sources are provided throughout this repo.

Special…

8. machine-learning-systems-design

A book on machine learning system design

GitHub logo chiphuyen / machine-learning-systems-design

A booklet on machine learning systems design with exercises. NOT the repo for the book "Designing Machine Learning Systems"

Machine Learning Systems Design

Read this booklet here.

This booklet was my initial attempt to write about machine learning systems design back in 2019. My understanding of the topic has gone through significant iterations since then. My book Designing Machine Learning Systems (O'Reilly, June 2022) is much more comprehensive and up-to-date. The new book's repo contains the full table of contents, chapter summaries, and random thoughts on MLOps tooling.

This booklet covers four main steps of designing a machine learning system:

  1. Project setup
  2. Data pipeline
  3. Modeling: selecting, training, and debugging
  4. Serving: testing, deploying, and maintaining

It comes with links to practical resources that explain each aspect in more details. It also suggests case studies written by machine learning engineers at major tech companies who have deployed machine learning systems to solve real-world problems.

At the end, the booklet contains 27 open-ended machine learning systems design questions that might come…

9. System Design 101

Start learning system design as a beginner


10.system-design-resources

Become interview ready with this repository contains topics like video processing , Cluster and Workflow Management,Service Mesh and many more

Top comments (0)