Note: This blog is mostly read by family and friends, but I wrote this more for my fellow programmers. Knowing me, it’ll be taken the wrong way by both groups of people. :-) By the way, see the first comment for a book give-away!
In politics, dictators are usually tyrants. Strictly speaking, however, a dictator is simply someone with absolute power (or at least the final say) in major political issues — in theory, you could have a dictator who uses his power for good. Human nature being what it is, theory rarely plays out in practice, and eventually all political dictators turn bad.
But in the programming world, it’s different. There’s this term BDFL — Benevolent Dictator For Life. A BDFL is the creator of a programming language or other software project who sets the direction for the project and has the final say in which features stay, and which go away. “Benevolent Dictator For Life” was first used as a title for Guido van Rossum, who invented my favourite programming language, Python.
Perhaps surprisingly, computing BDFLs don’t seem to turn bad. Maybe that’s because computing isn’t yet an ancient art, full of corruption and deceit. But more likely it’s because programming is not equal to politics — nor religion. I mean, why get all fired up about things which have little or no effect on your eternal destination?
Though you have to wonder … because the truth is, we programmers often have religious wars (and I’m at least as guilty as the rest). Let’s have a flame-war about which language is best. Let’s cast slurs on those who don’t use the pope’s text editor. Let’s argue over which is the One True Brace Style (as if there was any question). And did you say you’re a Windows user? I know where you’re going when you die.
There’s a reason for all this: programming is closer to politics and religion that we think. In reality, I suspect we’ve got it backwards — perhaps all of life is religious, and this whole time we’ve been misunderstanding religion.
Is religion about going to church? Or is it more about Truth, Beauty, and Goodness? If the latter, programming is also very religious. One of the most basic computing operations is testing the “truth” of a variable.
But I’m not just trying to be cute: programmers also highly value beauty. In fact, the Zen of Python — a “poem” describing the principles of programming in Python — starts out with “Beautiful is better than ugly”. Looking at good Python code makes me happy. Even Lisp (has (a (kind (of (austere beauty))))).
And in terms of goodness, you don’t have to look very far to find programmers donating thousands of hours for the good of others: they spend time answering people’s questions, they write web browsers and word processors, and some even get semi-religious and start foundations to promote software freedom.
So programming and religion have a lot in common. But I’m going to go further and suggest that programming is religious because life is religious. When was the last time someone lied to you and you liked it? When have you eaten at a restaurant with your girlfriend and admired the food’s ugliness? Swore at a total stranger when he lent you his snow shovel?
You might be thinking, “If life is religious, he’s just redefining the word religious.” But perhaps it’s you who’s redefining life?
Anyway … back to the BDFL thing. If life was programming, who would be the real Benevolent Dictator For Life? To ask the question is to answer it. He goes by many names — some of them even start with “G”, though none of them are “Guido”. And just like Python programmers, we have a BDFL whether we asked for one or not.
Is he benevolent? Of course. How many times have you eaten dinner in your life? Who do you think invented vegetables, chicken, and beef? A little gratitude wouldn’t go amiss.
Is he a dictator? Not in the pejorative sense. But he governs the world, and he’s got absolute power, so let’s just say “yes” before the water gets too muddy.
And he’s definitely “for life”, in multiple senses of the phrase. For death too, once you get to know him.
Programmers I know are fond of their favourite BDFL. They might not agree with, or even understand, everything he benevolently dictates — but that doesn’t stop them from believing in or respecting him.
The analogy breaks down pretty quickly, of course. Python’s BDFL only has jurisdiction over the official Python distribution, but the BDFL has jurisdiction over all things. And a programming language BDFL is just one of us, a human being — he doesn’t have to become a user incarnate or die on a cross to save his programs from syntax errors and stack overflows.
But the point remains: your favourite programming language has a creator and a BDFL — why wouldn’t life?