I used to be a programmer.
Wait, come back. I’ll try to make this interesting.
Over the past decade I’ve coded websites to sell things both useless and useful. To matchmake lonely hearted singles, educate university students and deliver workplace training. I’ve coded spy games for children, sprawling eLearning systems, dinky little novelty sites. And (sorry) countless advertising emails.
These days I’m more of what you might call a dabbler but I still like to dive in and write some code when opportunity arises. Whenever I do, I’m reminded of just how wonderful it is to be immersed within the buzzing, humming universe of an evolving computer program. People who don’t code rarely expect this but for all of its technical rules and structural discipline, programming at its heart is a richly creative activity.
It’s a common misconception to think that programming and creativity are worlds apart. The assumption is grounded in a fundamental but incomplete truth: A computer program is an exacting set of instructions for a very dumb machine. This, or something like it, is the standard definition. There is no room for imprecision in software. No place for double-meanings or subtext.
But the way coders develop these precise systems is not a direct one. No two programmers will ever produce identical code, not even if the final software appears from the outside to be the same. Give ten novelists a plot summary and they will each write you a different story. Give ten programmers a functional specification and each one will produce something unique, an expression of their own voice as a programmer.
It helps if you forget about the purely functional definition of software as an end product. Instead, consider programming as a process. An architect may ultimately produce a set up blueprints, but to arrive at them requires consideration of space, harmony, light, materials, purpose, environment. The blueprints, as unflinchingly technical and mathematically precise as they may be, are the result of a deeply creative process. In the same fashion, programming is not really the practice of writing lines of code. It is the art of taking big, intractable problems and breaking them down into ever smaller ones which can be understood, explained and then carefully assembled into a living, breathing work of art.
Software is poetry. It’s the expression of ideas in the most elegant form a programmer can devise. Like a writer who chews the texture of words, rolls them against the tongue, seeks out the just-right way to tell each part of their tale, a programmer creatively employs structure and syntax of language to address problems, to arrange the sequence in which they are solved, assemble them into a story.
When you’re programming there are moments of sublime focus. At a practical level you’re writing a list of instructions, stepping line-by-line through the solution for a single current task amongst the thousands which collectively make up a computer program. The syntax rattles off the keyboard as easily and automatically as your lips and tongue shape words in conversation. But while this mechanical, mundane act is happening there is something magical, something wonderful, taking place deeper in your brain. You can see the system you’re building, the scope of it. The relationship between each piece of data, the functions that process information, the flow of information as your code corrals it down this pathway here, assesses its value at that intersection over there, re-routes it for processing in a factory you’ve purpose-built. It’s not lines of code on a screen, it’s as real and physical as a sprawling city.
The thrill of this is hard to explain. It’s an act of creativity that ignites you. You’re holding dozens of threads simultaneously in your mind, like a writer simultaneously juggling the broad macroscopic concerns of plotlines, character arcs and pace with the minutiae of sentence structure, the rhythm of three syllables vs two, weighing the beat of a comma against the finality of a full stop. The largest and smallest of scales collide and you are lost within it, completely absorbed by it. And it’s electric.
This is why I programmed for so long. Why I still return to it now and then. To find each time those same fizzing sparks of magic that i get when I compose a photograph, write a satisfying sentence, disappear inside a book or close my eyes and let a piece of music fold itself around me. It’s not because I’m a geek (although, let’s be honest, I am). It’s because I find no greater joy in the all the world than to create or lose myself in something beautiful.