HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
donnemartin
system-design-primer
Python2017–2026
donnemartin / system-design-primer

system-design-primer

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

60Distinct people
68Mentions
3Explicit recommenders
377.7KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

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

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

Ah sorry about that. I think my comment came off as a bit rude after reading it back to myself. Backend development means so much nowadays I think it would be hard for someone…

willmeyers used a recommendation phrase. 3 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year68 dated mentions

Observed mentions: 2017-03-09 09:53:27 UTC to 2026-09-01 20:08:01 UTC.

0510152017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 7 mentions; 5 submissions, 2 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 6 mentions; 2 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 12 mentions; 2 submissions, 10 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 13 mentions; 1 submissions, 12 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 6 mentions; 3 submissions, 3 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 14 mentions; 1 submissions, 13 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 5 mentions; 2 submissions, 3 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC752
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC624
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC12210
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC13112
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC633
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC14113
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC523
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC110
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC312

What Hacker News says

68 sources
You can look into systems design primers and just build stuff. Honestly until you actually need to do it in production it just needs imagination and some core understanding. At least that’s my experience from working at a unicorn where we scaled from a few customers to millions, with tons of background work and queues and what not spread out globally. You can try stuff at home and emulate how bigger stuff might be working. Or read up on their systems design and try it yourself. Nobody knows until they have to address it. But they can only do so if they have some level of imagination/creativity and understand how computer/networks operate. https://github.com/donnemartin/system-design-primer
In Ask HN: Best way to get hands on large scale system design exp
I've certainly been where you are. It definitely sounds like you need a job change, but your next company should be selected with care. > I don't have good grades in my undergrad Don't furnish that information. If the company asks you, bow out - it's an absurd question when you have 5 years of experience. A masters won't help you much and I wouldn't recommend it in your situation. It's the kind of thing a person thinks about when they feel stuck - I've had the same impulse at every career junction. > Should I work on solving LeetCode questions, and aim to get into FAANG companies I'd certainly recommend LeetCode, but not just for interviews. There are benefits to it that nobody mentions: your initial code correctness, your debugging skills, your communication skills, and your familiarity with your programming language all go up. I just we
Read the rest
nt through this process and the time investment has paid off quite well. I used to hate LC and thought I wasn't capable of landing any job, let alone a top tier job. FAANG is good for compensation, but not necessarily the most exciting work, so keep that in mind. There are many non-FAANG companies that are good catches. teamblind.com is a great resource for interview tips, if used carefully. Expect months-long practice and to do a lot of interviews. Rejection is just part of the process. Interview with companies you haven't heard of/don't care much about first. Respond to random recruiters who reach out. Don't forget to study for behavioral questions (STAR method) and system design (https://github.com/donnemartin/system-design-primer). For practical LeetCode tips - expect to complete a few hundred of them if you want to get into a top-tier shop. Speak out loud and explain as if you're in an actual interview. Timegate yourself: 7.5 minutes for easy, 12.5 minutes for medium, 20 minutes for hard. These are very aggressive times. If you haven't finished in that time, look at the solution, take notes, and understand it. Here's a Python script I wrote to help myself with this process. `pip install rich` should take care of the only external dependency. This script randomly selects LeetCode question numbers and creates a markdown file for note-taking. When I failed a question, I would stick it in `attempted` and it would come back up eventually. #!/usr/bin/env python import random import sys from pathlib import Path from rich.console import Console LC_COUNT = 2218 TIME_LIMITS = { "Hard": "20:00", "Medium": "12:30", "Easy": "7:30", } crushed = {} mediocre = {} attempted = {} short_list = { # Blind 75 76, 102, 105, 124, 128, 143, 152, 153, 198, 207, 208, 211, 212, 213, 230, 238, 252, 269, 271, 295, 300, 322, 323, 371, 417, 422, 424, 435, 449, 1143, } all_lc = {num for num in range(1, LC_COUNT + 1)} untried = all_lc.difference(crushed) lc_options = short_list or attempted or untried or mediocre lc_options = lc_options.difference(crushed) if len(sys.argv) > 1: num = sys.argv[1] else: num = random.choice(list(lc_options)) console = Console() def user_input() -> str: return console.input(prompt="[bold blue]>>>[/bold blue] ") console.print("LC:", num) base_path = Path.home() / "LC/" for existing_path in base_path.glob(f"*/{num}-*.md"): console.print("File already exists:", existing_path) exit() difficulty = "" while difficulty not in TIME_LIMITS: console.print(f"Difficulty {list(TIME_LIMITS.keys())}:") difficulty = user_input().strip().capitalize() name = "" while not name: console.print("Name:") name = user_input().strip().replace(" ", " ") url_name = name.lower().replace(" ", "-") path = base_path / f"{difficulty}/{num}-{url_name}.md" template = f"""# Problem: {name.title()} https://leetcode.com/problems/{url_name}/ *Difficulty:* {difficulty} *Status:* Untried *Time:* ? left out of {TIME_LIMITS[difficulty]} minutes # Notes: # Attempts: ## Time: O(?) Space: O(?) ``` ``` # Solutions: ## Time: O(?) Space: O(?) """ if path.exists(): console.print("File already exists:", path) else: console.print("Creating file:", path) with open(path, "w") as outfile: outfile.write(template) console.print("Done", style="bold green")
In Ask HN: What should I do next for my career?
willmeyers·Aug 16, 2022Recommendation phrase
Ah sorry about that. I think my comment came off as a bit rude after reading it back to myself. Backend development means so much nowadays I think it would be hard for someone to publish a general book on it. But maybe someone else has found something that I'm unaware of. I think you'll have the best luck collecting some general resources about different subjects. Here's some resources that I recommend flipping through. - Any up to date book on the programming language of your choice - Any up to date online course of the programming language of your choice - https://hpbn.co/ (networking) - Build APIs You Won't Hate (api design) - https://github.com/donnemartin/system-design-primer (system design) - API Design Patterns by Geewax (somewhat opinionated, but overall good resource for api design)
In Ask HN: What is the proper way get into back end development?
Best way to learn is by working with someone experienced. Or just use mature solution like Rails for example it solves most of typical problems and has easy itegrations. If you need more flexibility then maybe Node.js or other ecosystem is better. Generally theme about architecture is called System Design and there are resources to learn it for interviews/learning purposes but most of it only is applicable at very big scale and you might never need it. Read "Designing Data Intensive Applications" and look into [1] if still interested. IMO better to invest time into data design/querying (caching) so that you won't think you need some vodoo to handle your traffic. Like 90%+ of sites/apps don't have 1000req/second and this should be handled by Python on Arduino so as long as your DB design is good you are fine. For async processing it's wort
Read the rest
h taking a look into Temporal [2] as it looks as promising alternative to job ques and cronjobs. I can also recommend [3] to learn some cloud patterns [1] https://github.com/donnemartin/system-design-primer [2] https://temporal.io/ [3] https://docs.microsoft.com/en-us/azure/architecture/patterns...
In Ask HN: Who do you talk to about system architecture and design?
Work through these books, then you start looking at any random app or system and can start from there: - System Design Interview – An insider's guide: https://smile.amazon.com/gp/product/B08CMF2CQF - System Design Interview Vol 2: https://smile.amazon.com/System-Design-Interview-Insiders-Gu... - Designing Data-Intensive Applications: https://smile.amazon.com/gp/product/1449373321 - System Design Primer: https://github.com/donnemartin/system-design-primer Especially: https://github.com/donnemartin/system-design-primer#how-to-a... - The Architecture of Open Source Applications: http://aosabook.org/
In Ask HN: What is best way to do hands-on practice for system design?
> there's no way to do a "cracking the system design interview" the way you can with coding problems I'd disagree: - System Design Interview – An insider's guide: https://smile.amazon.com/gp/product/B08CMF2CQF - System Design Interview Vol 2: https://smile.amazon.com/System-Design-Interview-Insiders-Gu... - Designing Data-Intensive Applications: https://smile.amazon.com/gp/product/1449373321 - System Design Primer: https://github.com/donnemartin/system-design-primer Especially: https://github.com/donnemartin/system-design-primer#how-to-a...
In Ask HN: What is best way to do hands-on practice for system design?

Showing the 15 most recent of 68 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.