My initial environment for learning however, had been a TI-83 calculator, and had StackOverflow existed back then (or had the calculator come with a "quick start coding examples" book or something) it would have been 200% ideal. As is I learned most of the core concepts via trial and error, because I was very motivated to make games for my friends and program solutions to homework problems. For keeping me interested at that age the "Real world applicability" aspect cannot be understated.
To share a fun failure mode however, and emphasize the need for accompanying documentation (and this is what scratch does somewhat well in being rigid, at the tautological downside of being rigid) When I first learned about for loops, I didn't actually realize how one used them typically. I thought they were a "wait for N seconds" sleep-style function, and would actually use it in this fashion with laughably high loop iterations and strange formulations in the boolean field.