Do you ever wish your kids would do something besides play video games on the computer? What if you could get a head start teaching them to be the next generation of open source developers?
Computers are increasingly easy to use, but programming is far more complex--and less accessible. For many of us who now have small children, programming began with BASIC programs on computers that forced you to make them do something by offering nothing but a command line.
At school, kids often learn how to use tools but not how to create. Tools become obsolete quickly, so knowing how to create is much more important, and the tools will be successively intuitive.
Andrew Baerg presented an introduction to teaching kids Scratch at Open Source Bridge. He recommends the cross-platform system, which was also the basis for the Girl Scouts game design workshop we posted about last month, for introducing kids to programming.
This starts things off by teaching them the most fundamental experience of programming: the computer will do exactly and only what you tell it to. This gives them the feeling of freedom to create instructions, but also that feeling of frustration when they discover the chasm between what you tell a computer and what you actually meant. Then they find the secondary freedom sometimes too rare in a kid's sphere--the freedom to make as many mistakes as they want.
"One of the biggest advantages of these opportunities is teaching your kids to be the kind of computer users you want them to be," said Baerg. "Users who are able to debug and find out what went wrong rather than getting fearful and not trying."
The freedom to explore
An early-grade-school-aged child generally experiences computers most through video games, which have a lot of walls--places your character can't go, things it can't do. They're restricted to the interface of that game system. If you ask them what's behind those walls, they often will tell you that there is something there, when really there is not. This is the opportunity to explain to them that if you can see the source of the game, it's an opportunity for you to create whatever you want beyond the wall.
As a side note, Scratch was available for iPhone/iTouch but was removed from the App Store. The explanation was that they won't allow apps that can execute code. That restriction means lost ideas. An idea with no means of expression is gone.
Kids aren't all the same, and their ideas aren't all the same. Not all kids are going to enjoy programming, and that's OK. Baerg does believe, however, that everyone is a hacker on something, whether it's drawing, making up games, telling stories, or making music. Giving kids the freedom to spend time on what they enjoy lets them explore the hacking that appeals to them, not the hacking that appeals to you. Don't get bogged down in exactly what they're doing in Scratch--just let them explore, whether it's to make up rules for a game or draw hundreds of costumes for their characters. Teach them with freedom.
Have a programming club
Baerg offered several pieces of advice for starting a programming club for your kids:
- Let the kids drive the enthusiasm and invitations to friends.
- Interact with parents on a trust level, but they don't have to be there.
- Keep it to one hour--long enough to get something done, but not so long they lose interest.
- Prepare in advance. Don't try to wing that 30 minutes of prepared program, even if you think it's simple.
- Take and share. Sample Scratch programs are widely available online.
- Resist the urge to make it perfect. Leave a degree of incompletion to give the kids the opportunity to make it better.
- It's not only about games. Explore art, music, and storytelling too.
And finally, simply let them get their ideas. Your role is to help them express their ideas in programming. If they don't have ideas, you can encourage them with suggestions--"How about a sound?" or "What if something moved?"--that still leave them room to make the ideas their own.
Bring it back to open source
Scratch offers a built-in opportunity to teach kids about open source and sharing. The Scratch menu has a button called "Share this online." Click that, and anyone can go to the Scratch homepage and download the code to your project. From that, when someone adds to and reuploads the code, they have what they call remixes, which are analogous to forks. Commenting is on by default on those Scratch projects, creating analogies to the good and sometimes negative effects of working openly in a community.
Scratch an itch and get a kid programming.