System design rules I always come back to
5 hours ago
- #Interview Tips
- #Software Architecture
- #System Design
- System design is about tradeoffs; there are no perfect choices, just better or worse ones.
- Ask key questions upfront: read vs. write heavy, data freshness, traffic patterns, and durability needs.
- Consider environment and tools like whiteboard software to reduce cognitive load during interviews.
- Define scale before listing non-functional requirements as it shapes the entire design.
- Evaluate storage options from in-memory to blob storage based on requirements and run the numbers.
- Durability involves more than replication; verify data correctness with checksums like SHA-256.
- Start simple and avoid unnecessary complexity; even large systems like OpenAI use basic setups initially.
- Optimize the client side with batching, chunking, and compression to reduce backend load.
- Handle non-atomic processes like payments with patterns like Saga and tools like Temporal for reliability.
- Focus on speed for the read path and correctness for the write path in system design.