The following essay was prepared for a talk I gave at TEDxOU 2014. The talk may be viewed at tedxou.com/phil-dow/.

Learning how to program will change your world. When you learn how to program you develop analytical and critical thinking skills that allow you to see the world differently. You are empowered; you create applications that you have envisioned and maybe even build new businesses around them. Learning to program is democratic; the means are less and less expensive and more and more accessible every day, and it can level the economic playing field. And learning to program is satisfying. You will find new joy in challenging problems and in sharing your creations. But an unexpected benefit of learning how to program, one I think is just as important, is that it leads you from wondering about and wondering if to just plain wonder, from curiosity to awe. Let’s become students of programming for a moment and see how it adds wonder to our world.

Consider language. The first program you will learn to write is “hello world”, a simple application which just prints the words “hello world” to the screen. But the first lesson you learn is that programming languages are picky. What I mean is that a modern computer program is written in something that looks like a weird blend of english and mathematics. Imagine a sentence like if ( a < 40 ) { print(“hello world”); }. That is what code looks like. In order for a computer to understand a sentence like this, it must first be interpreted, and the rules for this are specific.

Now, a new programmer might wonder what happens when she changes something. I wonder if I can move the semicolon? I wonder if I can use single quotes instead of double quotes, leave out a parenthesis or capitalize the word print. The answer is no. These are all mistakes. And at any step in its interpretation, if the code has the slightest mistake in it, the program will not run. Programming languages are unforgiving.

But human language is not. We misspell and we misspeak and we mis-capitalize, we use the wrong words, our meanings are imprecise, we forget commas and periods, we speak too quickly and we… pause in the wrong places. And yet, despite all this, despite these mistakes, we still understand one another, and not just a little bit but enough to share stories and to complete monumental undertakings together.

After you’ve been trained to program with so much care and so much specificity, you realize what a wonder it is that our natural languages work at all. Language, something we take for granted every day, becomes this amazing, unlikely ability that gives you chills when you think about it. And this is what I mean. Learning to program leads you from wondering about the limits of a computer language to awe for natural language.

Now, programmers are a curious bunch. As you learn to program you might find yourself becoming as little stranger. And a misconception you’ll encounter is that programmers have this uncanny ability to miraculously solve problems that no ordinary human can even begin to penetrate. Which is of course ridiculous. Most of the time, seriously, like 80% of the time, we’re just following directions.

Program long enough and you will develop a superhuman gratitude for good documentation. Don’t know how the print function works. Look it up in the documentation. Unsure if you can write that if statement without curly braces? Check the documentation. Program not working at all?! Documentation. And if you don’t, we have a saying for you. RTFM. Read the Manual, which would be RTM. I’ll let you guess what the F stands for.

Having come to this appreciation for documentation, you wonder why we don’t write documentation for everything? And you learn that not everything can be documented, because in so many cases what to do requires a context and personalization for which documentation is not appropriate. How do you make friends? How do you make it through high school? And then college? And then professionally? How do you ask a girl out? And I really wish we had good documentation for this. What do you do when your mother or father becomes terminally ill and suffers in and out of the hospital for months before finally passing away?

There is no documentation for this. But despite how painful and confusing the world can be, as uncertain our way through it, we figure it out, and we keep figuring it out, we keep going, and this is inspiring and not a little wondrous. Life does not come with a manual, and we still do a hell of a job with it. If you can believe it, learning to program and coming to rely on documentation also develops a greater appreciation for all those times, and it is all the time, we find our way in a world which so often just doesn’t seem to make sense.

What about the natural world and humanity’s place in it? Follow me for a second.

As your programming education continues, you learn that, ultimately, a program is a sequence of high and low voltages passing through a circuit and that this involves astonishing scales. Microprocessors, the brains of a computer, which respond to these high and low voltages, are composed of transistors. A transistor is just an electronic switch, like the light switch on your living room wall, except controlled by electricity instead of your finger, and they are combined to perform mathematical computations. That’s right, you can do math with the light switches on your wall. The latest microprocessors contain upwards of 5 billion transistors in a chip that is as small as 25 by 25mm. Imagine 5 billion light switches in this just tiny space. It is an impressive feat of engineering.

Once you are exposed to thinking in terms of numbers and sizes like this, your mind wanders to other domains where that kind of scale, both large and small, is common. Have you ever seen the milky way? At the right time of year, at the right time of night, and in a remote place, look up, maybe wait for your eyes to adjust a bit, and you will see a band of stars that stretches all the way across the sky from one horizon to the other, with a bright middle that is the center of galaxy, 27,000 light years away, each light year being 6 trillion miles. There are an estimated 300 billion stars in our galaxy. 300 billion! That’s crazy! And how many galaxies are there? Another estimated 300 billion. Which means we can guess that the total number of stars in the universe is a one followed by twenty-three zeros.

Talk about scale, you can’t even really think about a number like that, not to mention the distances involved. It is genuinely inconceivable! It seems unlikely that anything would even exist at all, let alone hundreds of billions of stars each in hundreds of billions of galaxies, and that it would lead to this moment, right now. And you realize, whatever you believe, whether you believe in God or don’t, or don’t know what to believe, that the universe, that all of it, that this whole damn thing, that Existence, with a giant capital E is incredible, is wondrous, and that in the midst of it all humanity is this tiny, almost imperceptible dust, that just must be meaningless, it is so insignificant, and yet is so inexplicably full of meaning.

What if learning to program can teach us this. I think it can. Learning to program rouses our curiosity, and that changes our perception of the world. It shows us the amazing, incredible, improbable things going on every day that we take for granted. It leads us from wondering if and how, from wondering about parenthesis and documentation and transistors to just plain wonder, to awe for humanity and for the wider world.

But programming can also take the world away from us. What I mean is that learning to programming requires you to think in certain ways, to understand the world in certain ways, and there is a risk that we close the world off to other kinds of understanding when we think like this.

For example, programmers are trained to solve technical problems. We live and breath problem solving. Eight hours a day, five days a week, or probably a lot more than that, we are being given, looking for and trying to solve problems. Well, what do you end up with when you have a person dealing with problems 40 to 60 hours a week? A tendency to problematize. A person who sees problems everywhere, who understands the world more and more in terms of its inefficiencies and ineffectiveness than for its beauty and for its idiosyncrasies.

There is a risk that the kind of emphasis on problem-solving you see in programming creates individuals who cannot help but see the world, our place in it, and so much of what we do as individuals and as a society, as a problem to be solved, and more, a problem to be solved with technology. And that is a narrow view of the world.

We have seen that learning to program develops the ability to think with precision and specificity, and further that programming languages require this kind of specificity. To produce and then understand an operation in a computer program is to identify its canonical interpretation, the single correct one. The statement if (a < 40) print hello world checks if a is less than 40 and if it is prints hello world, and that is all it does, and that is all it will ever do, and to understand it in any other way is to understand it incorrectly. This is what I mean by specific: definitive interpretation. All computer programming is like this. It is language, yes, but it is logical and mathematical in a way that natural languages are not.

This kind of thinking, this kind of precision and clarity and assured understanding, is seductive. There is the risk that once we have learned to think this way, we then desire that all thinking and all language, and maybe even all behavior and that the world itself, be so well-defined, so clean. But thinking, language, the world are not so unambiguous. The world and our actions in it are ripe with uncertainty, and I would argue that this is at times productive.

We are stardust from one star out of billions and billions and billions in trillions and trillions and trillions of miles of empty space. Does that make our existence meaningless or all the more meaningful? How do you even begin to understand the human condition let alone resolve it, and yet so much of the human endeavor, art and religion and philosophy, science, literature and music, address just that question. A story means one thing when you are a child and another when you are adult, and that story is intentionally open to many interpretations so that we can learn different lessons from it at different times in our life. Moral ambiguity speaks to those decisions that are almost impossible to make because there is no clear right or wrong in some cases and we must recognize that.

In general, thinking and speaking could stand to be more precise, no doubt, but precision is not always appropriate. If we restrict thinking and language to the specific, as we must when we learn to program, we risk closing ourselves off from those experiences which are open to interpretation, where uncertainty is essential.

But there is a more serious risk. The interactions with technology that are so mundane to the programmer are interactions that all of us experience every day, and they are changing us, without us realizing it, in ways that are disquieting.

When a programmer has been working on a problem for hours and just cannot solve it, he can stop and walk away. He can ignore it. Or more likely he can persevere and force a solution through the sheer application of his intellect and will, hammer on the problem until it is solved. This manner of doing things represents a wider kind of relationship we have with technology. When the dvd player won’t work, you can just forget about it and go do something else, maybe even replace it, or you can literally bang on it until it starts playing again. But this is not how we interact with one another. We do not ignore our friends when they need us and we do not just bang on others until they do what we want.

We interact with technology differently than we interact with each other and the world. I’d characterize it as lopsided, in contrast to more reciprocal forms of interaction, as more self-centered. We curse at our phones and computers, but they do not curse back at us. But curse at a person… We turn our computers off when we want, but we cannot just turn each other off, and we cannot turn the world off. We pour our hopes and our dreams into technology in search of self-realization, meaning and connection through it, we develop feelings for our iPhones, we may even talk to them, but they do not share their hopes and dreams with us. Technology does not feel for us, and it does not converse with us or listen to us. But when I share my aspirations with a friend, I hope she listens, and she in turn hopes I listen when she shares hers with me. Our emotions are reciprocated, and we have conversations with each other instead of at each other.

There is a risk, especially to those who work with technology professionally and so for most of their waking hours, but also to all of us now that technology has become so ubiquitous, that as we interact more and more with technology and with each other through technology, we begin to treat each other like we treat technology, in this lopsided, self-centered sort of way. We can ignore notifications, status updates, voice messages, SMS’s and emails from our colleagues. When we’re bored of the discussion at a meeting we can pick up our phone and browse the internet instead, ignoring it. When we stand in line we pull out our phones and play games or check status updates, withdrawing from the world around us. During the commute we can put on our headphones and let the world and everyone else in it melt away, turning off our our surroundings insofar as we can. Technology makes it is so easy to amplify ourselves and to disregard others, and when this happens we lose a great deal of what is meaningful in the world.

But technology is not only changing how we behave. It is changing us physically. And, again, although the computer programmer may experience this more acutely than her peers, it is happening to all of us even if we do not realize it.

A few months ago I tried to stop checking my phone so habitually. I made a conscious effort to resist the seemingly random but common impulse to grab my phone and check my email or idly browse the web. What I discovered was alarming. I noticed it most when I was driving. When I drive I take my phone out of my back pocket and set it in the passenger seat. I’d be driving down the highway at 70 MPH or stopped at a red-light, and bip! out of nowhere the thought pops into my head that I should  check my phone, and instinctively I’d reach for it. I had to catch myself reaching for it. And this was hard. Before long, I realized I think about checking my phone more often than I think about sex! How is that normal for a thirty-two year old male!? Six years ago I didn’t even have a cell phone. Now I can’t stop checking it. How did this happen?

It started with the ringing. The phone rings, I want to know who’s trying to reach me, and I grab for it. Or a new email arrives and it dings. Ooh, an email! Let’s check my email, whatever else I happen to be doing right now. And when I do I experience a nice little reward in my brain, a brief moment of neurological pleasure. But eventually, that bing! was no longer necessary. I’d hear a phantom ring or feel a phantom vibration and check my phone only to see that no one was calling me. And not too long after that, I was just checking my phone spontaneously.

In the end my brain had replaced the external stimulus to check my phone with an internal one. I was generating the impulse myself. Let me be clear what this means: My brain was physiologically altered so that it subconsciously generated the impulse to check my phone rather than the phone doing it. My iPhone changed my brain. It is Pavlovian. Only the dog has the bell and he can ring it any time he wants. But that’s not really true. The bell has been embedded in the dog’s brain and is ringing out of his control.

We shape our technology, without a doubt. But technology also shapes us, we adapt to it, and more often than not we are not aware that this happening or exactly how it is changing us. And when technology changes us, it changes how we perceive and interact with the world and with each other.

When you learn how to program you will change your world in amazing ways. You will discover wonder in the mundane. When you use technology, your world is already changing, whether you realize it or not, and in ways that are unsettling. Let us become more aware of how using technology, how thinking technologically, both adds richness to our world and takes some of its richness away.

Leave a Reply