First of all, let me take you through my own experience. The first time I wrote a program I was maybe 10 years old. I had an interesting piece of hardware, that was marketed as a "Pre-PC". It had a a 40x2 characters black and white display, a keyboard, and a few buttons where you selected your "game". It didn't do that much. But the best part of it was that one game... that I had no idea what it did at first. For every line I wrote, it replied "SYNTAX ERROR".
A few months passed before I picked up the manual, a nice glossy touch to it. That's where I found a 30 page tutorial of BASIC, complete with the ASCII table and a few very interesting snippets. For the next few months, I would spend about 20 minutes every day with it. It was pretty great. But then, at Christmas, a cool PC awaited in my room, so the BASIC stopped.
I hadn't realized how much impact those few minutes had on me. I never did any other form programming until high-school, when we started with Pascal. It was nothing like BASIC, but unlike my classmates, I already had a basic understanding of imperative programming. It was also useful when I did assembly programming, at university. Somehow it was much easier to compare it to BASIC than any other programming language I knew. Constructing loops was something I was already used to, and the goto instruction was like an old friend.
I am still struck by how much influence this had on me and I can't help thinking that if I hadn't stopped programming, I would be a much better software developer today. I'm also thinking about the newer generations, and what an opportunity we have with them.
If you think about what programming was 15-20 years ago, and what it is today, you can only imagine what it's going to look like in another 20 years. But most likely it's going to be completely different than anything that you could think of. Programming languages, artificial intelligence, algorithms, UIs... These kids should start learning now.
Of course, not every kid will grow up to be a programmer. And I don't think that every kid should. But I feel there are absolutely no downsides to knowing how to code.
So, how young should they start? I think as young as 4-5 years old. And not effective programming. Just concepts. Inheritance, recursion, basic design. Programming should be as basic as math. Every child should know how to write a basic app, and implement a simple algorithm. It might give them the edge, and most of all, it might actually make the entire world a lot better.
So, should it be every child? What about the kids that want to be doctors, or actors? I can think of a lot of cases where a doctor might want to write some code. And regarding actors, I think none of them would mind coding instead of waiting tables until they get their big break.
Hope this makes a good point. If so, please teach your kids how to code. It will make the world a lot better.