If you’ve never learned to code, to program a computer to do something, I recommend you give it a try. While I wouldn’t describe myself as a professional coder by any stretch, I know how to automate tasks I normally perform manually, scrape web pages for information, and program the machine to do other interesting, helpful things.
The act of programming is a liberating feeling and everyone should try it at least once or twice. But coding isn’t an end in itself. Too many times we get caught up in teaching people how to code without thinking through why we’re teaching the skill at all. What coding does, what it has forced me to do over the course of my life, is develop my ability to think computationally. Coding as a skill — as a way to get a machine to perform some task — is secondary.
Computational thinking is the true benefit.
My first computer was a Radio Shack TRS-80 Color Computer 1. My mother gave it to me when I was seven or eight years old. It possessed 16K of RAM, but had no storage capability, no hard drive or floppy disks. In order to store any code I had written (which was in the BASIC programming language), I used a cassette recorder.
I can remember spending long hours at the keyboard, typing line after line into my PC, only to get it to print out a smiley face on the screen, or play a game of tic-tac-toe. But the act of creation, of telling the machine to do something, was freeing. I could create, without limitation. And perhaps more importantly, I was developing a way of thinking that, in the future, would enable me to better solve problems that didn't involve the computer at all.
Coding is not a pretty thing. It’s messy and fraught with failure. I have never written a script or program that worked exactly the way I wanted it to the first time. Most first (and sometimes second, third, and fourth) attempts at writing a program are loaded with syntactical and semantic errors. Programming requires the coder to identify and fix those errors in order for the program to work. It can be a frustrating process, but it teaches critical thinking in a way that other activities cannot.
The CEO of Sphero, the company that developed the BB-8 toy robot of Star Wars: The Force Awakens fame, argues that coding allows us to learn from our mistakes. “It introduces the methodical process, how to go back and fix things,” Paul Berberian says. “There's no computer programmer in the world that gets it right the first time.”
Coding also requires the programmer to look at problems and their solutions in unique ways. Dubbed computational thinking, this problem solving process is the true benefit of learning how to code. According to the BBC, computational thinking “allows us to take a complex problem, understand what the problem is and develop possible solutions. We can then present these solutions in a way that a computer, a human, or both, can understand.”
There are four key techniques to thinking computationally:
- decomposition — breaking down a complex problem or system into smaller, more manageable parts
- pattern recognition — looking for similarities among and within problems
- abstraction — focusing on the important information only, ignoring irrelevant detail
- algorithm development — developing a step-by-step solution to the problem, or the rules to follow to solve the problem
That is, “computational thinking involves taking that complex problem and breaking it down into a series of small, more manageable problems (decomposition). Each of these smaller problems can then be looked at individually, considering how similar problems have been solved previously (pattern recognition) and focusing only on the important details, while ignoring irrelevant information (abstraction). Next, simple steps or rules to solve each of the smaller problems can be designed (algorithms).”
In the end, by solving the smaller problems, by tackling complexities in small, solvable chunks, the larger, complex challenges we face, whatever they are, can be eventually resolved. And this is the value of coding.
To be sure, learning the skill of coding will get you a job and a salary. But, more importantly, it will develop in you a way of breaking down problems into more manageable, solvable tasks and allow you the freedom of understanding that you can eventually resolve those challenges that seem overwhelming at first.
Do yourself a favor. Pick up a book on how to code. Commit to spending time learning how to program. It will change the way you view the world.