In most physical fields (athletics being an easy example) there is an amazing amount of carry-over from training into performance. Training being where you build up skills and performance being when you apply said learned skill to the performance. But in more abstract and cognition-heavy fields its muddy and vague.
I did manage to run a server with about 140 peak online simultaneously where the USP was a unique PvP experience with cross-faction battlegrounds (to my knowledge my implementation was the first open source one), respawns in FFA areas and such for classic (1.12.1) WoW.
None of this was ever really "real", but it taught me a fair deal about both computers, programming, running a community and life in general.
The open-source project for running WoW servers I used was "cmangos"(gh).
In these games, you don't write RFC, set up CI for your project, do code reviews or battle old dependencies. It's just you, a clear goal and all the right tools to reach it - somewhat similar to assembling Lego (or Ikea furniture) but with the fun of problem solving added.
Making something real would definitely net you a more satisfying end result, but maybe wouldn't be as entertaining. Obviously this depends a lot on what you find fun in programming and how smooth your real projects go!
Interestingly it seems it's the exact opposite for games simulating other kinds of jobs. I hate driving, I do it to get somewhere and nothing else. But trucking simulators? Endless fun and relaxation. Same thing with chopping onions, which I only do to make a nice meal. But in a burger joint simulator? I'll gladly slice tomatoes for two hours!
In fact, I would argue there is no more efficient, effective, or pleasurable way to practice system design skills specifically than games like Factorio, Shapez.io, Mindustry, and the Zachtronics catalog