austin-cheney 5 hours ago

Practice. That’s what I do to learn things. I am actually being serious and not being facetious. Weird games and memory tricks are not acceptable substitutes.

I wrote this before reading the other comment that says the same thing.

rvz a day ago

> Does it help with deep understanding, or is it better for rote memorization?

Experience. Build the system yourself to see how the system design all fits together. For example. [0]

   "What I cannot create, I do not understand" - Richard Feynman
[0] https://github.com/codecrafters-io/build-your-own-x
hiAndrewQuinn 3 hours ago

>Has anyone tried spaced repetition for this?

Yes.

>Does it help with deep understanding,

Also yes. Undoubtedly.

>or is it better for rote memorization?

A third "yes". Some explanation is in order here.

You are going to get a lot of answers here of the kind "lol I just do the thing, idk why you're trying all this weird garbage." These comments are wrong for your situation, because they are coming from already experienced practitioners of whatever you're talking about. They have, in the ideal case, already hammered in the type of rote memorization of the basics, through exposing themselves to many subtly different problem and variations on those problems that require them to understand the deeper underlying principles in order to succeed at solving them. They may even be currently working full-time on these kinds of problems, and spending 40 hours a week on one very specific challenge tends to make you the world's foremost expert on that challenge, and pretty good at a whole bunch of surrounding challenges. (In the modal case, which isn't common here in HN, they simply aren't as good as they imagine themselves to be at - in this case - distributed system design.)

What you probably want to do is this: Create a small "rote memorization" deck with the small list of general principles of system design. Then create or source a larger - much larger, at least an order of magnitude and preferably two - deck of actual problems and solutions in that space. The more concrete, the better. That second deck is by far the more important one. The human mind, and probably good thinking in general, proceeds from concrete to abstract; once you've seen a problem ten different times it's very easy to see it the eleventh time.

At first you will find yourself "simply" memorizing the answers to these problems. But as the days wean on, and as the problems become too numerous for your brain to hold carbon copies of, it will do the lazy thing and start to actually think through the deep logic of the problem, trying to abstract it out. This is no different in kind to what happens in a carpenter's hands after they've built a couple log cabins. Do not fight this urge when it comes up. Let yourself sit back and think hard and long on that particular problem. It may take a few tries before you finally breach the core, but you'll know once you do, because even entirely fresh cards will start to feel easy to you. Just like doing a math worksheet in grade school.

Good luck. Even this is no substitute for good old fashioned experience, but it's about as close as you can get if you don't have a reliable source of said experience at hand. It lets you cover a lot more ground faster in my experience.