OK. My best friend had the same Apple II. We used to play Carmen Sandiego, and California Games, Oregon Trail; I had a TRS-80 Model 100 laptop that I learned BASIC on, but my first programming language was LOGO. Then Hypercard.

So I figured I'd address this question if or when I had a kid. I don't have kids. But I'm glad someone asked it the way you asked it; it's very important to me that kids should learn this way, by building things rather than having structures shoveled at them.

Quick side note. My dad banned RPGs in the house. My brother was a huge D&D fan but my dad said it encouraged "follower" mentality to follow a dungeon master's idea of the storyline; and he viewed all videogames with plot elements basically the same way.

OK. So how would I approach it? I'd make a language that took all the basic elements of code (vars, control structures, etc) and made them come to life the way LOGO did. The rewards of doing something cool have to be tangible. When I was 10 or 11, my friends and I had our own code competitions in Hypercard to try to make cool screen savers or little games. We judged each other and ourselves; we'd spend 72 hours and see who made the coolest thing and we'd be honest with each other if someone else's thing was cooler. None of this was "cool" at the time but it was like we had magically tapped into some power that other kids didn't have, and that was what kept us addicted to learning. We learned from each other and from our own mistakes. The two friends I'm thinking of from elementary school are both incredible developers and business owners now; one runs a very bizarre entertainment venue, and the other is a great writer who put out a bunch of games after working at Microsoft and Bungie.

So I believe they'd have the same view on it. Here it is:

1. Concrete results need to happen quickly
2. Introducing abstract concepts (arrays, complex data structures) should be challenging but lead to far greater results
3. Results need to be "pretty". But only in the way that encourages stretching your skills further. For example, if you start a kid in a programming environment where everything is a pristine 3D world, and their job is to program the behavior of an animal, then you've done most of the work for them; their work has to actually stand out and shine. The problem with too many platforms is that they reward the kid too soon. So you made an animal but it isn't really that different from every other kid's animal. The competition between kids is critical... and so is the ability to make something unexpected. LOGO could make unexpected artifacts. Hypercard was wide open, it was just a blank page. Kids' imaginations filled the gaps, and we all wanted to make Spaceship Warlock or Myst or the Journeyman Project from that page.

What I would do? I'd probably be a terrible parent. But my advice would be to get your kid a Commodore 64 or a TRS-80 and show them the manual for BASIC. And tell the kid if you want to play a game, make a game. Then get other kids to compete on it. The sense that you can create something from nothing using these tools is a powerful motivator. Then later they can see the world where it's all "been done" and they'll probably think of something like Wordle which wasn't quite done, because they've learned how to think that way.

Just my 2¢.