What You Are Missing:
The Importance of Learning Code
John Naughton (The Guardian)
Instead of educating children about the most revolutionary technology of their young lifetimes, we have focused on training them to use obsolescent software products. What we forgot was that cars don’t run the world, monitor our communications, power our mobile phones, manage our bank accounts, keep our diaries, mediate our social relationships, snoop on our social activities and even – in some countries – count our votes. But networked computers do all of these things, and a lot more besides.
The biggest justification for change is not economic but moral. It is that if we don’t act now we will be short-changing our children. They live in a world that is shaped by physics, chemistry, biology and history, and so we – rightly – want them to understand these things. But their world will be also shaped and configured by networked computing and if they don’t have a deeper understanding of this stuff then they will effectively be intellectually crippled. They will grow up as passive consumers of closed devices and services, leading lives that are increasingly circumscribed by technologies created by elites working for huge corporations such as Google, Facebook and the like. We will, in effect, be breeding generations of hamsters for the glittering wheels of cages built by Mark Zuckerberg and his kind.
Programming Supports Innovators
Programming is a basic literacy
We live in a society where everyone uses a cell phone or a computer, with most using both. Today’s kids live in a very different world than their parents did as children. Today’s world is full of web services – Youtube, Netflix, and Facebook are all a key part of kids’ daily lives. Even the toys they play with are digital and many are programmable, such as Legos and the new-generation LeapFrogs, which have sensors.
It is one thing to know how to use these programs. It’s another, however, to understand how the logic behind them works. This is a challenge today’s kids will love as it deals with the digital world they inhabit. Knowing how to program helps kids understand and tinker with the world that they are living in.
In the future, the amount of technology and our reliance on it will only increase. The students of today need to be able to not only consume this technology, but to understand and control it.
Stop Teaching Programming,
Start Teaching Computational Thought
School administrators and educators are currently zealous about the idea that every student should learn computer science. “Think about the world we live in now,” says New York Mayor Bill de Blasio, “Hundreds of thousands of good jobs will be accessible to those with coding and other essential skills.” I agree that everyone should learn to program, but I disagree with Mayor de Blasio’s motivations. You shouldn’t learn to program in order to get a good job. Learning to think computationally can give you a new way to understand and describe your world. Learning to program can make you a more expressive person.
We express ourselves in many different forms, and each form has its core elements. Musicians rely on pitch, rhythm, and timbre. Visual artists and designers use color, form, and scale. Performers use movement, gesture, and timing. Computational thinking is another form of expression, and it rests on a set of core elements as well: Inputs and outputs connect a computer to the rest of the world. Variables keep track of important properties, like temperature, bank balances, or button pushes. Conditional statements define what to do when one of the properties changes significantly (for example “if my bank balance drops below $10, email me”). Various forms of loops are used to continually check for changes in a system’s inputs and to update its outputs. Functions combine several statements into repeatable actions. These concepts underlie every form of programming.
If you like to make things, you probably either design them with computers, or you put computers inside them. You may think you’re just a novice, but as you use these tools, you’re learning to program. If you think computer programming is all about math, you’re wrong. It’s about describing a situation precisely, and giving good directions for what to do when conditions change.
Consider these everyday moments:
» If the temperature goes below 65°, turn on the heat
» When the drum solo starts, mute the guitar track and spotlight the drum kit
» It’s just a jump to the left, and then a step to the right. With your hands on your hips, you bring your knees in tight.
All of these statements embody computational thinking. They could all be programs.
Computational thinkers aren’t just programmers. They’re the people who can create lovely intricate patterns in Illustrator, or make a really cool gizmo in Minecraft, or make a MIDI synthesizer play crazy microtonal jazz solos. They understand not only how to make a computer speak, but they also have an imagination for what it could possibly say. People often ask, “What language should I learn?” There is no right answer because you’re going to learn several if you start programming. Pick something that computers are used for that excites you, and find out what languages are used to make it happen. With each new application, you’re likely to learn a new language, and you’ll become a better programmer and a better computational thinker as you do.
Speaking and writing isn’t just something that linguists do, nor should programming be something that just computer scientists do. So learn to program. Like any form of expression, it will widen your view of your world as you learn to master it.