
How to pass a System Design Interview
How to prepare, and how to behave during the section

How to prepare, and how to behave during the section
How to prepare, and how to behave during the section
Technical Director & Fellow, T-Technologies
I curate our System Design Interviews
And I run design interviews myself
What we'll cover
Formalization and system boundaries
Main flows and the conceptual diagram
The real diagram and scaling under load
Tips and recommendations for further study
From the problem statement to the follow-up questions
What the candidate does before drawing anything
Framing the problem
The task comes with functional requirements
And with non-functional ones
Then comes the clarifying-questions phase
And only then the first line on the board
ATAM and the desired characteristics
High availability and data consistency
High throughput and scalability
Auditability
And ATAM as the trade-off analysis method
How the system connects to its surroundings
System boundaries and its API
Files, Database, API, Messaging
APIs come as REST/OpenAPI, RPC, GraphQL, AsyncAPI
You can draw in C4, UML, BPMN, IDEF0, DFD
And describe the domains through DDD
From the main scenarios to real technologies
The main flows and system components
The main scenario first
Then the exceptional flows
Components appear as the flows get worked out
The diagram grows with the conversation
The conceptual and the real diagram
First the conceptual diagram and its review
Then the choice of concrete technologies
And the desired architectural characteristics
After that — scaling under load
How to pass the section and what to read
Tips for passing the interview
Keep an eye on the time — the section runs about an hour
Do not start designing straight away
Talk your reasoning through and show initiative
Speak confidently only about what you know
What to take with you
Requirements get clarified before the first line is drawn
Boundaries are an integration style plus a notation
The diagram grows iteratively from the happy path
Technologies are chosen against the characteristics
And time is a constraint you have to account for
Books and resources from the talk's closing part
Wiegers «Software Requirements», Eyskens «Software Architecture for Busy Developers»
Tanenbaum «Computer Networks» and «Distributed Systems»
Hohpe «Enterprise Integration Patterns», Kleppmann «Designing Data-Intensive Applications»
Khononov «Learning DDD», Petrov «Database Internals», Ibryam «K8s Patterns»
polomodov.tech
All slides and links are in the Telegram channel
Alexander Polomodov, Technical Director & Fellow, T-Technologies
@book_cube