feb 13, 2011

Stop Imposing Programming Languages On Kids

We are doing it wrong.

Parents and relatives are enthusiatics when they see their kids play with the family computer. Programmers, however, bring this enthusiasm to discussion forums. The question is the same: finding the best way to turn their kids into themselves. And they get a plethora full of answers.

Most commonly recommended are the moving turtle environment and its various clones. ALICE follows closely. New comers like Scratch have been suggested too. High level languages like BASIC, Javascript or Python are only rarely mentioned.

I question this practice. Is imposing children a programming environment or language the right way for getting them into the field? I am no education expert and have no children, but I do remember how I got into this.

A Short Tale

The first computer I have ever used[1] was an IBM AT clone. Big bro's computer. He would let me play with it though. I broke it so many times that I got the blame when the machine failed by itself. And you know these machines failed a lot.

I don't remember seeing any manual at all. If they were there, they would have been in english so useless for me. French is my first language. But I wanted the machine to do stuff for me. That was it: making the machine do stuff. The word programming came into my vocabulary many years later.

A lot of people make fun of DOS today. They are ignorant, misinformed, or both. What I did with DOS at the time is not different from what I do today as a professional programmer, as far as I am concerned. DOS got me started. DOS got me the right mindset and I am glad it was there.

The first command I learned was CLS. When you type it, like by magic, things on the screen are gone. And you did that yourself. You are a magician. The second was DIR[2]. You type it, and things appear on the screen. My magic show was rather simple: CLS, DIR, CLS, DIR...

And it was great. I believed something was on between the DIR and the CD command but I could not tell. All I could tell was that CD did amazing things to the output of DIR and sometimes it did not. So I stayed away from CD. Wouldn't let a two-letter command mess with my show. An important rule even for today programmers: never use a functionality you don't fully understand a.k.a. don't be too clever a.k.a. K.I.S.S.

It was on another IBM PC, the XT 286 I guess, that I learned the ultimate magic trick. BASIC was the name. It brought color and it brought navigation menus. I am blessed to have started with QBasic because it had a GUI. And the blue color was refreshing.

I would spend hours navigating the menus with the keyboard because it was fun. No, we did not have a mouse. That was how I discovered the commands listing in the help menu and the powerful F5 key. LOCATE and PRINT would be QBasic functions I will always remember. They gave you control over the position you want your stuff to appear.

I found many more tricks by going to the commands listing, carefully jotting the names and examples on paper, and just trying them. This should tell a lot about documentation and examples.

The Other Tale

I got started that way. I made the computer do what I wanted. And when I became able to read english, I went back and tried to learn BASIC, but by then I could learn C. So I learned C. Oh, by that time I remember seeing manuals in french too.

I told that story because no one ever came to me to teach me the ideal way, or showed me the ideal language, or an environment for that matter. The tools were around, like toys. I played with them. So why are we doing it nowadays? I was reprimanded for breaking the computer that's all I got.

And here is the other story to illustrate my point. If you are a Stephen King fan, you already know it from his book On Writing. If you have not read On Writing, get it now.

In this autobiography, King tells at one point the story of his son Owen. Owen got interested in saxophones at the age of seven. So King and his wife got him a saxophone and lessons with the best local teacher. After seven months, King discontinued the lessons. And guess what? The kid was the most relieved because he didn't want to disappoint. He hasn't bought the saxophone or paid for the lessons in the first place.

King explains there was nothing wrong with Owen's memory or his eye-hand coordination. But he noticed after some time that Owen only practiced during the periods set for him. He writes: [I] never heard him taking off, surprising himself with something new, blissing himself out.

Computers are ubiquitous today. Kids playing with them means as much as when we tried to poke the garden snail with a stick. We did not become malacologists or dendrologists afterwards. So I believe we should not impose any programming environment on children. All we can do is lay things around and expect them to find them, and get interested in them.

A Challenge

So here's my challenge for Google and web developers. Google because of their upcoming notebooks based on their ChromeOS. And web developers because that's where we spend our time nowadays. If we really need to choose an environment to lay our tools around, it should be web-based. And Google promised to make an operating system that will do exactly that. The question now is to come up with the right tools children can pick up and make the computer do their magic. Security must be a priority though. the web is a quite dangerous place I admit.

I leave you with a quote from Vicky Lansky: You will always be your child's favorite toy.

Thanks

I want to thank big bro Kido for sometimes passing over it when the computer broke itself :) Big thank to all operating systems that lay the right tools around while making them easy to find. Parents who don't impose anything on their children, you are blessed. Stephen King, keep writing such amazing books.

To all programmers out there, keep doing your things. They think we are not doing much sitting in front of our machines for hours, because there isn't anything physical about it. It gets worse when they notice that our screens has not changed for hours. They simply don't know.

The Notes

[1] : I have seen the Commodore 64 but I don't remember using it.

[2] : It's funny I don't remember how I learned these commands.

Share with others:

All writings by Victor Noagbodji.