Most good organisations expect their engineering hires to have gone through a system design interview. For a vast majority of people this might sound like a weird thing to do as most people don’t individually design large scale systems. So expecting someone to design a highly scalable and available system in less than 60 minutes is a daunting task.
We must also consider the fact that not everyone gets to work in organisations that build large scale distributed systems. I think the time when I worked in FactSet was when I dealt with extremely large volumes of data and we focussed on the performance of queries from the database to sub 5 ms in order to ensure that even with latency, users would be able to see their graphs plotted in a second or so. Most applications wouldn’t really care about performance at that level because for their line of business, it probably doesn’t matter that much.
Those were exciting challenges and don’t often involve writing 1000s of lines of code. But they were experiments with different strategies of sharding data, based on how the data was fetched. It did take time and felt like a massive task at first, but as we progressed and realised the speed gain, we were more than happy with our efforts.
However, data at scale is not the only thing that we have to be concerned about. Large scale distributed systems are complex. Nobody designs an application as a distributed system to begin with. It evolves to become one as it scales, based on usage over time. This is why system design is an interesting topic.