I tutored a couple of boys, ages 12 and 13 at the time (a few years ago), in programming. I started with one of them using Java and found it to be a lot more difficult to get off the ground. Java contains a lot of odd bits of syntax and terminology that are a bit alien to a 12 year old.
One of the reasons many people think Java is such an easy language to learn is their familiarity with either C or C++. Imagine someone who doesn't have that syntactic background; there are a lot of little details to remember and get in the right place in Java.
In contrast, I used
Squeak to work with the other one. It was so much easier to get off the ground. OO concepts map very directly into the language (Smalltalk). There's a very rich graphical library, so getting to the point of building nice looking and robust games is far, far easier than it is in Java. We put together a working breakout game (the thing with bricks, a paddle, and a moving ball that knocks out the bricks) within 3 one-hour sessions.
I highly recommended downloading Squeak and playing with it to see what you think. It would require a bit of learning yourself before you could effectively teach a 12-year-old, but from the 12-year-old's standpoint, it'll be worth it.
Age 12 is about the right time to introduce kids to programming, from what I've read and experienced myself. Be forewarned that some of the mathematic concepts required to build games are a little ahead of them at that age. Understanding coordinate space is an iffy proposition, depending on the child.
-Jeff-
[ December 14, 2005: Message edited by: Jeff Langr ]