So we don't allow kids to learn how to program until they take a lot of requisite math first? I was planning on teaching my kid some programming when he turned 5 or so, but should I hold off until he is 15 because obviously he isn't going to know all of that math before hand?
I believe that programming is a skill, not a profession. You can know how to program without being a professional programmer.
> You can know how to program without being a professional programmer.
Of course you can. You just… won't be a professional, and won't be held against professional standards (minimum output & quality, that kind of stuff). That's okay. But if you're going to get paid for it, you ought to be better than a random self taught amateur.
Though I suspect we aren't, in fact, much better than the average self taught amateur. That would be an indication that we still have progress to do.
Kids can learn how to build bridges out of legos and erector sets before they learn math and (intro to?) materials science and a host of other things. But we don't let them be civil engineers until they learn the basics of these things. It's entirely possible to learn about and "play with" something without the things that are considered prerequisites for being a professional at it.
Again, programming is not a profession. You might have a point with being a professional programmer (although a lot of programmers do useful things for money without much math), but programming is a skill that can be learned without a deep understanding of math, and often programming acts as a better lead into math rather than vice versa.
> often programming acts as a better lead into math rather than vice versa.
I suspect this is because programming is actually even more rigorous than maths. When you do maths, you can gloss over details, and sometimes delude yourself into thinking false things (that very same thing happened on my last HN submission: I failed to notice a data dependency in EdDSA, and thought an attack were possible, when in fact it wasn't).
Programming uses an external cognitive engine (the computer), that is faithful, exact, and ruthless. Your program has to work. And when it doesn't, you're forced to revisit your assumptions (as I was forced to revisit mine when I actually tried to implement that attack and failed miserably).
Neither is designing or building scale model bridges. But the minute you put a bridge or software project into a situation where many people depend on it and it can cause serious damage, it tends to become one. And that is when we would start applying stricter standards.
Sure, but this just brings up the fact that not all programming is the same. Some people are building small programs that don't need stricter standards, some people are building large ones that do. We just happen to call lots of activities that involve writing code programming, but they are fundamentally different.
What I was going to say. Yes little kids can learn to program, but I think 10 year old me and his shitty programs in Turbo Pascal aren't the standard we should be measuring professionals by.
I believe that programming is a skill, not a profession. You can know how to program without being a professional programmer.