Lessons of Failure
Humans + Software Development = Always Interesting

TAG | paul graham



Language Flamewars and the Blub Paradox

Try this little exercise sometime.  In Google, enter your favorite language, followed by the word “sucks”.  And then do the same with a language that you just despise.  If you can stomach the results for the first page in both cases, you’ll notice:

  • Each language always has its strong Fan Boys (or Girls I suppose, but this seems to be primarily male dominated)
  • No resolution ever comes of ANY flame war

…despite the fact there are no end to the results that are relevant to the war at hand.  We all know flame wars are pointless, and yet we get some perverse satisfaction watching them in the same way people slow down on the highway when they see an accident with an ambulance present.  Why is it you can’t seem to get away from them?

That would be the Blub Paradox.  First posited by Paul Graham close to a decade ago, I came across it for the first time (yes, I live under a rock sometimes) recently and had an “Aha!” moment with it. Maybe you’ve known about it for years because you crawled out from the rock ages ago.  I don’t think it’s all that well known, considering just how many flame wars continue to pop up on blogs, discussion threads and forums.

The Blub Paradox

If you’ve never heard of it before, here’s a brief summary:

(Paul) argues that some languages are more powerful than others and posits a hypothetical middle of the road language called Blub. He describes the gist of the paradox thus:

As long as our hypothetical Blub programmer is looking down the power continuum, he knows he’s looking down. Languages less powerful than Blub are obviously less powerful, because they’re missing some feature he’s used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn’t realize he’s looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.

Most people without the experience of them can’t see language features as really useful things. I know an otherwise extremely talented programmer who can’t see the value of garbage collection and thinks it simply encourages “lazy programming” even as he struggles to find the right location to delete objects shared and referenced by many others. Are you claiming to be such a renaissance person as to be able instantly to recognize the value and worth of every new programming feature to which you are exposed?

Furthermore, I posit that the language developers spend the most time in becomes their Blub.  Meaning that, after some magical point in your development career, switching languages becomes more difficult because you’re trapped in the Blub Paradox.

Flame On, When You’re Stuck with Blub

If you’re stuck on your Blub, you’re going to have that same cynic view of newer programming languages.  And there are plenty around today that are getting press that, depending on your perspective, you may have that same “well, they’re probably powerful but they have all that hairy stuff in there I don’t understand” reaction.  That’s Blub at work.

I’ve become painfully aware that Java is my Blub.  You can see evidence of me stuck in the Blub Paradox in my posts about Google Go.  The continuum viewing paradigm above is absolutely bang-on:  Spotting a more powerful language is incredibly difficult once you have a long series of programming habits in a particular language.  Maybe it’s just a consequence of a long programming career.  Could be mental inertia.  It doesn’t really matter where it comes from, as long as you are aware of the effect.

You can probably spot any programmer’s Blub, just by asking what he or she works in daily.  Jeff Atwood’s is probably C# or ASP by now.  Larry Wall’s is perl.  Bjarne’s is C++.*  The list goes on and on.  If you’ve been programming more than 5-7 years in a language, you’ve probably got a Blub too.

What makes this even harder is that your day-to-day work totally absorbs your programming time, particularly as you get older with a family.  Finding time for new programming projects on the side gets squeezed and you find yourself falling back on things you already know instead of digging into something you view as weird, but potentially useful.  That squeeze may ultimately turn into, “Well, why bother with X when I already have Blub?”  That’s the danger of Blub.

It’s OK to have a blind spot.  But, you should be aware that it exists and avoid the prejudice filter that comes with it.

The next time you’re tempted to look down on a language because it’s weird, as opposed to just inferior, remember the Blub Paradox and maybe spend some time in it before you strike the match and grab the gasoline.  You can bet that I will.

* I am completely guessing on these, based solely on the fact of what I read about their current exploits.  I reserve the right to be wrong about any particular programmer’s Blub, while still retaining the right to assert that Blub Paradox is still in effect.

· ·