I've noticed that many system design discussions (and even interviews) spend a lot of time drawing boxes and arrows, but very little time discussing the trade-offs behind architectural decisions. For example: Should you optimize for consistency or availability? When is a monolith actually a better choice than microservices? Is event-driven architecture worth the added complexity? How much latency is acceptable if it improves scalability? When should caching be avoided instead of ...