top | item 3064875

The Elite Programming Language Fallacy

87 points| jfsurban | 14 years ago |blog.fogus.me

54 comments

order

vessenes|14 years ago

This sort of has a 'straw-man' feel to me. I've never heard the "Elite Programming Language" term before I saw it deconstructed in this essay.

Most discussion around programming languages I see these days is centered around assessment of developer skills. This is understandable -- we're going through a period of massive technical talent shortage. Almost all tips we read through places like HN, including PG's notes, revolved around shorthand ways to screen developers, not pushing a one-true-language approach (unless Yahoo Store programming skills are at stake, apparently..)

Unlike, say, the mid 1970s, when IBM could take its sweet time training you to program, startups don't have a lot of time to make something happen. Thus, they need a language (and application framework) that will work well, and they need developers that they are reasonably sure will be able to succeed. And they cannot wait six months to find out if they were correct about said developers.

One shorthand way to look for these developers is to find ones who have demonstrable skills in new-ish, hard-ish languages. These are the developers that you know for sure

1) Like new things

2) Aren't afraid to experiment

3) Enjoy a challenge

You have no idea if they're any good to work with, understand software architecture, have foul personal habits, or any number of other reasonable concerns for some other company. As a startup company, you don't care about most of that list (at first). This is why it's a smart move to look for people who have just coded up some crazy Arduino-Haskell-auto-shooting-usb-missile program. Those people will not be unduly dismayed when they need to reverse engineer a wireline protocol one day, and 'pick up couchbase' the next.

All this to say, sure, there's no such thing as an elite language. But, right now, there are a few languages that indicate strongly that you might wish to recruit a programmer for a stint at your startup. Clojure, Scala, Haskell are on my list.

kenjackson|14 years ago

I don't understand why those three things you listed would make a good developer. Who doesn't like new things? I want to find the person who sticks with the old thing, even after the shine has worn off. Everyone loves to code the prototype. And if you tell most devs they get to code the prototype and learn a new language at the same time they'd jump at it. In grad school, with every project I used a new language -- why? Because it's fun. But that doesn't make a good dev.

Again, I've never met anyone who is afraid to experiment. But I've met people who don't know when it makes sense to experiement.

And again, the problem I've had with programmers has never been because they don't enjoy a challenge. In fact, I'd say quite the opposite. I'd like to see more devs say early on that something looks difficult, and could use some mentoring or help on it.

I guess I'm just saying that this says almost nothing about the quality of the developer.

SoftwarePatent|14 years ago

> I've never heard the "Elite Programming Language" term before I saw it deconstructed in this essay.

Google search for "elite programming language" -"elite programming language fallacy" [1] (to avoid links to this post) yields eight results. It seems the term "elite programming language" was coined by the author in order to knock it down, which is one type of a straw-man argument. [1] https://encrypted.google.com/search?q=%22elite+programming+l...

fogus|14 years ago

    This sort of has a 'straw-man' feel to me. 
    I've never heard the "Elite Programming Language"
    deconstructed in this essay.
I all but admit to coining the term in the first paragraph. It's a term without baggage that is meant to encapsulate many related terms: hipster, academic, complex, obscure, !blub, etc. To say that the post is a straw-man is to deny these other terms exist and are used to mean roughly the same thing.

barrkel|14 years ago

Never heard of the concept, or never heard of that specific phrasing? Because I've heard of the concept repeatedly for years.

http://paulgraham.com/pypar.html

mattgreenrocks|14 years ago

I blame the Internet. No, seriously.

Sites like HN and Reddit tend to have a vocal crowd who decide that certain languages and tools are the domain of the elite. This groupthink is religiously defended through self-righteous blog posts ("I switched from Java to C and became a better person!!!") and comment threads. Inevitably, posters go looking for something that the True Language is known to do well, and then overgeneralize their experience. The result? Karma, and another voice to add to the constant din of Conventional Wisdom. Intellectual honesty takes a backseat to conformity...as usual.

Developers looking to improve their skills should pick up new languages, especially those of different paradigms and abstraction levels. But the hegemony of 'superior' languages will always weigh in to these decisions, and potentially block out the idea that the language is merely a tool used in implementing the final solution. It was never the end goal.

Nor is being right on the Internet. This phenomenon is one of humans, and their politicization of engineering. We must be wary of the ego, and harness it for it's good uses, rather than always looking to appear badass or hip through our technologies.

steve8918|14 years ago

I have to agree. The Internet somehow does create these weird pissing contests where people seem to want to show that they are cool and everyone else sucks. For example, in an internal mailing list where I work, there is currently a thread between two idiots over whether iPhone or Android is superior.

What a completely ridiculous waste of time!

The mature "elite" programmer knows that solving problems is more important than the underlying technology.

There was that article from pud a few weeks ago talking about "you won't like my back-end", where he details how he uses a Microsoft stack, including IIS. So many people were responding with how much better LAMP was, etc. But the funny thing is that pud has made more money and acquired more customers than 99% of the people who responded. He is solving customer problems and being rewarded with money, and not engaging in useless pissing contests over which technology is better, and I admire that.

hokua|14 years ago

Well said. A lot of people on HN (including PG) like to diss Java as some backward corporate language. The fact that you can run Lisp on the JVM (clojure) shows that such criticisms are shallow.

Lisp may be superior to Blub. But if Blub has excellent libraries X,Y, and Z that make solving your problem a lot easier, using Lisp may be a no-go - unless you can interoperate with Blub code from Lisp -- something that a virtual machine like the JVM makes very easy without having to write bindings.

_delirium|14 years ago

This groupthink is religiously defended through self-righteous blog posts ("I switched from Java to C and became a better person!!!") and comment threads. Inevitably, posters go looking for something that the True Language is known to do well, and then overgeneralize their experience.

I'm not even particularly old, and I ran into this offline first. Go anywhere within 500 feet of a tech meetup, and you'll have people telling you these kinds of conversion stories, overgeneralizing their experience, etc. My first encounter, when I was a high-school student, was with a C-programming graybeard who was sort of religious about C.

defdac|14 years ago

One of the best comments I've read on HN. Fight group think.

jerf|14 years ago

"So why does the term “elite” become attached to certain languages over others?"

Because the causality flows the other way. At any given point in time, there are certain languages that the elite programmers tend to flock to, because they spend more time looking out for new, good things that the average person (part of what got them to "elite" in the first place), and therefore finding someone who knows that language is evidence (though not proof) that they are elite.

That's not a logical fallacy; in Aristotelian logic, (A -> B) !-> (B -> A), but you can use probabilistic logic to combine "A -> B" and "B" to update the probability of A (when combined with a couple of other values). And that's how you get certain languages associated with elite programmers, even though the languages itself does not confer eliteness. It's actually all-but-inevitable that such processes occur in any community of sufficient size that has any sort of skill ramp. There's going to be at least one identifiable group that is the "cutting edge", and they are going to have certain characteristics or tastes or whatever that will tend to separate them from the not-cutting-edge folk.

kitsune_|14 years ago

It's not just that elites use other tools and techniques because they are intellectually more curious, it's also a method to establish identity and separate themselves from "the peons".

The irony, in my opinion, comes from the fact that there is no official membership mechanism when it comes to belonging to an elite. People that wield power withing a community because of their above average skill set have mannerisms, and often, as said above, agree, sometimes silently, on a certain code of conduct or modus operandi. People who want to belong to the elite start to emulate these mannerisms and identity forming mechanisms, reinforcing them over time.

shin_lao|14 years ago

because they spend more time looking out for new, good things that the average person

Yet I think the best programmers I know use languages that are 20 to 30 years old as their main weapon of choice (C/C++ for example).

I'd also care to say that once you reach a certain skill level, you see beyond the language and don't find yourself looking for the latest shining new stuff.

kenjackson|14 years ago

There's going to be at least one identifiable group that is the "cutting edge", and they are going to have certain characteristics or tastes or whatever that will tend to separate them from the not-cutting-edge folk.

The problem is that there's no evidence at all that it's language which is the characteristic function. Looking at most of the devs that I truly respect and admire, few if any, are the ones that spend a lot of time with cutting edge languages. And most people I know who are famous devs that use cutting edge languages, are famous for using, writing about, or developing cutting edge langauges.

georgieporgie|14 years ago

there are certain languages that the elite programmers tend to flock to, because they spend more time looking out for new, good things that the average person

I think that's a very subjective thing to attach "elite" to. I see a lot of people jumping between languages who are ahead of the curve, but nowhere near anything I would call "elite". At the same time, some of the most "elite" programmers I've seen have been doing things like the same old embedded programming for X years, getting really, really good at it.

cageface|14 years ago

So I say that even a notoriously difficult language like Haskell is only difficult because you haven’t learned it yet.

Can't say I agree with this. Haskell embodies a lot of fairly advanced and much more formally rigorous concepts than most programming languages. It may be that there's a corresponding payoff in concision or correctness but Haskell has this reputation for a reason.

lurker19|14 years ago

Not just rigor. Haskell is very difficult to debug performance issues of, and is hard to use when manage changing state.

Haskell shines when used to manage a sophisticated computation of a static result, not a constantly changing dataset.

Haskell is a great way to learn stateless pure programming style, since it forces a lot of discipline. Haskell makes you a better Java/Lisp/Python/C programmer. (Except that it will make you write inefficient Java if you get too accustomed to the idioms that are efficient Haskell)

kitsune_|14 years ago

For most people it will probably be much harder to grock than Java, I fully agree.

By the way, I think the linked article was rather mundane. Many programming articles and blog posts seem to moot fairly uninteresting problems and are littered with empty catch phrases and notions. They remind me of books about the latest management techniques. What is the point of an article like this? I feel like I've gained nothing from reading it.

There is no discussion about the meaning or definition of the term "elite". If you consider that "elite", in the realm of sociology, describes the aggregation of people of above-average qualification within a certain functional context ("performance elite"), the term will often be used to describe the tools and techniques these elites use to achieve and maintain their status.

Elites, like many social groups, find means to separate themselves from other groups, they create informal habits and rituals, formulate means for the establishment of their group identity and so on.

Jun8|14 years ago

I think the post somewhat misses the point of "elite languages" by denying their existence in teh first sentence. To see the absurdity of the claim, reword the argument thus:

"There are no clubs that will make you “elite”. In fact, there are no “elite” clubs."

But, of course this is not true, there are clubs for which membership shows eliteness. This is not a physical property, it is agreed upon by the relative strata of society.

Similarly, there definitely are elite languages, i.e. ones for which understanding and use confers some sort of eliteness to the programmer. This is different from being a good (or great) programmer, so the examples of great programmers he's known is irrelevant. Eliteness, to me, is not the same as coolness or the next big thing either, i.e. for most people Lisp (or a dialect, say, Scheme) is elite although it's old.

fogus|14 years ago

    But, of course this is not true, there are clubs 
    for which membership shows eliteness. This is 
    not a physical property, it is agreed upon by 
    the relative strata of society.
This is a weak analogy. Elite clubs do not make the members elite; they are "elite" to begin with. These clubs are not admitting the janitor. On the other hand programming languages do not admit members. Anyone can pick one up and learn it, but that alone doesn't make them elite.

akkartik|14 years ago

I was following the essay just fine until the paragraph on clojure. What's it doing there exactly? Is he saying there are no 'elite' programming languages -- except Clojure?

regularfry|14 years ago

He's saying exactly the reverse. Because clojure makes a traditionally hard task easy, you don't have to be 'elite' to use it.

tom_b|14 years ago

"Having said that, there are languages that are designed to solve hard problems."

Which kind of says that there are actually elite languages, right?

I agree that people conflate their use of an "elite" programming language or framework with actually being an elite hacker.

And certainly there are masterful hackers in any given language.

There is no substitute for getting things done, but my own programming life would have been more productive earlier had I simply known more programming paradigms to start with. The wonderful idea in an "elite programming language" is that the thinking hacker is forced to look at least a little at languages that support different programming paradigms. Then, their mental modeling of problems may be forever changed - improved even.

bitops|14 years ago

What is STM? I was following along until that came up.

sparky|14 years ago

Software transactional memory.

jbarham|14 years ago

Mad props to all the l33t COBOL programmer analysts out there!

rbanffy|14 years ago

To be fair, their task is not a simple one: to bend a very old language into new problems it was never designed to solve is an outstanding achievement.