This great diagram about system design also exposes the hollowness of this system design trend . Apparently system design expects you to know
1. Load Balancing
2.Caching
3. Queues
4. Search
5.Streaming
6.Observability
7.All databases
8. Cloud compute for scaling
What are we interviewing for ?
But what we are basically asking is can a candidate design this fictitious FaanG system using Aws with 5-7 years experience . I am sure a sharp mind can read and answer anything about Graph DB to partitioning to blob storage but it is a fact one needs good number of years of hand on practice to be reliable professional in this area .I will be suspired to see a candidate so lucky that every 6 months he/she worked on a project that exposed him/her to each one of this area .Very unlikely .Have we then started believing that knowing random bits of designs from FaanG companies is somehow a skill akin to knowing distributed computing with guaranties !
What system design interview might mean
What system design interviews then probably means is we are looking for team mates who understand cloud scale vocabulary .What it might also mean is the expectation is restricted to only vocabulary and there is some other Senior fellow or team doing the actual Architecture .It might then just be simpler to ask AWS certifications instead of system design.
Next problem is what frameworks do we expect these candidates to use ? Java/spring in lambda is different ballgame than nodejs in container .REST is a different skill than how you package your services as micros while keeping functional sanity and quality of services. So is UI or big data. Very few system design talk of this complete stack (cloud to framework to code).I am sure lot of these interviews also cover performance ,security , build and such areas but how is that coherently weaved to the typical system design questions is a question worth pondering !
And i am totally discounting the fact that most great internet companies build their own platforms , a skill that is more challenging than system design in current interview flavor .
The reality check
In all probability system design interviews are outgrowth of the full stack engineer myth we created in industry (my old post on this topic) .Here 2 questions are worth asking :
1. Are we really creating tribe of cloud aware candidates with whom we do mutual fakery that we can design netflix video stream or uber scheduling with no deep experience to back it up ?
2. What is you job designation ? system designer engineer I/II/III ? or system design architect ?
ps :Here is also a detailed skill matrix for you to plan your growth https://docs.google.com/spreadsheets/d/1lAFfBj7UM3NZrS3ywsHZsK4pnWN5eWZJCeSt-UtQyu0/edit?usp=sharing