Magazine / The “Why” of Code: Reclaiming Tech for Humanity

The “Why” of Code: Reclaiming Tech for Humanity

Arts & Culture Book Bites Technology

Samuel Arbesman is a Scientist in Residence at Lux Capital and the author of several books. He is an xLab senior fellow at Case Western Reserve University’s Weatherhead School of Management and a research fellow at the Long Now Foundation. His writing has appeared in the New York Times, Wall Street Journal, and The Atlantic. Previously, he was a contributing writer for Wired.

What’s the big idea?

Computers, coding, programming—we have come to associate these terms with certain fields (like engineering) and not with others (like art). But computing is a thoroughly interdisciplinary practice that weaves every domain of life together. By expanding our perceived scope of programming, we can broaden innovation and gain a deeper understanding of our own humanity. There is a magic to code, both within its engineering and well beyond.

Below, Samuel shares five key insights from his new book, The Magic of Code: How Digital Language Created and Connects Our World―and Shapes Our Future. Listen to the audio version—read by Samuel himself—below, or in the Next Big Idea App.

https://nextbigideaclub.com/wp-content/uploads/BB_-Samuel-Arbesman_MIX.mp3?_=1

1. Computing should be a liberal art.

When people think about computing, or the nature of code, it’s often within some sort of engineering confines. But when I think about computation, I see it as something much broader. Computing is not just software. Understanding it combines mathematics and logic with language and philosophy. It weaves in biology, simulation, how we think, and how we make art. Code and computation is a kind of universal solvent, drawing in basically every aspect of our experience, from ancient myths to how we think about physics.

Thinking about computation as a liberal art is vital. If you keep everything siloed, you’re going to be hamstrung in trying to figure out how we might engage with this technology. We need to view computing as an all-encompassing, humanistic discipline to understand it properly. Doing so might even repair our relationship with technology, no longer viewing it as something to be skeptical of, worried about, or seen as an adversary. It can certainly be these things, but it can also be much more: a source of wonder, delight, and connection.

When I think about working with computers, I think about my family’s experience with the Commodore VIC-20, or the first time I ever used a mouse on a Mac, or experienced the Internet, or played with screensavers, or saw a computer model of simulated flocking birds. These were unbelievably exciting experiences. And they were due to the strange and interdisciplinary abilities of the computer. Of course, issues around social media and AI are concerning, but there is also much potential. If we are deliberate about how we think about technology, we can make sure that what we build makes us the best versions of ourselves, rather than the worst.

2. Computer code is real-world magic.

As a society, we yearn for the ability to use words and text to coerce the world around us. We have yearned for this sorcery from ancient traditions of magic to our fantasy stories. Less than a century ago, this desire became a reality with the digital computer: we created the ability to write code that could act in the world. Code is magic made real.

In our stories of magic, magic doesn’t necessarily just work. Magic takes craft and effort. You must go to Hogwarts for years, after all. So too with programming: there is art and science here. The power is deeply connected with precision.

“We have yearned for this sorcery from ancient traditions of magic to our fantasy stories.”

Names for magic control is a common idea in our stories of sorcery: know a name and you can control something or some force. There are some interesting parallels with variables in computer code, where understanding a variable’s nature and scope is a sort of power. There are even global variables, which programmers are counseled to avoid since they are far too powerful.

Sacrifice is also a common theme: something of value must be given for magic to work. An intriguing example of this in computing is the fact that to train our massive AI systems, we must give them humanity’s creative works. This seems kind of like a sacrifice.

Ultimately, thinking about magic is more than a fun analogy: it can teach us something about computation. With great power comes great responsibility. Let us not ignore the power inherent in the real-world magic of code.

3. Programming languages are for people.

How computer programming works is a moving target. What might have once been writing ones and zeroes has become strings of text. Programming languages have come and gone. We are now generating software in collaboration with AI servants. These are all part of a tradition of trying to take half-formed ideas of what we want machines to do and turning them into this strange material of code—text that can act.

Whatever language we use, we must remember something noted in the seminal computer science text Structure and Interpretation of Computer Programs: “programs must be written for people to read, and only incidentally for machines to execute.” Programming, and programming languages, are for people.

“The need to learn new languages, both natural and computational, feels very human.”

Just as humans communicate with different languages, programmers are surrounded by a profusion of languages too, from Python and Perl to JavaScript and C. It almost feels like new programming languages crop up like weeds, with new things to learn all the time. Whether entirely new human languages or new jargon or slang that each of us feels compelled to understand, the need to learn new languages, both natural and computational, feels very human.

There is also a deeply human aspect to code itself. Different programming languages and different programmers have unique styles. There is even a book entitled If Hemingway Wrote JavaScript. The language of Perl was developed with ideas from natural human languages in mind, emphasizing a need for lots of ways to express yourself. Its creator, Larry Wall, noted, “I’m a firm believer that a language—whether it’s a natural language or a computer language—ought to be an amoral artistic medium.”

Engaging with machines is a strange thing, something that blends how we think and communicate with a need for logic and precision. It also bridges the gap between the machine and the human. As much as we think of it as a process devoid of humanity, it is very much the opposite. Programming languages are for people.

4. Building software is like sharing ancient mythological stories.

Over time, ancient mythological tales evolved and were altered in their retelling, with bits added and removed, while the parts that resonated with audiences stood the test of time. As a result, we have many versions of Hercules and Zeus, Odysseus and Apollo, and the ones that spread are often the most exciting and compelling versions. This relates to how we think about innovation, where new ideas, products, or stories are generally created from preexisting components.

This is not so different from how software is built, and in particular, open-source software. Like an ancient tradition, open-source software might be part of a community, modifying and changing what has come before it. There is a balance between preserving what came before, fostering innovation, and creating something new. All this needs to be part of a community, whether we are thinking about stories or code.

“There is a balance between preserving what came before, fostering innovation, and creating something new.”

Open-source software, by being able to be built upon, continues to allow for open-ended innovation in software more generally. No one needs to start from scratch, whether we are talking about myths or apps. The evolution and maintenance of ancient Greek myth is no different than Unix, and just as exciting.

5. Debugging teaches humility.

Writing software is rarely an act of pure creation. More often, it is an act of frustration—or at least correction. Making software that works is really hard. Code is rife with bugs, glitches, and unexpected behavior. Shortening the distance between how you want something to work and how it actually does—debugging—can be quite exasperating. But it is a way of life for the programmer.

Through debugging, we can learn something about humility. It allows us to recognize the limits to our understanding of large and complex systems. Human minds are quite limited, and debugging makes that abundantly obvious. Whether it’s realizing that our counting was off by a single digit, or forgetting how our systems are not entirely text and ethereal but sometimes deeply physical (wires and cables and microchips that can fail), and so much more, debugging is almost a monastic activity devoted to teaching the limits of humanity.

Debugging can also be incredibly eye-opening, revealing that the world is weirder than we realized. Many stories about glitches teach us this, from Wi-Fi being affected by the rain to a helium leak in an MRI machine that was affecting iPhones. There is even a story about emails only sending within 500 miles, which, when analyzed, involved software and the speed of light.

Bugs in computers are a certainty, so at least let them teach us something: we are not angelic beings, but imperfect creatures. We are human.

Enjoy our full library of Book Bites—read by the authors!—in the Next Big Idea App:

Download
the Next Big Idea App

Also in Magazine

Sign up for newsletter, and more.