My first programming experience was with Logo on an Unisys Icon in elementary school. Logo is an educational programming language that teaches children concepts like functions and syntax by producing colourful animated patterns with a bit of math.
It interested me because I could type something, observe what happened, and then make rounds of changes until I had made what I intended. It’s like a painter who gets really close to the canvas to make his brush strokes, but then steps back to look at the big picture. Or like a golfer who consciously tweaks his golf swing and then watches the way the ball sails through the air. It’s a powerful feeling, this manipulation loop. It’s an exploration of the how and why of a problem. This feeling made me appreciate the power of a computer at a very young age. It continues to do so today.
I got my first computer when I was about 12 years old. While 90% of the time I was using it to play Doom, this amazing machine also introduced me to the Turing programming language (named after Alan Turing). I made a conversation robot (which I later learned was called a Turing test), and I even created a semi-working (broken) version of the game Asteroids for a school project. It wasn’t until my first year of university when I realised that I had only started to really understand the basics of programming.
Looking back, there’s no reason why I couldn’t have learned these basics when I was much younger. Of course, something like object-oriented programming would be hard to explain, but only if you called it that. For me, the real connection was made when I saw what real code looked like, and what it could do for me. This was the code that professional programmers wrote in all of its raw, nasty glory. It was hard to read, hard to augment, and some parts didn’t work just because.
Though children would no doubt struggle through a university comsci class, I don’t think we should completely dumb it down to their level. If a child is only exposed to the Fisher Price version of the process, he ends up with the benign Fisher Price result.
It’s imperative that the thing that the child wants to create has a real-world application. As he makes it, the finished product (and all its possibilities) should gradually reveal itself to his young brain, whether its a video game, a mobile app or a website. The only way to let him see the real prize is to let him use the big boy tools and make the same things as adults. Let him run into his own roadblocks, and he’ll figure them out the way everyone else does (Google).
When he feels that first taste of what it’s like to make something real, he’ll be motivated to make more and more things. And years later, when I hire him, he’ll teach me something.