For example, a kid can spend an hour adding a tree of dialogue to their text-based dungeon crawler, only to get a compilation error they've never seen before. They might have forgotten a curly brace somewhere and I'll help them find it, then they give it another go only to find out they forgot a semicolon or misspelled a variable name. That series of events can be pretty demoralizing, and it takes some coaching to get them through.
The above is obviously a teachable moment to test early and often, but the point is kids often lose motivation in the face of errors they don't yet know how to interpret. On the other hand, kids get really interested when they can see the fruits of their labor come to life, which can happen without a lot of friction in Scratch.
So to give students a taste for that success without the slog through syntax errors and stuff, things like Scratch are fantastic. Especially for younger kids where attention span and getting bored or disinterested come more easily. We quickly move on to real languages, though, and the concepts they picked up in Scratch are easily portable to Python or whatever else.
I tentatively agree with them. If I can take a stab at what "real" programming is, it's when you can't expect everything to just work out of the box. You can screw it up in unexpected ways. Sure, that's demoralizing. But you either win or you learn, and I wonder if winning too much, too early prevents cultivating the mental ruggedness it takes to really program.
For kids younger than that, maybe it's better to learn scratch, but I wouldn't trade Small Basic, it's a great language to learn, the only bad thing is that it's made by Microsoft and only runs on Windows.
Edit: I'll also point out this:
> It was pretty obvious to me that I had committed a mistake at some point of my code.
How a student handles this is also often a sticking point. "Oh no, another error, I'm bad at this, maybe this isn't for me." Is an attitude that I've had to turn around. It goes a long way to convince a kid that it's actually the computer's fault because it isn't smart enough to understand what you're trying to tell it. So you have to be really specific in how you write to it. Then suddenly error messages are informative clues on the way to making your program work, rather than the computer scolding you for being a bad coder.
Critical thinking and problem solving is something that seems like it's slowly fading away in modern education. So much of it is pure memorization for fill-in-the-bubble style tests. Letting kids at an early age tackle a problem that requires them to use separate steps and pieces of logic to complete seemed very developmental to me. Even over that short time span I noticed a huge difference in the mentality of how the kids approached problems after the course was finished.
As far as being excited about coding, I can't say just how important this is. Especially at a young age, as long as they feel like they have the capability to use the tools, almost 95% of the students I taught were fully engaged in playing with Scratch. I've taught adults js for a while now, and I usually get about a 30% engagement in any course, so those numbers were crazy to me. The problem though is when they get stuck, it has to be intuitive enough for them to figure out how to solve without being able to pour through stackoverflow posts. Kids don't use SO, they use Youtube to figure things out. Youtube had great scratch tutorials for them to follow, and so it was easy for them to get past things in a way they were comfortable with.
Overall while I think it isn't something that should be invested in heavily by kids, it's a great lauchpad to get them excited for coding in general. I see it as something akin to lego - it's there to fuel creativity and interest, not necessarily to replace architecture or engineering.
I wouldn't say that Scratch was my gateway to programming, but I played with it a lot in my early teens. In my opinion Scratch is very good, for the following reason:
Programming is about achieving something by abusing the tools you have, right? (This is not all of programming, but I would say it's ~86% of it. You might call it technical sophistication). And for that, Scratch is wonderfull. The tools are colorful, easy to understand and while there are a lot, it's limited in size. You're learning the soft skills of programming with a lot more fun.
What about the limitation? In scratch, you will explore the borders yourself and will have much easier time to understand why the solutions which exist in other languages are usefull ("Oh, finally I can automatically spawn a lot of the same object in")
Limited, of course, to my own expierience...
No IDE to set-up, no installation, simple interface, tons of kid based examples, highly WYSIWYG, speed to first output etc...
I think we techies forget how much patience it takes to just get an environment up and running.
Maybe I'm wrong, any thoughts from people who worked with kids? I can give anecdotal evidence from my son (had no problems with Python or CHIP-8) but that's a sample size of 1.