Although developing high-quality, powerful software is a very complicated endeavor, kids as young as four can at least learn the rudiments of programming. While this might seem far-fetched, it’s already happening, particularly overseas, as this article describes.
Becoming a programmer requires nothing more than learning how to arrange instructions in the order in which they are to be performed. This requires mastering the concepts of sequence, selection, and repetition. With sequence, instructions are to be performed by the computer exactly in the order specified, with no special conditions added to change that order. With selection, you formulate a question for the computer to consider. Based on the answer to that question, the computer will choose which set of instructions to execute and which to ignore. Finally, with repetition, you tell the computer to execute a set of instructions repeatedly until it has done it a prescribed number of times or until a particular assertion you have asked it to test is no longer true. These three simple ideas – sequence, selection, and repetition – are the building blocks of all software ever written.
Surely, Kindergarteners can learn these ideas. We parents have seen firsthand that, when they want to, kids can follow instructions in order, make judgements, and perform actions repetitively (particularly annoying actions). Perhaps that is why the new 2014 UK educational standards require that students be taught the rudiments of programming at age 5. It might also explain why groups called “Code Clubs” for kids aged 8-11 are popping up a a rapid pace all over the EU.
Meanwhile, stateside, we continue to ignore the obvious importance of teaching kids how to program. We continue to claim Computer Science should not be a core requirement, even though so many of tomorrow’s jobs are going to be high-tech, and even though there is strong evidence that early exposure to coding greatly improves people’s ability to program later. In the United States, only 10% of high schools teach programming, and almost no grade schools do. No wonder the overwhelming majority of our Computer Science students come to college with no prior programming knowledge.
I started programming on a Commodore 64 at the age of 13. Back then, programs were relatively simple, command-line-driven applications, without fancy graphics or sounds or databases or internet connectivity. Now, most of our students don’t begin programming until they are 18 or 19. They want to create attractive, connected, social, multimedia applications that run on multiple kinds of devices. These are difficult applications to design and build. But they use these kinds of applications all the time, so they wonder why they can’t build them.
That’s not an optimal recipe for success, is it? The Europeans understand this. Why don’t we?