As a professor in the iSchool who teaches programming to our undergraduates, I’m writing to tell why you should learn to program. Before I do, I’d like to start with a story from Saturday morning:
At our kitchen table, my 10-year-old son was busy planning out this summer’s entrepreneurial endeavor: his lemonade stand. I’m certain this has something to do with today’s weather approaching 50 degrees. As I stood next to him, watching him scribble numbers on his paper frivolously, he picks up his head and said, “Alexa, how many tablespoons of sugar in a pound?”
Our Amazon Echo promptly replied, “There are 36.3 tablespoons in 1 pound of sugar.”
Oh, how far we’ve come.
After a bit more scribbling coupled with some pensive staring at his calculations, he pops his head up and asks, “Alexa, how many tablespoons of juice is in one lemon?”
Echo: “Sorry, I could not find the answer to your question.”
My son: “Daaaaa-ad? How many tablespoons of juice is in one lemon?”
Oh, how far we’ve yet to go.
I replied, “Let’s juice a lemon and find out.”
As I scanned the refrigerator for a lemon, rifling through the drawers in that manner my wife so despises, my son asked, “Why couldn’t Alexa answer my question?”
“It probably can’t determine there’s juice in a lemon,” I suggested.
“Alexa, is there juice in a lemon?” then he asked.
Echo: “Sorry, I could not find the answer to your question.”
“Why is this thing so stupid?” he asked. “It doesn’t even know there’s juice in a lemon!”
“At one point in your life you didn’t know there was juice in a lemon, either, but you learned it. Computers are the same way,” I explained. “People program computers, telling them what to do. If it’s not programmed to do that, it can’t.” I continued. “They can be programmed to play games, drive a car, predict the weather, or even tell us how much juice is in a lemon. The point is they must be given explicit instructions before they can do anything useful.”
Why everyone should learn to program
This brings me to why I believe everyone should learn to program.
First, as a member of an information society, it’s our responsibility to learn it. Computers are part of our everyday lives. From laptops, mobile phones, cars, gaming consoles, smart devices like thermostats, appliances, and light bulbs, computers are everywhere. They’re woven into the fabric of our existence and will continue to be well into the future.
There was a time where only a select few knew how to use the tools of pencil and paper to read and write, but today we expect those skills to be universal in our society. Programming a computer should follow suit.
The second reason everyone should learn to program is because like the computer itself, programming has evolved, too. This has made programming more useful and accessible to the masses than it ever been. Syntax-friendly languages, like Python, allow you to express complicated processes with very little code. They include package management systems making it easy to do things like place data on maps or send TXT messages.
This makes programming approachable for all kinds of people. It doesn’t matter if you’re an accountant or zookeeper by trade, you can find a way leverage programming. An accountant might write Excel macros to assist her with tax calculations. A zookeeper might write a program to analyze the sleep patterns of her animals. Bottom line here is that whatever you do, I’m confident that learning to program will only make you better at it.
The final reason to learn to program is that it teaches us persistence. It teaches us failure is common, expected, and necessary to achieve success. Failure is not the end of the process, it’s only the beginning, and many great things have been created on the backs of it. This is an important lesson in the on-demand, instant gratification world we live in, especially for my children’s generation.
Programming teaches us to think laterally, or “outside the box” about problems, and to recognize that when something doesn’t work there is something we can do about it. When I ask Alexa something it does not understand, I try several times, re-phrasing the question. My kids think I’m crazy; I tell them I’m persistent.
Understanding it to get more out of it
We need people to program self-driving cars, get rockets to land safely, and add features to Instagram, but these are usually the responsibilities of software engineers, application developers, and computer scientists. This is not the reason I believe everyone should learn to program.
It’s about understanding the abstraction behind how the software and systems work; that it’s not “magic” but merely precise, carefully-crafted instructions. As I pointed out to my son, understanding the abstraction is the key to understanding what you can get Alexa to understand.
Don’t dismiss programming as a technical activity because we program on a computer. It’s no more technical than learning to paint or compose music. Like those disciplines, programming is a creative endeavor with heuristics, or rules which one must follow to achieve your goal. You get to make something from literally nothing, but if you want it to be of value, adhere to those heuristics. Don’t follow the rules and you get just noise, or worse: modern art!
How the iSchool uses programming
We teach programming here in the iSchool for these reasons. After taking the course, students learn to become better problem solvers and systems thinkers as the abstractions of how computers and software work are unveiled. They also learn to write code, of course, as well as read and explain their code to others.
We’re not training developers, but that doesn’t mean our students don’t create really interesting things that solve actual problems. Students demonstrate their projects to their professors and an audience of guests via our open forum called demo day. Students are very proud of their accomplishments, but not as proud as I am. I’ve seen them grow from scared and intimidated to confident and accomplished. It also reminds me why I do this in the first place.
I’ll conclude by saying I never did find a lemon in the refrigerator, but I did find a post on cooking.stackexchange.com that says there are 2-3 tablespoons of juice in an average sized lemon. Let’s go with that.