I'd imagine learning at least a little Python alongside Scratch would be more optimal than Scratch alone. It's like bilingual education, it has great benefits although individuals may gravitate towards a preferred option. Perhaps it's a bit like comparing Minecraft to Factorio:
Looking around, it also seems possible to set up your own Scratch server, which is comparable to setting up a Minecraft server, then you could use Python to pound away via the Scratch API (which is otherwise disallowed by the Scratch team on the public Scratch servers, reasonably enough). That might be a good project for older kids (teenagers).
Snap language by SAP (snap.berkeley.edu) would be a better stepping stone rather than directly going to industrial languages. It's got first-class functions, first-class lists, object-oriented programming, APL-style vector operations which are very handy for media processing, machine learning etc, continuations, ability to make HTTP calls etc - while keeping the same playful environment as scratch.
There's even a variation for 3D geometries: beetleblocks.com
Scratch is immensely popular but with lack of reporter blocks and lack of first-class lists, it encourages many bad programming habits (global state, no datas tructures like stack/queue/tree/graph etc. The one advantage it has over SnapLang is that it has better performance for building intensive games etc.
I mentioned this already in an earlier post but I've been working towards addressing this by building a tool that bridges the gap between Scratch and Unity. Talking with Scratch Team members in the past, Unity has been cited as a good exit strategy. Unlike many other languages you aren't being dropped into a text-only environment. I think the main downside is the initial presentation of Unity can be a little daunting.
The tool I'm working on adds a new entry to the main Unity menu bar - "Scratch". Clicking on this allows you to enter the project ID of a Scratch project. Once done, the tool pulls the assets (graphics, sounds, etc) directly from the Scratch website as well as pulling the code and converting it to native C#. The idea behind this is that a student who is intermediate to high level at Scratch can import their favourite Scratch project over to Unity. They can look at the C# code to see the comparison, inspect and modify any of the assets, see the Unity components added to each Unity Game Object, etc. Basically it puts them in a position where they have a project that they have written in Scratch that they can no play in Unity. They can breakpoint the code and single step through it. Essentially it is designed to take away much of the initial impact of having to start from an empty canvas in Unity.
This is currently a WIP but I'm aiming to have a beta version ready within months. I made an early pre-beta video a while back to demonstrate it in action. You can view the video at https://youtu.be/nuUF9BcJT8g
Also not OP, but I literally just learned about Hedy [1] today. No experience except from clicking through it for 20 minutes, but it looks quite interesting, taking somebody from a language with a very simple syntax (and limited functionality) to full blown Python, one level at a time, by making the language gradually more complicated (and more powerful).
I also quickly went through the basic tasks in 17 levels of Hedy in about 20 mins. (I just know a little programming.) Hedy is text-based and introduces ideas such as: print, entering variables, if, else, repeat, ... I really liked the gradual approach, which keeps you going forward onto the next level.
There are additional tasks at each level (see tabs at top) which I didn't try. It seems that these tasks are best done from left to right in order to get the basic idea of what is required.
The way it automatically detects variable within strings seems to magical. OTOH AIUI Hedy has been developed alongside research on what works for kids.
IIRC one of Hedy’s unique features is that it gradually increases in complexity as you “level up” including introducing what we’d call “breaking changes”. At level 4, they start allowing and requiring you to quote string literals: https://www.hedycode.com/hedy/4#default
I'm excited for my son to try it out once he's gotten comfortable with scratch.
At the moment, he's more interested in the visual design part of scratch than the programming, so I probably need to find some cool existing animations to inspire him.
i found it very confusing that the introduction at each level links to the next level but does not tell you to try the exercises. i didn't even realize that the tabs were exercises per level as i consider tabs a higher level hierarchy compared to the previous/next buttons. (i expect those to work within a tab, and not switch to a different row of tabs)
and also, why introduce an echo command in level 1 only to drop it in level 2? they could have waited and introduced ask in level 2 or 3 even.
i love the quiz questions though, they even make me, as an experienced programmer, think
the thing I've found teaching is that the place scratch really shines is teaching kids who are a bit too young to "get" Python. I think it's related to their language/visual intuition but a seven year old will be able to pick up quite complex things in Scratch visually without being able to grasp fairly basic things in Python. Give them a couple of years in the oven with or without Scratch and they'll be much more confident and ready in picking up Python, but scratch can teach them a lot in the mean time.
etoys for squeak, which is somewhat similar to scratch (and supposedly influenced its development) has the ability to switch between blocks and the smalltalk code that the blocks generate. so you can basically look under the hood (and also change the smalltalk code)
https://www.idtech.com/blog/scratch-vs-python
Looking around, it also seems possible to set up your own Scratch server, which is comparable to setting up a Minecraft server, then you could use Python to pound away via the Scratch API (which is otherwise disallowed by the Scratch team on the public Scratch servers, reasonably enough). That might be a good project for older kids (teenagers).