« Does "Fewer Failures" Translate to "Greater Success"? | Main | Thinking About Summer Camps »

Does Everyone Need to Learn How to Program?

I suspect that beneath discussions of computing/computer science/computational thinking in K-12, there is an underlying fear that the computer scientists will come along and make everyone learn to program. So here's my perspective on that.

I disagree with those who say that everyone has to program. Their argument goes something like this (based on Douglas Rushkoff): we all use computers and there's a lot of old software out there, our new world and new economy are built on top of the old software, and if we can't understand the old software then we can't possibly take advantage of all that the new world offers and we are at the mercy of those who program because they hold all the power. Rushkoff sees it as a problem that when we got text we became readers, but not writers. I ask: what is wrong with that? We enjoy music but not all of us are musicians. Should we be? We drive cars but not all are automotive engineers. We take aspirin but not all are pharmacologists.

When we think about an informed citizenry, what do people really need to know? Does everyone have to know how to program in order to understand that technology can have built-in biases? Does everyone need to understand programming in order to be a critical user and consumer of technology? The most important thing is that people understand the capabilities of computers, both through analogy to human tasks and through application to problem solving across a range of fields. I would love to see every student aquire sufficient depth of knowledge that they can engage in fruitful discussion about both what we might want computers to do and the possibility of making computers do those things. But not everyone has to have the skills and knowledge necessary to actually make the computers perform accordingly.

Valerie Barr
CSTA Computational Think Task Force Chair


Proportionately few students are able to write or even understand a computer program. Their preference is to remain comfortable in their what-you-see-is-what-you-get world, where all you need to do is put the plug where it fits and then work out how to drive the latest whizz-bang computer application. Most worrying is the trend away from programming and a deep understanding of technology toward producing machine output from ICT products, which were designed and built by overseas software engineers and programmers.

As a high school teacher in multiple subject areas (AP Computer Science, AP Statistics, AP Physics Mechanics, AP Physics E&M, IB Design Technology, and yes, I do teach all of these every year) I've found nothing that beats computer programming as a hands-on way to teach logical thinking and problem solving skills. It's an excellent way to teach the scientific method and compel students to use higher order thinking skills. There is also a big difference between telling a student about "the capabilities of computers" and letting them experience them first hand.

Yes, I do agree that not everyone needs to understand programming well enough to actually design and create software solutions, but failure to provide every student the opportunity to experience programming first hand is a significant educational shortcoming.

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)