You only need information and instinct to master system design.
Most engineers focus on memorizing information but never practice developing instinct. Instinct from real on-the-job experience takes decades to gain but Shopify uses a brilliant technique to condense this practice into mere months.
Focusing on instinct practice is essential to take your system design powers to the next level.
How To Know What Proper Instinct Looks Like
Even the best information makes shitty baklava if it's not executed with perfect technique.
My godmother makes the best baklava in the world. The recipe was handed down to her from her mother and, after some pleading, she sent it to me. At face value, baking baklava is simple, there are only about 5 ingredients required. How hard can it be? Turns out, extraordinarily hard. Everything about how those 5 ingredients are handled matters. I made countless batches of baklava and most of them came out soggy, too salty, or even with sloppy walnut distribution across the layers of phyllo dough.
Although I have never altered the quality, brand, or quantity of the 5 ingredients required, my baklava has gotten significantly better (still not nearly as good as my godmother's). Why?
While it's impossible to define what proper instinct looks like, you'll know it's developing when your end result improves even when the inputs are kept constant.
Practicing Instinct In The Real World Is Too Slow
It's impossible to quickly improve your system design instincts on the job.
A senior engineer may only work on one or two large-scale system design problems per-year. At a small startup, they'll work on more designs but these will never be put to the test of hyperscaling. At a large tech company, they'll work on less designs but they will be higher quality due to the scaling required.
Mastery of system design with either of those approaches could take decades. You need a shortcut to excel in your career fast.
Shopify's Brilliant System Design Technique
The CEO of Shopify, Tobi Lütke, gives his engineers $30 to buy a tool that improves system design instinct over the course of mere months. That tool is the game Factorio.
Factorio is a real-time strategy game where players build and manage complex factories to automate production processes. The goal is to gather resources, research technologies, and defend your factory from alien creatures while expanding your industrial empire.
Sound familiar?
Playing Factorio is fun. It is also extremely difficult.
The mission is so simple it can be expressed in one sentence, "build a rocket ship and leave this planet." Compare this with a typical system design question "design Spotify". Whether you're building a rocket or designing Spotify you will have to deal with the same challenges under pressure in real time. Here are just some of the parallels:
- What if my client application drops their connection vs. what if the coal pipeline I set up is broken by alien attackers?
- How should I partition my system across geographical regions vs. should I fabricate parts close to where I will use them or close to where their ingredients are mined?
- How should I structure my database schema to support the app's use case vs. how should I structure my factories to support building a rocket ship?
Just as with baklava and system design, the component parts are simple, whether you're creating something with walnuts, conveyor belts, or Postgres. The meta skill you're practicing in all three of those pursuits is the instinct of system design.
The System Design Practice That Passes Interviews And Builds Resilient, Scalable Systems
You can dramatically improve your system design skills enough to pass an interview in just 1 month.
Simplify your approach and focus on information and instinct practice. For interview prep, spend 30 minutes practicing instinct by playing Factorio. To maximize the effects of this practice, do it before work in the morning. This will help you break your typical thought patterns. In the evening read Designing Data Intensive Applications.
This accelerated practice will empower you to crush a system design interview in just a month.
Top comments (0)