Narrar un diseño de sistemas en inglés
Una entrevista de diseño son cuarenta y cinco minutos hablando sin parar en inglés sobre algo que todavía no existe. Se sobrevive con un guion de cinco tramos y un puñado de frases para pensar en voz alta.
La entrevista de diseño de sistemas es, en inglés, la más exigente de todas: no hay código que hable por vos, no hay respuesta correcta y hay que hablar durante cuarenta minutos seguidos mientras dibujás.
Lo que la hace manejable es que el recorrido es siempre el mismo. Si tenés el guion de los cinco tramos y las frases de cada transición, el idioma deja de ser el problema y podés usar la cabeza para el diseño, que es lo que se está evaluando.
Los cinco tramos
Plantilla
System design walkthrough
1. Clarify (5 min)
"Before I start designing: who uses this, how many of them, and what does success look like? Is this read-heavy or write-heavy?"
Preguntar antes de diseñar es parte de lo que se evalúa. Quien empieza a dibujar cajas en el minuto uno ya perdió la mitad de los puntos.
2. Scope and scale (5 min)
"So: 10 million users, about 100 reads per second at peak, writes are much rarer. Let's say we need p99 under 200ms."
Repetir los números en voz alta fija los supuestos y da la excusa perfecta para verificar que entendiste bien el enunciado.
3. High-level design (10 min)
"At a high level: clients hit an API, which reads from a cache in front of the database. Writes go through a queue so the API stays fast."
Primero el dibujo entero y simple, después el detalle. Empezar por el detalle deja al entrevistador sin mapa.
4. Deep dive (15 min)
"The interesting part is the feed. Let me go deeper there — the choice is between fan-out on write and fan-out on read."
Suele elegirlo el entrevistador; si no, elegí vos la parte con una decisión de verdad y decí por qué esa.
5. Trade-offs and what breaks (10 min)
"If the cache goes down, we serve from the database and latency triples. That's acceptable for an hour, not for a day — so we'd need…"
El tramo que separa a un senior: qué se rompe, qué se degrada y qué se monitorea. Casi nadie llega acá por gastar el tiempo en las cajas.
Antes de seguir, predecí
Las frases de cada tramo
| Momento | Fórmula |
|---|---|
| Pedir requisitos | Before I design anything: what are we optimizing for — latency, cost, or consistency? |
| Fijar un supuesto | I'll assume 10 million users and mostly reads. Let me know if that's off |
| Anunciar el dibujo | Let me draw the boxes first and then go deeper where it matters |
| Bajar a un componente | Let me zoom in on the write path — that's where the interesting decision is |
| Comparar dos opciones | There are two ways to do this: X, which is simpler but…, and Y, which… |
| Elegir | I'd go with X for now, because at this scale the extra complexity of Y doesn't pay off |
| Reconocer un límite | This falls over at about 10x — at that point we'd need to shard by tenant |
| Pensar en voz alta | Let me think about this out loud for a second… |
| Volver atrás | Actually, let me revise that — if writes are this rare, the queue is overkill |
| Cerrar | To summarize: API, cache, queue, and a worker. The main trade-off is staleness for speed |
| Se dice así | Suena a | Mejor |
|---|---|---|
| I would use Kafka | Solución antes que problema | Writes are bursty, so I'd put a queue in front — Kafka or SQS, depending on what we already run |
| It depends | Evasiva, si queda ahí | It depends on the read/write ratio: if reads dominate, then… |
| This is the best architecture | Cierra la discusión | This fits the constraints we listed; the trade-off is… |
| I don't know | Se corta la conversación | I haven't worked with that directly. My guess would be X — is that the direction you're thinking? |
| We can scale it later | Promesa vacía | This holds to about 10x; past that we'd shard by tenant, and the hard part would be the migration |
Practicalo
Reescribilo
El arranque de una entrevista de diseño que salta directo a la tecnología. Reescribilo —como si lo dijeras en voz alta— empezando por las preguntas que hay que hacer antes de dibujar nada.
ok so for a URL shortener I would use Kafka and Cassandra and Redis, and also a load balancer, and maybe Kubernetes. Kafka is good for scale. Then we have the API that writes to Cassandra.Before I start: a few questions. How many URLs are we shortening per day, and how many redirects per second at peak? I'd guess this is heavily read-dominated. Do short links expire? And do we need analytics per link — that changes the write path a lot. Last one: are custom aliases in scope? Assuming 100 million new links a month and 10,000 redirects per second at peak, read-dominated, no custom aliases — let me draw the high-level shape first and then go deep on the ID generation, which is where the interesting decision is.
Cuatro preguntas que cambian el diseño, los supuestos repetidos en voz alta y un plan anunciado. Todavía no nombró ninguna tecnología, y eso es lo correcto en el minuto uno.
Quick check on requirements: read-dominated, right? Roughly how many redirects per second at peak, and do links expire? Let's say 10k redirects per second and links live forever. High level: clients hit an API, redirects are served from a cache, and the mapping lives in a key-value store. Let me go deeper on how we generate the IDs.
La versión comprimida, para cuando el entrevistador tiene apuro o ya dio los números. Mismo orden: preguntar, fijar supuestos, dibujar simple, elegir dónde profundizar.
Lo que cambió no es el vocabulario técnico: es que el original respondía antes de saber la pregunta.
What are we optimizing for?
/wɒt ə wiː ˈɒptɪmaɪzɪŋ fɔː/ · suena como uót ar ui óptimaising for
Error común: decir «optimaizíng» corriendo el acento al final
Let me think out loud
/let miː θɪŋk aʊt laʊd/ · suena como let mi zink áut láud
Error común: decir «tink»: la th es /θ/
The trade-off here is
/ðə ˈtreɪdɒf hɪər ɪz/ · suena como de tréidof jir is
Error común: acentuar «tradeóf»
Eventually consistent
/ɪˈventʃuəli kənˈsɪstənt/ · suena como ivéncholi konsístent
Error común: decir «eventuáli», a la española
Ojo con el falso amigo: «eventually» es «finalmente», no «eventualmente».
At this scale
/ət ðɪs skeɪl/ · suena como at dis skéil
Error común: decir «eskéil», con e inicial
El audio lo genera tu navegador con voz sintetizada: alcanza para orientarse, y una persona que habla inglés lo dice mejor.
Lo que preguntan sobre esto
En la práctica
Cierre
Autoevaluación
¿Lo entendiste?
Práctica