Hear me out.
I was full for this 'teach kids how to code' thingy. But I think we have got this all wrong. Heck we don't have the right kind of tools to teach kids how to code. In fact I have now realized that you can't and should not teach kids how to code. You rather must teach them how to solve problems. Math was supposed to deal with that, but unfortunately that turned out to be complicated symbol manipulation if not for anything else.
My niece here in India is around 12 years old, and she is being taught C programming back in school(She is in 8th standard, or 8th grade as per US terms). No she generally comes and stays with us in the summers. So last time she came over for a month's holiday she bought her laptop with her and wanted me to teach her to program in C.
The net result is disaster. I tried everything possible. Every other trick in the trade. Even tried to start with Python first and not C. But I figured the nature of problems is something else. Kids view programming very similar to the way they see math. They find themselves manipulating things/symbols/stuff without understanding why, for what, or even why its even relevant to them. They struggle to understand where or why should you use an if/else/switch statement, or a for/do/while loop. Its difficult for them to map solution patterns to a code pattern.
Its not their fault. Its ours. Better luck trying to explain a kid why they are being asked to write a program find greatest of three numbers, find factorials, or sort numbers. To them it very clearly looks math in a different language. Its that boring math thing all over again.
Much complication starts when stuff like pointers is pushed down their throat. Or something like bit shifting. Oh and yes, they start asking things about the process of compiling, linking etc. Or why they need to put a #include at the start of a program. You can't honestly explain all that without explaining them some underlying stuff.
Beyond all this it needs to fun, which it very clearly isn't.
What kids need to be taught is how to solve problems, even if it means repairing a mechanical watch. Instead what they are being given is math in a different dose. And trust me at that age, they don't really like doing that.
And oh, by the way. Next year they are about to be taught Java. I can only imagine the horror, the way kids of going to deal with the text walls full of verbosity, API dance and the XML mess. And the last time I heard they don't really use IDE's.
One thing that I'm convinced is, after this episode due to all this trouble and trauma of having to learn this, she clearly doesn't enjoy, she will hate programming and hope she never has to deal with it again.
Because last time I talked to her, she told me she wants to be a journalist. That's how much damage 'Teach kids how to code' has done.
I'm now glad no one ever introduced me to coding when I was a kid.