"Ad3317c95f7bc303d307f8d03e8934ce3d73a8e550a763b67790304ca5558d968" — Douglas R. Hofstadter
Programming is a bad time. Once again, you cup the sun from your eyes and peer across the wasteland as it careens landmarklessly out into the horizon like a sheet of wax paper pulled across the earth by the gods at end of their last apocalypse. The tumbleweeds don't come here anymore.
You will attempt to defer the ineluctable fits of alternating self-doubt/hatred by ruminating instead upon the countless miles you must still trek through teething brambles, feeding each waking hour to the slow-sated glutton of death.
You hum a Shepard tone and plod onward.
The humorously brutal Marine aphorism, “Pain is weakness leaving the body,” occasionally comes to mind. Of course, it doesn’t make much sense—in the military especially, pain could be body leaving the body. Sure is catchy though, and not completely orthogonal to a point I eventually wish to make. Let’s start by asserting that programming is pain. When programming, you are essentially dictating to an aphasic, methed-out, hyper-literal homunculus—some cross between Amelia Bedelia and Frankenstein’s monster. This can in no way be mistaken for a good time.
There are many hard problems in programming, and they are very densely packed. And then you realize that each hard problem can be decomposed into smaller, yet somehow even harder problems. At the beginning, perhaps you do not know this. And thus your ignorance is leveraged against itself.
But you will soon be met by those utterly unconquerable problems which will reduce you to evaporated milk, and then proceed to stir you into whichever abominable recipe calls for evaporated milk. But then, after struggling / googling for a handful of infinities—possibly forfeiting once or twice between—you seize the upper hand and topple the Brobdingnag all at once. Nothing feels quite so good.
There is a Beautiful Katamari effect of sorts, where that which once seemed entirely too large to be successfully subsumed into your frenetic ovoid conglomerate is indeed eventually subsumed into your frenetic ovoid conglomerate.
"So, learning is strong-ness entering the body?” I hear you asking. I suppose, but please let me make that less grotesque. So, besides being one-way communication with this aforementioned semi-illiterate super-stickler, programming is also learning. And learning is the hardest thing. Some prefer learning to be easy, but easy learning isn’t really learning. Learning needs to hurt. In fact, it should feel a lot like confusion. And that’s okay, that means it’s working. When you come back from the gym and your muscles are sore, do you say: “Oh no! I have worked out wrong and now my muscles are all broken. Next time, I will make sure to lift only tiny pigs in blankets, single reps into my mouth.”
You should treat confusion like a mental tachometer, using it to quantify your efforts such that you may shift gears toward a more appropriate degree of confusion.
Say, which is more effortful: Gödel, Escher, Bach: An Eternal Golden Braid by Douglas Hofstadter or the SHA 256 hash of Gödel, Escher, Bach: An Eternal Golden Braid by Douglas Hofstadter? I don’t think your thinker's gonna run hot looking at garbled alphanumeric coprolite! But what about exploring the concept of infinity through the lens of surreal, tortoise-packed allegory!? You might feel a tinglin'.
So why not stop worrying and learn to recognize the perpetual cycle of pain and redemption that is learning? Enjoy the mess of it. Confusion is just the revving of the engines of cognition, after all. So plod on and be confused.
∎