For novel ideas about building embedded systems (both hardware and firmware), join the 28,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype and no vendor PR. Click here to subscribe.
By Jack Ganssle
Published on embedded.com, February, 2014
According to this article and hundreds like it recently, all kids should learn "coding" in elementary school. The argument usually claims that software is so important that everyone needs it to be productive citizens in the 21st century.
By that argument, of course, we better teach them all molecular biology, electronic engineering, quantum mechanics, Chinese, and a hundred other subjects. Designing a curriculum means choosing, narrowing down the universe of subjects to those most important for a particular grade level. I salute any youngster who wants to learn coding or any other subject. But it's foolish to think everyone needs this skill. However, an educated, effective citizenry does need good reading skills. Basic math (at least). History. It's critical to learn to use a computer (though most kids get this at home), but designing one is much less important.
From the article: "Coding teaches problem-solving, communication, and collaboration, Resnick says." Sure. And have you heard the old joke that an extroverted engineer is one whom looks at your shoes instead of his when talking to you? If coding teaches communication, why are engineers such famously-poor communicators?
Coding can teach problem solving. Ditto for math and the sciences. As does a carefully-taught English composition class. The latter will be of far more use to pretty much everyone than some misremembered Python syntax.
Then there's the problem of confusing correlation with cause. I agree that engineers are good problem solvers. But is that because we learned to code/design? Or were we drawn to it because we are good problem solvers?
The there's this : "Coding is the new literacy... How are America's schools preparing youth for digital citizenship? Unfortunately, it remains focused on the 3Rs (reading, writing, arithmetic), while the ability to read, write, and manipulate code is quickly becoming more relevant."
This argument, while trashing the three Rs, is simply incorrect. The ability to manipulate code is relevant only to that small segment of the population that needs to do so. The last thing we need is hordes of barely-competent Java people with no knowledge of software engineering tearing up a code base.
As I write this Code.orgs' welcome banner claims over 939,000,000 lines of code have been written by students. It's a meaningless metric.
Perhaps they haven't mastered loops.
Code.org is one of the few voices that carefully says they are not promoting coding per se; rather, they want the world to learn about computer science. Few others make such a distinction, and in talking to "civilians" over the years I feel most of them believe software engineering is all about sitting in front of a computer 8 hours a day writing code.
One argument is that coding is fun (though I'd imagine only for a subset of kids) and that fun will translate into engineering as a career choice later in life. No doubt there's some truth there. Teach your kids about software, if they are interested. By all means form after-school coding clubs. Do mentor the young who are interested.
But don't think coding is an educational or societal silver bullet.
What's your take?