On the other hand, I know a lot of families and kids who love it. It's truly incredible that this free resource was created, persists, exists that's been enjoyed and used by so many kids around the world.
What's your opinion? Is Scratch a good tool for teaching coding to kids? Why or why not? What, if anything is a better approach/program?
I built a little game on Scratch for my nephews. It was starting to boarder on turning into a big mess, but it was much easier than if I would have done it in an actual game engine, and one of my nephews almost instantly jumped into the code and start tweaking variables and had a great time tweaking and changing stuff, with little or no direction from me.
I think there is a lot of value in presenting code in a way that makes kids want to use it, where it feels like a toy. It should be about exploration. “Structured learning” sounds like school, and isn’t always the best way to learn. Scratch lets them learn by doing, through experimentation. That’s how I like to learn.
At some point if the kid wants to keep going, they will need to graduate to something else, but at least at that point they should have a general idea what variables, conditionals, etc are and an understanding of basic logic. Those skills will translate to every other language.
I also recently learned that Brilliant uses block-based lessons, too, so there's obviously some there-there
I would guess that a lot of the problem is one of actualization: how does one go from solving "someone else's problems" to one of realizing their own ideas. Based on what I've seen, I'd guess that a Minecraft mod port that maps blockly down into lua would go a long way toward "do some things that materialize change in an environment that is familiar." I haven't used Roblox, but I believe it's similar so if they have a programming language, same-same. I started to suggest using Valoren <https://gitlab.com/veloren/veloren#get-veloren> since it's actual FOSS and thus would be much, much easier to integrate into, but I haven't played it in order to know how much uncanny-valley it would have with any preexisting Minecraft experience
Tangential, but kind of related, a lot of the first "real" programming was in monkeying with webpages, since "view source" used to go a long way toward showing how any cool trick was done. I guess the risk to that approach is that kids may not care very much about swooshing colors or alert("hello") but it for sure is accessible. I can recall typing Basic programs out of magazines to get a game running, but I don't actually recall what happened from there in order to know if "learning by transcription" is helpful or just feels rote
For teaching a child, it depends on the person’s interests. You can’t go wrong with Scratch (it looks fun, it’s easy to start with, and it’s immediately accessible within a browser), but the child might eventually want to move on to a more flexible language like Python for more complicated programs.
My sense is it's good for learning really basic programming concepts (eg, learning a while or for loop controlling a hardware output), and setting up a context for things like Python or Lua later.