Today's kids are amazingly creative technophiles... If you have any doubts about that, just check out some of the videos posted at sites like YouTube.
My personal YouTube favorites are Chips (by Brookers) and Hey (by Tasha)... Both of these videos demonstrate a significant grasp of the art and technology of film-making.
Given that these young people grew up with MTV and a wealth of cable channels, it is not completely surprising that they've mastered the basics of film-making so well... Learning by example (especially when there are so many good examples to choose from) is a time-proven method for mastering a skill.
With access to low-cost (and fun) film-making tools like Apple's iMovie, kids can now easily emulate the movies and music videos that surround them. Raw talent is quickly refined by contrasting their own work with the pervasive examples of "Good Film-Making" that they see every day.
We've got a seemingly endless supply of great want-to-be-Spielbergs on tap... which is really fun... but sadly we don't seem to have a supply of great want-to-be-Programmers (let's face it, film-making is sexier).
Given the relatively small number of want-to-be-Programmers, it is increasingly important that those who do accept the challenge learn their craft exceedingly well... Quality is going to have to make up for a lack of Quantity.
To teach these new programmers, we have to take our cue from the film-makers. Today's new film-makers are successful because they have access to great (and inexpensive) tools, and they have access to great examples to learn from.
Today's want-to-be-Programmers do have a wealth of great tools at their disposal, many of which are free. What they lack are pervasive examples of "Good Programming" to learn from. We are surrounded by some really great programs, but they are almost invisible... even when we are aware of them, it's hard to "see" how they work.
Do you have any idea at all how Google finds answers for you?
I think that our task (those of us who would educate these new programmers) is to seek out "Good Programs", and to discuss them and analyze them in the same way that film critics discuss and dissect movies. This has very little to do with specific computer languages or specific technologies... it has more to do with craft, style, and techniques.
There is science to programming, but there is also art... and the combination of the two is what really leads to Thoughtful Programmers.
(cross-posted at my java.net blog)