Some thoughts and experience with my kids around ~10 until now.
12 is not very young, so whatever the approach is I think it does not have to be very child friendly.
I do not know much about Scratch, but I am not fan of it (my elder kid is using it sometimes). In general, I am not very fan of visual programming unless the kid is very young. When the kid is very young, I am very fan of physical platforms, Logo was also used like that with a robot. I purchased this (
https://www.primotoys.com/) years ago when it was a kickstarter project. It was great, my kids spent a good amount of time with it. They also like playing the coding game with this one (
https://www.playosmo.com/en-US/). It happened to be a natural progression from the first one.
At this age 11-12, I would try:
- Python as a regular programming language. If the kid likes it, that is great, so much can be done, but it is not easy to keep a kid interested long enough with such a language I think, at least until a level of proficiency is gained (and not only in the language but also in the environment/OS it is running.). I tried it with my elder (almost 11 now) before, but it was not very successful. Unless you found a very good book and the kid likes to follow the book, this would also require a good amount of help from the parent/teacher.
- For a quick visual result/feedback, I find NetLogo and Processing interesting. Both were naturally more interesting than Python for my elder kid.
- not a programming language but good old HTML and CSS might be interesting because it gives a visual output and it can be deployed externally so it might be interesting to see it on a browser. Something like Glitch can be quickly used. I have mixed feelings about JS, so not sure about using it as the first proper programming language.
- I tried microbit with makecode and it is pretty OK for a kid, also for under age 10. Arduino is OK but I also think it might be too complicated to start with. I like microbit and maybe a few accessories for it, or running it like a robot.