There is a certain type of person who enjoys the most technical aspects of software sufficiently to build a life upon them. This mythical superprogrammer lacks the romantic danger of the blackhat hacker, yet matches his darker counterpart in skill and intellect. The superprogrammer can outprogram all of his colleagues and disdains promotion to management. The superprogrammer will routinely shut himself away for days, emerging with with a work of utilitarian beauty only he could ever understand. The superprogrammer is every businessman’s dream – all of the skill and motivation upon which to build the company and none of that Napoleonic ambition to take it away.
I once thought I was a superprogrammer, albeit with that deadly streak of ambition. I was a physics major then, so everyone else assumed I had a professorship solidly before me. I thought then that I was a terrible physicist but not so bad with computers. I programmed often in spare hours, learning computer languages for the feeling of intellectual superiority it gave me and constantly churning out my next idea for the smallest next big thing. I remember the night that I first “finished” a software project, a complicated intertwining of threaded AVL trees and gap buffers that would power the secure self-tracking filesystem of the future. Triumph soon degraded into exhasperation at what I still had left – user interface, system integration, installation…
I never finished that piece of code. It’s probably still on at least 2 of my backups from God knows when. That winter was the first time I tried to take the upper level of modern algebra (a great course for those who want abstract, general mathematics) and found myself lotteried out. A little alteration in the brain shunted me out of the trap, and I took acting instead. Something about being on stage changed me as a person, or really just brought out the person in me that had been buried under grades and IQ tests.
I was a member of the creative writing club soon later and immediately proceeded to do what I did best and learn fast. I’d always procrastinated the desire to write until it had some social purpose. Soon the rejections piled in, from the college program and the relevant competitions and even those closer to me. I kept writing, because it was too late not to. I didn’t want to stop. Ideas just happened, and they wound up in stories.
It took me another year to figure out why I wanted to be a writer. When I hack out a line of code, there is that compilation->run->test cycle that gives me green lights and tells me that I’m brilliant. It’s the report card every few months, the Pokemon cards I used to get as a kid in return for my good grades and meek behavior, the robotic authority that constantly says yes with so little effort. It’s the girlfriend I never had, the father I’d learned to internalize and the God I’d learned to fear all wrapped up in beeping lights. Writing does not do this for me. It takes a complete work before validation meets satisfaction, and even at that I should always strive to find someone to read it. Or should I?
When I write, I often lie to my readers. I don’t mean this sinfully or confessionally, but practically. Code is neither girlfriend nor God nor father, but I have written that it is, because that is true in my version of the universe. My compiler also lies, because it tells me that everything is ok when the business is failing, tells me I’ve accomplished something by wasting more time on features no one will ever use, or tells me I’m wrong when that line should have been legal. It’s worse than that. It hands me what has slowly become an empty validation. The degree offered by this terminal grants no privileges or value in life except that directly related to what I’ve just typed, and yet it has the nerve to light up green and tell me that something was “successful.” It has not been the first to lie to me this way, but I wish it were the last.
Code is full of semicolons and brackets, or parantheses with fully-defined evaluation order, or maybe function call syntax and overloaded operators. None of these mean anything to me – they are all boilerplate parts of the language; a decent programmer could look at well-written C with the brackets removed and know immediately where they should go. Despite the vapidity of these constructs, the compiler insisted on triggering that little reward/punishment mechanic until I associated neither with anything but nihilism and empty symbols.
Writing, on the other hand, forgives. It does not much care whether what I have written is sound or valid – that’s up to the reader to pass along their prejudices. Writing lets me branch out and reach the same way that I can on stage. Writing lets me wander through the city with vague destination. Writing encourages me to express the momentary and subjective truth that happens to meet my hands on the keyboard; it does not bully me into thinking about its future propriety. This is not to say that writing lacks grammar, but that on some level, grammar is still a choice. I have written words made of numbers before, stories without protagonists and long strings of punctuation meant to express the feeling of information without buying a narrative on top. Writing asks that I choose well, while programming requires that I choose correctly.
I want to reach out with my mind and bend reality. Even in a virtual world, I still have the urge to send forth tentacles of thought into the abyss and work the shapes and colors into form and void. I care not for the validating return of properly-placed semicolons; it feels like driving over a speed bump on the road to nowhere. Some hackers claim not to feel it in their favorite language, but I find this feeling universal to the trade itself.
Sometimes I wonder if the superprogrammer even exists. A part of me wishes to blame business for this urban legend, but I empirically believe it to be true. Regardless, the superprogrammer is a societal pariah in his own way – unlikely to partake in the pleasures of the rest of us, the superprogrammer carries the weight of society purely for the joy of labor.