I’m going to get right to the point: it’s time to expand our definition of literacy to include not only reading and writing, but also numeracy and especially computer programming. If you don’t know how to program (or at least have an intuitive grasp of Boolean logic), then society will soon label you as illiterate. In my opinion, that’s how important this skill is becoming.
In hindsight, I consider myself fortunate to have grown up during the late 1970s and early 1980s – the dawn of the personal computer era. When I was a teenager, I remember using a Commodore PET computer in my Data Processing classes at school, This machine was considered state-of-the-art compared to what we were using before: a Wang minicomputer that was programmed using punched cards, and was shared among three high schools. The following year, my parents bought a Commodore-64 computer for the family and I started to learn the BASIC programming language.
Sometime during the mid-1980s I remember seeing a book called Why Johnny Can’t Program, which was obviously based the well-known book Why Johnny Can’t Read. Its premise seemed a little grandiloquent – elevating the importance of computer programming skills to the same level as reading, writing and arithmetic. Back then, relatively few students took data processing classes, even fewer families owned personal computers, and programming was considered a fairly esoteric pursuit.
As you’ve probably guessed by now, I’ve changed my mind about the book; it was actually decades ahead of its time. I now believe that programming does deserve to be on the same level as literacy and numeracy, because our society has transformed completely during the past 2-3 generations.
- In our grandparent’s day, everything around us was mechanical. If we wanted to know hoe something worked, we could simply take it apart and see how the parts fit and moved together.
- During our parent’s generation, things shifted from mechanical to electronic, and suddenly our gadgets no longer needed moving parts in order to function. However, it was still possible to determine how electronic deviices worked: schematics were often included in the owner’s manual or glued to the inside of the case. If you were familiar with electronic components (and were handy with a soldering iron), then you might even be able to do minor repairs yourself.
- Today, we’ve moved from electronic gadgets to computerized ones. Microprocessors are now embedded in almost everything we use: cars, coffee makers, children’s toys, MP3 players, gaming consoles, stereo equipment, smartphones, and even LED flashlights. Just about everything we use relies on a computer program to function, and since these programs are burned on to IC chips (or EPROMs, in firmware-upgradeable devices) their inner workings are completely hidden from us. There are no moving parts to examine, and even a schematic won’t reveal anything useful. Manufacturers don’t release their source code to consumers, and some companies, such as Apple, even remove the screws from their products, to keep consumers from opening the case and poking around. If you want to know how something works, then you have to study the device’s behaviour and create rudimentary a computer program in your head. You can then learn the rules and even predict how the device will behave in a variety of circumstances.
That’s what I’ve been doing for several years now, and since I know how to program, it’s practically second nature. I’m constantly studying the behaviour of computerized devices, and trying to figure out what their internal programming might be. Then I create a computer program in my head, and then modify it as necessary (whenever I encounter any new behaviour) – it’s what I consider the modern-day equivalent of “getting under the hood”. I also assumed that everyone did this.
However, it didn’t take long for me to realize that not everyone gazed at the world and automatically wrote source code in their head. In fact, it has become painfully obvious that many of us seem to have no clue how even the simplest computerized devices work, such as elevators and traffic lights.
Occasionally when I enter my building’s elevator, someone will complain about what they perceive as the elevator’s aberrant behaviour. They’ll say variations of “I pressed the button for my floor, and for some reason, it stopped three floors below mine. The doors opened, but no one was there. I swear this elevator has a mind of its own”.
There’s actually nothing strange about that scenario at all. If you’re waiting at a bank of elevators (on your floor – not in the lobby) you’ll press the button, and it will illuminate. When your elevator arrives, the button light turns off and the elevator doors open. Occasionally, an elevator will stop at your floor, and someone will exit. This is not your elevator. In this situation, the button remains lit because your request is still pending. However, most people won’t look at the button to see if it’s still lit, and fewer still will wait for “their” elevator. The vast majority of people will simply enter the first elevator that arrives. When your elevator finally does reach your floor, the button light turns off and the doors will now open to an empty hallway. That’s all there is to it – it’s a completely logical sequence of events, and the elevator certainly doesn’t have a mind of its own.
Whenever other residents tell me that the building’s elevator seems to have a mind of its own, I am always tempted to lecture them on Humankind’s tendency to employ (and overuse) anthropomorphism to explain things that they don’t understand, and then teach them a few fundamental concepts in elevator programming. So far, I’ve been able to hold my tongue – besides, the elevator ride isn’t long enough for a proper disquisition.
Pedestrian Traffic Signals
Traffic lights and pedestrian crossing lights are fairly easy to understand. While standing on the corner, you press the button, and after a few seconds the red hand will start flashing. It flashes 10 times, and then remains solid for five seconds. At this point the traffic light turns yellow and then red. When the other traffic light turns green, the corresponding pedestrian light changes to a white persona walking, and then it’s safe to cross.
After waiting at intersections (as a pedestrian) hundreds of times of the years, this is the program I’ve formed in my head from watching the behaviour of the traffic lights and pedestrian signals (the ones without the new countdown timer).
1) The traffic light turns green on the primary street (the one with the highest traffic level) 2) Wait for a pre-defined period (e.g. 30 seconds) 3) After the pre-defined period is over, run the CHECK routine 4) Run the CHECK routine again (every five seconds). .
CHECK ROUTINE * Check the weight sensors beneath the road on both sides of the secondary street. If there is a car on either weight sensor, then start the COUNTDOWN routine * Check all four pedestrian signal buttons. If any of the four buttons has been pressed, then start the COUNTDOWN routine
. COUNTDOWN ROUTINE * The pedestrian signal changes to a red flashing hand and flashes ten times (once per second) ^ The flashing stops and the red hand remains lit for five seconds * The traffic light on the primary street changes to yellow
There’s a little more to the programming of course – the primary wait period may vary throughout the day, based on traffic volume – but those are the basic rules based on my observations. I just assumed that everyone waiting on the street corner beside me wrote source code in their head while they were waiting for the traffic lights to change. Apparently, I was wrong. Here are some things I’ve observed by my fellow pedestrians over the years:
- The red hand is already flashing, but they press the pedestrian walk button anyway.
- The traffic light has just turned yellow. They press the pedestrian walk button anyway.
- The traffic light in the primary direction has just turned green. They press the pedestrian walk button, wait ten seconds, see that the pedestrian signal is still white, and then press the walk button again. A few will press it more forcefully. Some impatient people will press it another five or six times (probably the same ones who press elevator buttons repeatedly).
The Increasing Importance of Programming
Elevators and pedestrian traffic lights are just two simplistic examples, but they demonstrate that there are people walking among us who are not familiar with programming concepts. Hence, they have no idea how these basic machines function. This is evidence of a larger technological shift – in three generations, our gadgets have evolved from mechanical to electronic to computerized. With each passing year, more of the machines that affect our lives are controlled by computer code, and this new reality illustrates why the author of Why Johnny Can’t Program was so ahead of his time. Simply knowing how to boot up a PC and run a few applications no longer qualifies as basic computer literacy. An understanding of programming fundamentals, logic and data processing concepts will soon be as essential as reading and writing, if a population wants to be considered literate.
If you’re not a programmer and feel that you already understand society well enough, then imagine for a moment how confusing the world must seem to a newborn baby. They have no idea what adults are saying, and crying is their primary method of communication. When they finally begin to understand spoken words, their world becomes much more meaningful and exciting. Then, when they can articulate their needs by speaking, their world opens up a little more. Their next awakening occurs when they learn the alphabet and how to read. Up until that point, their environment was filled with indecipherable symbols. Once they assigned a meaning to these symbols, everything around them started to make sense.
I see programming as the next awakening – a new category of comprehension layered on top of speaking, reading and numeracy. It’s as if you’ve been granted a superpower – a form of x-ray vision that allows you to peer into the inner workings of machines, understand how they work, and even predict how they’ll behave under varying circumstances. As our society becomes increasingly computerized, those without this knowledge will soon find themselves living in a new Dark Age – computer-controlled devices will be perceived as mysterious and impenetrable “black boxes” which exhibit unpredictable behaviours, and (according to some of the residents in my building) seem to have a mind of their own.
Although we were all too young to recall how our world suddenly opened up for us when we first learned how to read, I imagine that the transformation must have been profound. Similarly, a solid understanding of programming fundamentals will imbue you with an enhanced perceptual power and a new understanding of the world around you. If you want to thrive in a society that’s run on computer code, then learn how machines process information – this is your new literacy. As Robert DeNiro said in the movie Limitless “tectonic plates are shifting beneath our feet”.