Is learning to program computers an essential skill for each student? Now let me lay out my experience. In 1963 I got the opportunity to work on an IBM 7090 tape based computer using FAP, Fortran Assembly Programming language, an assembly language that was a base to Fortran. I stumbled over its use in some technical areas and got piles of paper which I eventually had to plot by hand.
By 1966 I had picked up Fortran and Cobol, why Cobol I will never know, and slowly saw other languages. Then over the years Basic, ADA, Pascal, C, C+, etc, then Python, Java, and the list continues. I remember using my Atari 800 with a Basic Interpreter and was overjoyed to play around with it.
Now did I really benefit from this? Kind of, but my thought process was not in any way enhanced by it. I found programming like Chess, addictive and time consuming, you can get hooked. You want to get better at it.
So must all students learn to program?
The first question is; what is programming? Is it Basic, simple equations. Is it Python, with a bit more complex abilities to manipulate strings. I used it to make a DNA to protein encoder. Yet I find I can do a great deal with Excel, yes manipulating it to get answers. And it makes nice graphs.
Now there are entities like Codeacademy and Code to Learn who think we should all be taught this skill. Now I never had shop, yet I did electrical work on houses for my father. And yes I can still do it now, just in case the demand for EEs drops by the wayside. But demand for programmes is different, it can be done in China and India, whereas my electrician skills cannot be outsourced. I have to enter the customers location and apply my skills. Not that way with programming.
As Code to Learn states:
We view coding as a new form of literacy, another way for people to
express themselves and share ideas. Just as learning to write is
valuable for everyone (not just professional writers), we believe that
learning to code can be valuable for everyone (not just professional
programmers). We promote approaches to coding that engage young people
in thinking creatively, reasoning systematically, and working
collaboratively—essential skills for everyone in today’s society. The
ultimate goal is not just learning to code, but coding to learn.
Learning Spanish may be more helpful, it teaches grammar as well. Learning to code may be a distraction unless there is a clear objective. I learned to code to accomplish a task; calculate an equation or plot a trajectory or analyze data. Yet each was a specific task. Coding works in my opinion if task driven, accomplishing something.
Code Academy states:
Hear how Tommy went from knowing nothing about code to building one of Time's '50 Best Websites' after learning with Codecademy.
But one could argue that "Tommy" may have better spent his time elsewhere, learning better social skills, interacting in a social environment, reading about political science. Why do a web site. What is the reward? What is the benefit? Most importantly why everyone?
This in many ways sounds like the rebirth of the New Math post Sputnik. Coding is a skill, useful for some, addictive for some, but highly fungible. It does not assure any future skill. Software techniques change in a real time manner and today's Python will be tomorrows ADA. Also India and China, Vietnam and Thailand are much cheaper.