Fundamentally I agree, but I question why we do not teach computer science/coding the same way we teach music?
For example, when I first learned how to play piano, I wasn't taught how to play Major 9th chords. Rather, I learned simple melodies and expanded into more complicated harmony as I grew older. The reason why I began learning more theory was because I knew of its potential to make me a better musician. This can be applied to computer science learning as well. You definitely don't want to start kids off on learning by trying to explain how a sorting algorithm works, that's totally meaningless. You want them to get things working, make them solve problems, give them problems that are so absurdly hard to solve with their current knowledge that they MUST find an alternative.
This is how you truly educate. By making people solve their own problems, because they have to. It's really funny how people step up their game when they believe they have to do something for their own good.
The primary reason for this is that we are currently at a phase where we are encouraging people to program who might not otherwise bother with it. As a consequence, we're making the lessons fun and appealing right off the bat. Writing an iPhone app is more entertaining than writing a command line guess-the-number program, but the latter is a more applicable teaching tool (mostly by virtue of there being far less knowledge necessary understand what's going on).
Fundamentally I agree, but I question why we do not teach computer science/coding the same way we teach music?
There are many reasons. One is that the fundamentals of classical music-- the notation, the instruments, the techniques-- have not changed substantially for hundreds of years. Compare the evolution of the keyboard from 1700-present to the evolution of computers during the same timeframe.
Another is that while programming is an activity, it is not a performance. Musical training is designed to impart specific technical skills for use in performance of music. Programming is more akin to composition.
I agree with you, but this somewhat flies in the face of what he says. He is arguing that CS is important, not just learning to code. But I think learning to code is important because it is what attracts creatives, and both creatives and engineers are needed in development.
There are two things that attracted me to programming:
1. Telling something else to do what you want, and it does it.
2. Being able to be creative within bounds in a way that allowed me to learn new cool things each day and build with those new bits of knowledge upon other bits, to great things that were entertaining.
Without some bounds, chaos and floundering reign. Electric slot racing was cool because a realistic (per ratio) speed was involved, but control was possible, and it was a simple control, variable power to the engine. Having to steer those cars without slots at that speed is beyond our abilities. This is the problem today, to me. There are so many options. There are no slots in the track. No Apple II. And, there are now so many prewritten solutions. You don't need to write a game to find what you were thinking of. There is little reason for the younger generation to develop anything on their own. My kids just play games. I know I couldn't get them to develop if I tried, though I tried once and failed. They'd rather be creative with markers and paper- and that's ok. But, it makes me miss my younger years on the first home computers; I can't give that to them; that era is gone, and I miss it.
But I think learning to code is important because it is what attracts creatives, and both creatives and engineers are needed in development.
You're guessing here (and you admit it), but I'm a very strong data point for the opposite. Anyone who knows me would tell you I'm creative (I started out, and still am a filmmaker and it's all I'd do if I could afford it).
I had thousand of hours of computer science before I wrote my first line of code, at age 20, and I didn't seriously get into coding until I was 24.
So no, I don't think coding and creativity have any link whatsoever. I find CS extremely creative and enjoyable, much more so than coding, which I consider to be "S" work in the Myers-Briggs taxonomy. When I want to be creative, I step back into CS mode.
For example, when I first learned how to play piano, I wasn't taught how to play Major 9th chords. Rather, I learned simple melodies and expanded into more complicated harmony as I grew older. The reason why I began learning more theory was because I knew of its potential to make me a better musician. This can be applied to computer science learning as well. You definitely don't want to start kids off on learning by trying to explain how a sorting algorithm works, that's totally meaningless. You want them to get things working, make them solve problems, give them problems that are so absurdly hard to solve with their current knowledge that they MUST find an alternative.
This is how you truly educate. By making people solve their own problems, because they have to. It's really funny how people step up their game when they believe they have to do something for their own good.