My goal with this repository is to create an archive of my systems design knowledge and document my journey tackling the subject, so that others can have a less intimidating introduction to the subject, than, say, system-design-primer.
See resources.md for an annotated bibliography of system design resources.
- To get good at system design, you have to both read and implement real software systems.
- It's harder to fake than programming ability (read: leetcode) because it requires a large amount of knowledge which is abstract without the ability to apply it
- It's hard to gain actual systems design experience because you have to build a real, nontrivial software system, and it has to get big enough that performance and scalability become actual issues.
- The proxy for building real systems is making notes / teaching, and then testing your knowledge in mock interviews.
- Though if you have time and idea to design a highly scalable system, I suggest you go do it.