I am not a good writer. Every sentence is an agonizing process of construction, deconstruction, reorganization, and rumination in a futile quest to discover the perfect combination of words to express an atomic idea. And despite all of the minutes and misery poured into each word, what I end up with is a partially finished disaster or a loosely connected collection of fragments that might earn me a B on a middle school English assignment. At least that’s how I feel when reading through my own work.
I am a software engineer by trade. I spend the majority of my working hours writing, reading, understanding, and fixing code within complex, monolithic applications. I have no problem designing general solutions to problems and translating them into a high-level language that tells a computer how to react in certain situations. Sure, there are many hours a week spent in contemplation about how to best structure a solution and iterative improvements to a single piece of code but I never feel blocked. Why then do I find it so difficult to write in my own native language, the high-level language that tells my onboard computer how to react in certain situations?
Is my failure a function of time spent? Have I simply spent more time writing code in the past decade than I have writing English? Putting aside casual communication, that might be true. But the casual communication should count for something. My perfectionism when it comes to writing bleeds into my casual correspondence. I want to delight an intimate reader with my words no less than I aspire to delight strangers. Nonetheless, casual correspondence is far less demanding than writing books or long form essays that dissect a particular topic or set of ideas.
So am I just falling short of Malcolm Gladwell’s 10,000 hours to greatness? Without a doubt, I need to dedicate a lot more time to writing before I can expect to even reach a level I might consider barely passable, never mind crafting works of beauty. But how can I spend more time writing when a single paragraph can take hours? And what exactly is blocking me anyway?
Writing for computers and writing for humans have both equally interesting similarities and differences, especially concerning aesthetics. Beautiful code and beautiful language are often defined by the same characteristics: efficiency, efficacy, and insight.
The primary usage of the term “efficiency” in software relates to computational complexity and resource utilization of the executed code. The parallel to human language isn’t particularly evident here but it can be of extreme importance when considering your audience. An equation is a perfect example.
Ask a physicist to write out the most beautiful equation they know and chances are they’ll scrawl out some variation of the above: one form of the Einstein field equations (EFE), also know as the general theory of relativity. To a physicist, this equation is a an elegant description of how gravity is a geometric property of spacetime, the curvature of which is determined by the energy and momentum of the mass and radiation within that spacetime. It is terse, it is efficient, it is beautiful. While I can certainly appreciate the beauty of this equation and what it represents, to a layman like myself, this is not a terse equation. In order to truly understand it I must invest a vast amount of computational resources diving into the details and significance of each symbol. This could take years. A physicist has already performed this work and now the components of the equation have become primitives. A computer also has primitives operations but, unlike humans, it cannot create new conceptual primitives out of higher-level concepts. A terse higher-level program, like this equation, will always be translated into the lower-level primitives for full execution. Therefore it is important to understand the computation complexity of the code one is working with, just as it is important to understand the level of complexity at which your audience is operating. Jargon and acronyms are examples of this. An article in a scientific journal, legal document, and a financial prospectus will all contain high levels of jargon and acronyms that tersely convey complex ideas to their intended audience of experts but can appear nonsensical to the general population. It is at the level of the general population where efficiency in writing as it pertains to aesthetics is most often discussed.
General efficiency in language is the core lesson taught to aspiring writers. Style guides, classrooms, workshops, and blogs alike all repeat the mantra of “less is more”. Use short sentences. Omit unnecessary words. Write simply. Write less. Keep it short. Keep it succinct. Don’t think. The same can be said for code. In software engineering we talk of the “separation of concerns”, “encapsulation”, and “extracting functionality”. Each component of code: a file, a class, a function, a statement; should have a single responsibility within its level of abstraction. This may have a benefit on the resources required to load and run a program, as described in the previous paragraph, but this type of efficiency is mostly for the benefit of the human reader. As in language, a terse, well organized program is easy to understand. To a point. Naming all of your variables with a single a-z character and removing all whitespace makes for terse code but also makes the program exceedingly difficult to understand. Language is the same. We need context. We need padding. More importantly, we need some depth and the occasional irrelevant detail in order to feel engaged. Knowing that “the programmer’s off white cursor slowly blinked against the translucent, black terminal window as their eyes scanned, unblinking, through oddly colored fragments of code searching for the logical error that had resulted in a sudden flurry of bug reports” isn’t necessary to understand the situation when you could just say “the programmer looked through the code to find the error that had caused the recent spike in bug reports”. Not necessary to understand the situation, but more effective at conveying a sense of the scene.
Which brings us to efficacy. Efficacy in software is largely unambiguous: for a particular input, do I get the expected output. Humans are far less predictable. Communicating an idea in such a way that the reader can understand it is the most important measure of efficacy and that can be quantified in a way. But beautiful language goes beyond pure instruction and enters the realm of emotion. Truly efficacious language provokes some sort of general reaction but it’s far less defined.
For my part, when I enter most intimately into what I call myself, I always stumble on some particular perception or other, of heat or cold, light or shade, love or hatred, pain or pleasure. I never can catch myself at any time without a perception, and never can observe any thing but the perception. When my perceptions are removed for any time, as by sound sleep, so long am I insensible of myself, and may truly be said not to exist. And were all my perceptions removed by death, and could I neither think, nor feel, nor see, nor love, nor hate, after the dissolution of my body, I should be entirely annihilated, nor do I conceive what is further requisite to make me a perfect nonentity.
— David Hume — A Treatise on Human Nature, ‘On Personal Identity’
There are infinite ways to express a single idea and have another person fully understand your argument.
“The self and consciousness, upon closer inspection, are revealed to be a stream of perceptions. When these perceptions disappear, so shall the self.”
Both Hume’s quote and my distillation convey the same concept. They are both effective in that regard. But Hume’s is crafted in such a way that he’s not just conveying an idea but an stirring an emotion. Now, because humans are confusingly complex beings, the emotion Hume intended to convey may be lost in translation. Awe, amusement, doubt, or dread; the response of the reader may not be deterministic but what makes Hume’s quote beautiful is that it almost certainly will elicit some sort of reaction.
This also goes to show that, in code and language alike, efficiency and efficacy are a balancing act. Too terse and you’ve lost your style and humanity. Too conceptually effective and you’ve lost your readers (and written an encyclopedia). Too emotionally effective and you’ve lost your substance. Find a perfect balance and you may still be lacking one essential component of beautiful language: insight.
Browse any list of famous or inspirational quotes and you’ll find that they all illuminate some insight about life, existence, or the human condition. These don’t need to be revolutionary or new ideas. The “one neat trick” is not necessarily discovering new insights but crafting an incantation that makes the idea bloom within the mind of a reader as if the epiphany was all their own.
So what does all this mean and why am I talking about beautiful language anyway? Because I feel blocked. And if you either have a professional obligation to write or just a personal compulsion, you may feel blocked as well. And what is the probable root cause of this blockage? Artistic aspirations, the quest for beauty, the drive to create something perfect, something divine, a masterpiece.
If that sounds pretentious and unrealistic to you, that’s because it is. Every sentence does not have to be a masterpiece. Every sentence cannot be a masterpiece. Nor can every article, essay, or book. The aforementioned Hume quote is buried in a dense, philosophical tome; a thing of beauty in its own way but entirely unreadable to the vast majority of people. Sometimes an article or book is interesting because of the ideas it conveys, not because of how eloquently those ideas are communicated.
Slices of literary beauty are like gems. As a reader you need to blast through a mountain of lesser fragments to reach. As a writer, you need to carefully place all of these fragments. But the exact form of those fragments isn’t so consequential. Yes, everything must fit together but that should be in the service of the whole. What’s important is the entire structure, and you won’t finish construction if you agonize over every tiny detail.
There’s a sense that beautiful language is instantly recognizable whereas beauty in arenas such as code or math requires expertise. While this feels true, it ignores the ubiquity of language within the human experience. Before we even open our eyes people speak to us. Our very understanding of the world is constructed through words. And even if ideas can exist without language, it is nearly impossible to transmit them without it. We are all professional communicators of a sort, spending the majority of our lives conversing with other humans about ideas at varying levels of complexity. And that makes beautiful language all the more rare. Imagine going through life attempting to improvise inspirational responses in all of your conversations. If you somehow succeed, you’re going to come across as absurdly pompous. In all likelihood, people will think you’re a mute. But this is what we do to ourselves when we write. Each sentence must be perfect. Make every word count. Follow the elements of style and the advice of every online blogger. Compel, inspire. Pith.
Or don’t. Ignore the rules, ignore the advice, ignore your nagging perfectionism and just write. You need practice. You need to to discover your own language primitives, your style, your voice, the incantations that work for you. You’re going to generate horrid mountains of literary rubble. Keep writing. People aren’t going to read your work and if they do they’ll probably leave nasty comments. Keep writing. Don’t save subjects for later because you want to do them justice. Do them a great injustice and, if you care enough, revisit the topic again later. Keep writing and one day you might create something beautiful.