This is an open ended sort of question. There are some young people who really "get" computers and software development early. These are the kids who create their own web browser, or set up the school's web site, or create the game program that all the kids are playing during their free time. They are hacking together hardware and software to do interesting (and occasionally useful) things. They do know more than their teachers (about computer's a computer development at least) and often know far more in those areas than their parents.
These are the kids who will be the next Bill Gates, Steve Wozniak, Paul Allen or Mark Cuban. These are the kids who can take a small piece of information and make a huge difference with it. So how to we help them maximize their potential?
By "we" I mean teachers and the computer industry. And perhaps universities. In fact I mean anyone who has an interest in either furthering the field and industry of computer science or just helping young people maximize their potential. There are small, local things that we can do I think. Independent study classes in schools for example. Let a young person take school time (and get school credit) for learning something that really interests them. Sounds shocking doesn't it? In fact many schools do allow independent study programs but many put lots of obstacles in the way or don't permit them at all. Yet isn't that something schools should promote? I think so.
Likewise I'd love to see more universities develop programs that reach down to help high school and even middle schools develop their interests. Summer camps? Maybe. One on one mentors with college students? might work. Anyone have other ideas?
I think that industry can help in several ways. A lot of the resources that companies provide for professional developers are barely usable by students either because the technical level is to high or the vocabulary and/or writing style is unapproachable. So perhaps more and better documentation for beginners, students or hobbyists would be helpful. Sites like Microsoft's Coding 4 Fun are a great step in a great direction I think.
How about interesting tools (ideally free) in interesting topic areas? XNA GSE for gamers, Microsoft Robotics Studio for those who want to mix hardware and software, and the Visual Studio Express Editions for those looking for free software development tools are all examples of that sort of thing. The official version 1 release of both XNA GSE and Microsoft Robotics Studio were just made available this week BTW.
Yes those are all good starts. Is there more that industry can do? Perhaps something that concerned individuals can do? What would you recommend? I'm looking for ideas. Ideas that scale and that we can promote through school and industry partnerships or that schools or industry can do on their own. My biggest fear is that some really smart and excited kids will feel too isolated or get too frustrated when all they really need is a little encouragement or some help past minor technical sticking points and we'll just lose them. I don't want us to only have the kids with no life who are willing to give up everything to make the computer do what they want now. We need to keep the enthusiasm up while kids knowledge catches up with their intelligence and natural skills.
Please drop some ideas in the comments and lets see if we can get a brainstorming session going here. Thanks!
I don't know; if you're talking about the types of people you used as examples, they're going to do what they're going to do, no matter what. You can encourage, discourage, help, or hinder, and they'll still do it. The obsessive, driven types don't need any help, except maybe to become successful in business. :)
For the kids who get it, but aren't obsessed, I don't think throwing resources at them is a solution. How many great ideas came about because you had to make do with what you had?
I'm a big believer in mentoring, so that's what I would suggest. There are a lot of ways that can happen today, formally and informally, and a lot of "old timers" with a wealth of knowledge to share.
My son (16) and I recently attended an IEEE banquet where Jerry Salzer was the speaker. It was fabulous; hanging out with like-minded people and getting to hear, and talk to, someone like him. I know the IEEE reaches out, but maybe there's a way to work with them, the ACM, and others, in a cooperative effort.
I was one of those "get it" students back in highschool. One problem was that I was simply bored, while everyone else struggled with their IFs and LOOPs. Taking on the AP program on my own didn't provide much challenge ether..
Gregg has some really great points above. The motivation was self-created. I've started my own website - http://compsci.ca/ and simply started posting away tutorials, source code, and other content in hopes of finding other, like-minded, individuals.
Right now I try to take on a role of a mentor for those seeking help, but I guess having one of my own during the highschool years would have benifited me the most.
You asked at the wrong time -- during finals week, but I saved this and kept it running in the back of my mind.
I agree with the mentoring suggestion. I would love it if local programmer types would volunteer at their local schools and pick students to mentor.
I'd like to see them start out the school year, dropping in and affirming what their teachers say. Later as they get to know students, I'd like to see them pick a student to have a personal relationship with. And it doesn't have to be the best kid in the class.
And two or three or more would be really great.