With my kids there wasn't any natural interest in it from them. Their interest in anything related to computing is consumption based not creator based. I've let them know if that changes, I'm here and can help. I try to encourage them in the things that they are interested in.
They like playing minecraft and building others recipes/formulas (not sure what to call them) for farming things. Their motivator isn't the curiosity of "how does this work" or "what can I build" like an engineer's mind, their motivator is competitively acquiring more than each other and their friends.
But if I have a hypothetical child, I wonder if I’d give a stab at helping them become a world class athlete, musician, etc.
Many of those people started extremely early in life, and supposedly only were able to achieve what they did by doing so.
One of my friends is an incredible pianist. As a non-musician, I feel he is easily as good as anyone that goes on world tours.
But he tells me he is at best mediocre as a professional pianist, and had no chance to become better because he started at age 6 instead of before age 5.
The other danger is that forcing a kid to learn a skill they're not interested in early can turn them off to it all together.
I haven't done a ton of research on this, but I do know that often when kids start early, they can also burn out (look at child actors as an example). The only area I've seen research on a real difference is children who learn languages before age 5 (and how they process the languages in their brain)
There are some amazing developers who learned to code as adults.
While it could be true, I'm pretty skeptical about age five versus age six being the difference your friend didn't become a world class pianist (sounds maybe like an excuse for not having the talent, discipline or simply the luck, which does play a huge factor). Starting early may help their technique and memorization to some extent, but afterwards judging a musician is highly subjective, and even someone who plays well at one moment in history, may not at another.
But, on the other hand, I do encourage my kid, who is 7 years old, to get his hand dirty with programming. I let them solve problems using Scratch and Minecraft Education Edition.
I am not forcing him to be a software engineer at all. But I can see how software development has changed my approach to solving problems. It trains the mind to tackle problems and solve them.
I “followed my dreams”, being naive and young.
I think I ended up ok. But I would have saved myself a lot of stress and headache had I gone to med school. Granted - I’ll probably have experienced a lot of a different kind of stress.
The only problem is that he ran out of projects or ideas to implement in scratch. So, I bought him Minecraft Education Edition, which actually have support for Block Coding to more a robot around.
And this one for Python: https://www.amazon.com/Python-Kids-Playful-Introduction-Prog...
My favorite analogy is to compare coding to writing - do you go around asking "Why are we teaching kids to write if they aren't going to become a novelist?" No, writing is a valuable skill in the world even if it is not your job. Computational thought is likewise valuable, even if you never actually code.
AI may change some of its importance and impact, but it won't ever diminish the overall benefits. If anything, it is going to be even more important to have your own skills in structured thinking so that you don't just let AI handle everything for you.
Probably Python is a good first language. I think it has a turtle module, but I'm not sure. https://docs.python.org/3/library/turtle.html looks good.
In may cases, I gave her a simple working program and made het tweak it, until she could write her ow programs.
(I also recomend to teach Excel. Used correctly, it's very powerful for simple math task.)
(Now I'm using mostly Racket, but the syntax is too strange if the parent doesn't use it. I recomend to start with Python and save a few parenthesis for later when the kid get enlighted.)
You can show them that it's an option and give them an introduction, but you can't force them to be interested. They need to be ready and need to choose it.
I do show them the type of force-multiplying work I can accomplish and they seem mystified. But then they use Scratch in school and can't do the same kinds of things and they aren't yet understanding there's stepping stones to programming.
When I grew up it was in the days of DOS. You had to configure things and tinker to get stuff to work. You had to dive in and really get to know the command line. It was thrilling to hack around in stuff you didn't write when the result actually works but does something far different than the original authors intended.
The coming generation has none of that. All they know is content on demand, which really means if somebody is not doing the work for them then it need not be done at all. They are blessed if they can actually use a keyboard to type characters as opposed to a touch screen.
They do horribly in traditional education, but tend to test well in spite of it.
1. Define the problem.
2. Build a part of the solution that gets them closer to the answer. They should be able to evaluate whether this is closer to or further from solving the problem.
3. Build more parts iteratively. Test and debug. These will break earlier solutions sometimes.
4. At higher levels, they define the problem to solve. Make a racing game or a platformer? Automate something. Minecraft is good for figuring this out.
Many other hobbies work here. Paul Graham was inspired by painting. TDD utilizes climbing analogies. Something like cooking may not work because you have a full design and it can't be figured out iteratively.
Now between Fortnite and 3D printing he’s doing alot of adjacent things and getting interested in a variety of computer topics including some coding.