It seems that many people are suggesting we should all learn to program computers and that all children should be taught programming at school.
I guess people see computers and subsequently programming as a preserve of the new nerd elite with stories of young entrepreneurs making millions. It’s true there really is a new industrial revolution happening now and opportunities abound, but learning to program is not the sole magic key to the kingdom.
Programming is a tool to solve problems.
Programming is a very, very wide discipline. There are literally thousands of programming languages. But what is programming? Programming is instructing. It is the issuing of commands to solve a problem. If you type into a calculator a series of instructions like multiply, divide, add and subtract, you are programming. Programmers write their instructions in many languages and store these instructions for later use. Sometimes programming is more an orchestrating job than an inventing one. For instance if you use a number of other peoples functions and services tying them together to do something new. This is still programming.
But here is my point. All this programming is nothing without underlying skills: imagination, research, mathematics, logic and problem solving.
These are the things we should teach. If my children can learn these skills to solve problems they are faced with, then the tools they choose to do it with are almost irrelevant.
The first computer I ever owned when it was switched on had a blinking cursor on the screen and nothing else. This meant “I am awaiting your instructions”. An unimaginative person would struggle to use such a machine.
A lot has changed since then, for the better I might add, but we are still using keyboards to issue our instructions. What will the future bring? I do not know, what I do know is that the laws of physics will remain fairly constant, mathematical techniques will still be relevant and using our imaginations to invent and improve our world will still be a sought after skill. Maybe they will know some of the languages we use now, the C language is 40 years old for example but things will always change. I would like to think that rather than simple instruction sets it will be more of a discussion between man and machine when looking for solutions or sculpting new creations. What will be important is an understanding of the core principles if man is to be a valued contributor to that discussion.
This is why I will teach my children to enjoy science and creativity, help them to understand the principles that govern our world and give them access to as many of the available tools as I can, be they virtual or real world.