I failed three system design interviews in a row.

Not because I didn't know the concepts. I knew them cold. Caching, sharding, consistent hashing, CAP theorem, message queues — I could define every one.

What I couldn't do: answer what came next.

"What happens when the cache gets stale?"
"Why are you sharding this?"
"So you'd ignore partition...