RE: Unit 1.1.1: Simple Isn’t Easy

In his 61-minute talk from 2011, popular software engineer, Rich Hickey [sic], describes the fundamental differences between what is simple and what is easy. Ultimately, Hickey argues that a lack of simplicity (i.e. complexity) will vastly limit people’s ability to understand our own creations.

Hickey, designer of the coding language Clojure, begins his talk by yearning for the days in which preservation of a word’s original meaning and respect for its etymology were linguistic hallmarks thereof. He insists that modern language has lost some of its value due to what many accept to be a common symptom of linguistic progression. Language, he argues, is becoming less valuable because we, as a society, are letting words stretch and reach in meaning beyond their original references. While many literary aficionados would agree with Hickey’s purist outlook, the majority of modern linguists agree that language must progress, adapt, and change alongside those who speak it. For what is a language without its speakers?

However, as is true in so many cases, neither side—not Hickey, nor professionals — can claim to be entirely in the right. Albeit, more often than not, modern linguists have better insight into spoken language than a software developer of coded language. In this exception, though, Hickey points out that digging into some words’ origins can help us to better understand the world around us. The two words he dissects in his speech are simple and easy — terms often used synonymously and, according to Hickey, erroneously.

Hickey briefly expounds on the origins of the two words and the literal meaning that they once carried. “Simple,” he explains, “is a prerequisite to reliability.… Simple systems are good systems.” In contrast to the original meaning of its antonym, complex, simple should be thought of as a reference to something of one twist, one fold, one dimension, or one focus. That one focus not necessarily being mundane or obvious, but just as it says — a singular focus. Comparatively, easy was meant to describe something that was within one’s reach, or with which they were readily familiar. The key contrast, here, being: simple is an objective term. Easy is subjective.

Being shown the difference between the two original meanings of the terms can serve to remind us of powerful aphorisms that often go forgotten. In our scenario — writing code — Hickey reminds us that what is easy for (“within reach” of) others is entirely dependent on one’s own personal conditions and experiences. Moreover, he argues that “Simple (one dimensional) systems are good systems.” Thus, when we write code, we must put plenty of prior thought and consideration thereinto. Specifically, we must take time to ensure that each line of code we write is simple on its own — less difficult to understand. Not only to make reading that code a more achievable task for others who would find it hard (out of their reach), but also to ensure that we, the authors of the code, can better understand and manipulate our commands by seeing the connections we make among these simple lines to generate something efficient, effective, and brilliant.