Staff / System Design
The trade-offs behind large systems: performance, data at scale, many machines working together, and architecture.
Best after the Backend Engineer track: it builds on networking, concurrency and testing, which aren't repeated here.
Follow it and the end of each topic suggests the next one on this track.
Performance intuition
Design reviews go better when you can estimate costs: how growing inputs, memory and CPU caches turn into milliseconds.
Code here comes in Go and JavaScript. New to Go? Start with the 90-second Go primer.
Data at scale
Every large system is a story about where data lives, how copies stay in sync, and what happens when one machine isn't enough.
Distributed systems
Networks fail, messages repeat and clocks disagree. These ideas let a system stay correct anyway.
Architecture
Where you draw boundaries decides how fast teams can change things later. Learn the options and when each one is overkill.
Operating at scale
Traffic spikes, overload and outages will happen. Design for them up front: spread and limit load, watch the right numbers, and roll out changes gradually.
Designing whole systems
Put it all together. Start from requirements and rough numbers, then work through classic systems, each one reusing the building blocks above and showing what breaks as traffic grows.