*I kinda pity this guy's adult grumbling. No 20-year-old would ever think this way – and I thank God for 20-year-olds. Nevertheless, I respect his moral testament here very much. So much so, that I really feel I must blatantly steal and repost the entire thing.
*It's not just him that's "grown up," it's programming. He's right to say that there are aspects of this huge collaborative endeavor where quirky artisanship gets in the way. And he's also right to say that the passage of time favors simplicity and creates conventions. In fact he's right about a whole bunch of stuff, only...
http://alarmingdevelopment.org/?p=422
Mea Culpa
By JONATHAN EDWARDS | Published: MAY 27, 2010
Reflecting upon my previous post, I am wondering why LISP triumphalists like Paul Graham annoy me so much? Perhaps it is because I used to be one myself, in spirit if not in syntax. And also because I now see them as a major symptom of what ails programming. (((I'm always keen to hear about "what ails programming," even though I'm never gonna program.)))
It is an easy trap to fall into. Programming requires a certain kind of analytical intelligence. Being more intelligent in that way increases your programming ability exponentially. It is emotionally satisfying to think of yourself as a different species from the average programmer. Programming becomes a demonstration of your superior intellect. Surely such powers shouldn’t be wasted on mundane chores, but instead applied to timeless works of brilliant inspiration, to be admired by the common programmer only through protective eyewear. What a load of self-indulgent adolescent crap. In programming as in the rest of life, attitude trumps intelligence. I had to learn that the hard way.
(((I think what he's saying here is that the effort to build a good software structure that lasts has turned him into a drudge. Now he wishes that he had been a drudge in the first place, because he wouldn't have been tripping over the long-term implications of his own smarts. However: if he were a drudge in the first place, he would never have started that effort. He would have gotten some easy grind-it-out job maintaining code, and he would have worked off his creative itch on weekends by playing Scrabble and building Lego installations.)))
My road to perdition was the seemingly noble cause of doing computer science research in the real world. It is in the crucible of practical problems that great new ideas can form. Unfortunately the result was a strange brew of triumph and disaster. I built some systems that were uniquely powerful and far ahead of their time. Yet they were also wildly idiosyncratic, and deeply flawed in some practical aspects. I inflicted a legacy of pain upon the programmers who had to work with my misbegotten creations for decades afterwards. (((It takes a certain nobility of soul to admit this.)))
I too was afflicted. I spent those decades debugging the Frankenstein. In the OS crash debugger. In hex. Because wasn’t it oh so clever and efficient to build a radically new kind of database with extreme reliability requirements as a highly multithreaded kernel extension to the OS? (((I'm sure we all really feel for this guy, except the many among us who have no idea what he's talking about.)))
What may have saved my soul is that I did not sell the company and walk away from my mess. I stuck with it for 20 years, and eventually cleaned up the mess as best I could with a massive migration to a new framework. That experience taught me a lot about what really matters in programming. It is not about solving puzzles and being the brightest kid in the class. It is about realizing that the complexity of software dwarfs even the most brilliant human; that cleverness cannot win. The only weapons we have are simplicity and convention. Tattoo that on your forehead in reverse so that you always see it reflected in the screen. What is truly decisive on the battlefield are attitudes: hard work, responsibility, and paying attention to reality instead of the voiceover in your head.
(((I often hear this sort of thing said in the literary world. You know who those guys are? They are former creative writers becoming editors and publishers. Editors and publishers do all the heavy lifting in literature – or they used to, back when mainstream media existed. Nowadays when I meet an editor I always wanna buy her a drink and let her sleep on my couch.)))
Programming is an embarrassment compared to other fields of engineering and design. (((That's probably because it really isn't much like engineering or design, and rather more like graphic arts or literature, which are SUPER-embarrassing compared to engineering and design, and thank goodness for it.)))
Our mainstream culture is one of adolescent self-indulgence. It is like something from Gulliver’s Travels, with the curly-bracketeers vs. the indentationites vs. the parenthesesophiles. (((I agree that it's like something from Gulliver's Travels – and in a good way.))) The only thing that everyone seems to agree upon is how stupid all the other programmers are. Try googling “stupid programmers”. We have met the enemy, and he is us.
(((The world needs more non-programmers who are knowledgeably sympathetic to programmers and their needs. We need some simple, social conventions like "Programmer Appreciation Day," and the "Humane Elegance in Code Award," and maybe the occasional supportive MacArthur Genius Grant for disturbed Mozart-types who can code upside-down in LISP blindfolded.)))
Programming will not grow up until our culture grows up. We can only patiently and persistently do our part to elevate the level of discourse, and share what wisdom we have gained. (((What a good thing to say. Can't wait to hear what he tells the world when he is eighty.)))
P.S. I deleted a bunch of the cursing, but I think I’ll let the rest stay as a testament to my point. (((Keep fighting the good fight, brother. Integrity is its own reward.)))