I recently saw this video on the Scratch website:
The ability to code computer programs is an important part of literacy in today’s society. When people learn to code in Scratch, they learn important strategies for solving problems, designing projects, and communicating ideas.
There is a clamorous call for everyone in our society to learn how to “code” because it’s the new “literacy,” because we live in a digital world where everyone relies on software in one way or another. Mitch Resnick suggests that we can “code” programs using Scratch to express our creativity and learn important skills. I thought it was time to put a new perspective on this matter.
First of all, expressing our creativity in software is nothing new. We’ve been doing it for a long time when we create photo-quality images, when we make videos and animations, when we produce our own music, when we write blogs, when we create our own websites using WordPress and Wix. Now, we can code programs using visual programming tools like Scratch.
But is visual programming what is meant when digital experts exhort us to learn how to “code?” Is this why so many beginners are seeking programming instruction from coding academies and bootcamps?
Of course not. The kind of “coding” that we do in IT using languages like Java and Python and Ruby is nothing like visual programming. The program code we write is usually very complex and bug-ridden. We have to spend many hours and days, and sometimes even weeks, arduously trying to diagnose and repair software defects. These are not tasks for the faint of heart.
I find the term “coding” rather insulting, too. Coding in a programming language is a small part of computer programming, which is a very demanding engineering discipline. I’ve already alluded to software testing and debugging, but there are other vital steps to programming as well, such as solving engineering problems, program design and architecture, applying sophisticated data structures and algorithms, performance optimization, development tool installation/configuration/updates, and software deployment. Users of Scratch, or any other similar software, are pretty much insulated from all of these concerns. Visual programming is intended to greatly simplify the process of software development so that you are never bogged down by all-night debugging sessions and month-long coding operations. Visual programming is easy because of many simplifying assumptions and restrictions; it lacks the flexibility and versatility of traditional programming methodology.
In the real world, programming is hard. Bloody hard.
Is this what everyone in our society is supposed to learn as the new literacy? Is computer programming using Java or Python or C++ in any way comparable to reading, writing, and arithmetic?
When you free yourself from this delusional view, you come to realize a great truth: Most people in our society will never have any need to write a single line of code in their life. They may use Scratch or a similar product, and in that sense they’re “coding.” But this is so far removed from what we understand as computer programming that the call for everyone to learn how to code is utterly insane.
Supposedly, coding also teaches you new problem-solving strategies and a new way to think. I have no doubt that this is true. But guess what? Nearly any intellectual activity in life teaches you similar lessons.
Learning to play chess also teaches you how to solve problems, especially problems of logic and tactics and strategy.
Learning mathematics and science similarly teaches you how to solve problems. So does learning to play a musical instrument. So does learning to solve logic and math puzzles. So does learning philosophy and history. Hell, so does woodworking and auto mechanics. Computer programming is not unique in any way. Logic is logic. The ability to reason is common to all activities.
Should everyone in our society learn how to play chess or a musical instrument, or study astrophysics?
Create your free account to unlock your custom reading experience.