GitHub Repositories Worth More Than a Star
Everyone has forty starred repositories and has opened three of them. Twenty three worth keeping, grouped by what each is actually for: system design, things to build from, things to practise against, computer science foundations and things to look up, each with a note on how to use it properly and the three habits that decide whether any of it turns into learning.

Tauseef Fayyaz

Starring is not learning
Everyone has forty starred repositories and has opened three of them. The list below is grouped by what each one is actually for, because a repository you do not know how to use is just a bookmark.
Five groups: system design, things to build from, things to practise against, computer science foundations, and things to look up.
For system design
Grokking System Design by Arslan Ahmad
The companion repository to the Design Gurus system design material, and the most sequenced thing in this section. Concepts arrive in an order where each one builds on the last, rather than as a pile of topics you have to sort yourself.
How to use it: work through it in order rather than dipping in. If a topic turns out to be worth more than the summary gives it, the full system design path covers the same ground with worked examples.
The System Design Primer by Donne Martin
The most comprehensive free system design resource there is. Diagrams, explanations, worked problems.
How to use it: not front to back. Pick one topic, read it, then design something small that uses it. It is a reference organised as a course, and treating it as a course is how people stall on page forty.
System Design by Karan Pratap Singh
The same territory as the Primer, broken into short chapters with a clearer through line. Many people find this the easier first pass.
How to use it: read this one first if the Primer felt overwhelming, then go back to the Primer for depth.
System Design Resources by Gaurav Sen
A curated index of the best external material: papers, talks, articles, sorted by topic.
How to use it: as a map when you want to go deeper on one concept and do not know where the good writing is.
Computer Science Papers for System Design by Arpit Adlakha
The original papers behind the systems everyone references. Dynamo, Bigtable, MapReduce, Kafka and the rest.
How to use it: once the vocabulary is solid. Reading the Dynamo paper after learning about eventual consistency is a genuinely different experience from reading a summary of it.
Awesome Scalability by Binh Nguyen
A large index of how real companies solved real scaling problems, organised by pattern.
How to use it: search it for the specific problem you have. It is a lookup tool, not a reading list.
Engineering Blogs by Kilim Choi
A maintained list of company engineering blogs, which are frequently better than the books.
How to use it: pick three companies whose products you actually use and subscribe to those. Nobody reads six hundred blogs.
What Happens When by Alex Gaynor
An absurdly detailed answer to what happens when you type google.com and press enter, from the key press down to the rendered page.
How to use it: read it once, slowly. It connects networking, DNS, TLS, browsers and servers into a single continuous story, and almost nothing else does that.

To build from
This is the group that changes people, and it has the fewest stars per unit of value.
Tutorials for writing your own database, git, shell, compiler, docker or operating system.
How to use it: pick the one that intimidates you slightly and give it a month. Building a toy version of a tool you use daily permanently changes how you think about it. This is the best answer to "what should I build".
Build something real tutorials, sorted by language.
How to use it: when you have finished a course and feel stuck with nothing to make. Do not start another course. Start here.
Coding Challenges Solutions by John Crickett
Solutions to a long running set of build a real tool challenges: your own wc, your own JSON parser, your own Redis.
How to use it: attempt the challenge first, then read other people's solutions. Comparing five approaches to the same problem teaches more than any single tutorial.
A directory of free APIs by category, with auth and CORS noted.
How to use it: pick one that genuinely interests you and build something small with real data. Real data has messy edge cases, and messy edge cases are where the learning is.
To practise against
Hundreds of algorithms implemented readably, in most languages.
How to use it: as a second explanation when a textbook description has not clicked, and as a first open source contribution, because adding a missing algorithm is an approachable pull request.
Thousands of questions across Linux, networking, Docker, Kubernetes, CI/CD, cloud and SQL, with answers.
How to use it: to find the holes in what you think you know. Work one section, and treat the questions you cannot answer as your reading list.
Short, well explained snippets covering common JavaScript, React and CSS problems.
How to use it: read a few each morning. Small, frequent exposure works better here than a long session.
Essential JavaScript Design Patterns by Addy Osmani
Design patterns explained in JavaScript rather than in the Java the originals assumed.
How to use it: when the Gang of Four book feels distant from the code you actually write.
For computer science foundations
Coding Interview University by John Washam
One person's complete self study plan, kept public.
How to use it: as a syllabus for the fundamentals, not a checklist to complete. The value is the ordering.
Tech Interview Handbook by Yangshun Tay
Practical, well organised material on data structures, algorithms and the surrounding process.
How to use it: the algorithm sections are a solid reference regardless of what you are preparing for.
Interviews by Kevin Naughton Jr.
Data structures, algorithms and complexity in one hub, with video explanations alongside the code.
How to use it: when you want the same concept explained twice, in text and on video.
Data Structures, Algorithms, LLD and HLD by Arpit Adlakha
Covers the low level design layer that sits between algorithms and system design, which most resources skip entirely.
How to use it: for the object design skills that come up whenever somebody asks you to model a real domain in code.
To look up
A large, maintained index of books and courses that are legally free, in many languages.
How to use it: check here before buying anything. A surprising number of standard texts are free from their authors.
Awesome by Sindre Sorhus
The index of every curated list. Whatever you are starting to learn, its awesome list exists.
How to use it: first stop in an unfamiliar area, to find out what the landscape contains.
Path to Senior Engineer Handbook by Jordan Cutler
Curated writing on the non code part of the job: scope, influence, communication, ownership.
How to use it: when you are technically solid, getting good reviews, and cannot work out what is missing for the next level. One piece a week, not the lot.
How to actually get value from a repository
Three habits, and they matter more than which repositories you pick:
Open it the day you star it. Ten minutes, right then. If it is not immediately useful, do not star it. A list of forty is a list you will never open.
Convert reading into building. After any section you found interesting, write something small that uses it. Reading produces the feeling of understanding. Building produces the substance.
Contribute to one. Fix a typo in the documentation, add a missing example, improve an explanation that confused you. The first pull request to somebody else's repository is disproportionately hard and disproportionately useful, and every one after it is easy.
Beyond repositories
Repositories are excellent for breadth and poor for order. They tell you what exists, not what to learn first.
If you would rather follow a sequence, Design Gurus organises the system design material into a guided path, and our own resource library collects the repositories above alongside the courses, books and roadmaps that give them structure.
The combination that works is a structured path for order, plus these repositories for depth whenever a topic turns out to be more interesting than the path had time for.
Comments (0)
Comments are closed for now.
No comments yet.
Stuck on something specific?
Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Every session is free; a few slots open each week.
Follow along
New writing, resources and project ideas land here first.