Language wars

Cory Smith gives me a forceful reminder of why I read his blog. In two entertaining entries, he first demolishes Nick Schweitzer, and then dances on the head of Michael Campbell. At least each of these victims had the grace to acknowledge (in the article comments) that he got it completely wrong.

Having been in the software industry for *cough* years, I've seen my fair share of language wars. If you dig a little deeper, there are 2 types of "religious war" commonly on show:

The first type is usually the result of something akin to falling in love. The developer tumbles head-over-heels for, say, French rather than English, and wants to share the wonders of French at every other developer within range. There's sometimes a full 6-pack in evidence, but always a completely lack of the plastic thingy to hold it all together. 

A good example of the second type is the often savage attacks aimed at any random dialect of the Basic language. The real target is rarely the language actually under attack, but rather the culture and abilities of the developers who use that language. It's a classic tribal attitude, "them" versus "us", and often a fundamental culture clash. And it's usually the result of a profoundly immature view of the world, one that fails to recognise that software development is actually multiple disciplines and really benefits from having multiple cultures.

You know that a specific discussion is turning towards a religious war rather than genuine technical debate when you start to learn more about the mindset of the developer doing the debating than you learn about the languages under debate. People start to confuse the strength of their feeling for the strength of their argument, and often try to pass off personal value choices and cultural attachments as objective technical evaluations.

Look, folks, just grow up!

  • Don't put too much value on any one specific language.
  • Don't be elitist or dogmatic when it comes to programming languages.
  • Do learn how to step back and be more objective.
  • Do realise that you aren't as intelligent as you think you are.
  • Do understand that every language will teach you new stuff about software development.
  • Do find out what you can learn from other software development cultures.

Perhaps one of the real and lasting benefits of .NET is that it puts developers from several different cultures and backgrounds onto the same development platform, where hopefully we can all learn from each other.

UPDATED: As I don't have blog comments, Nick Schweitzer emailed me to point out that he has an older blog entry which shows a more well-rounded view of the world than indicated by his entry mentioned above:

When you get down to brass tacks however, being a religious software advocate is a really poor thing to do. I much prefer to be agnostic over my software choices. The simple fact is that the software you use to create something is not the goal. Software is just a medium to get somewhere else. People who get deeply religious about their software tend to be more excited about how they're going to do something, and not about what they're trying to accomplish.

And it's Xmas, so I've toned-down my language slightly :-)