Toy Soldier With Bazooka No, this isn’t a revisionist history account attempting to insert the role of software in the Crusades. Today we take a look at Religious Wars in software. Sometimes also referred to as “Flame Wars” and “Holy Wars”.

A religious war is a very passionate conflict or argument in which each side is absolutely convinced of the objective truth of his or her own position on a matter of personal preference. These are typically very heated arguments over very trivial matters in which the only truth is that there is no objectively correct answer. These arguments would make an outsider wonder if we should all be locked up in straight jackets.

Spaces or Tabs

One good example, and I hesitate to even mention it, is the topic of using spaces or tabs for indenting code. True software developers know there is only one right answer and they’ll defend the truth of that answer till they are blue in the fingers, making sure to spread the “One True Indenting Style“ to every forum in every nook and cranny of cyberspace. Obviously I know what the real answer is and that answer is…

Kinda puts the “anal” in anal retentive obsessive compulsive doesn’t it?

Private Member Prefix

Sometimes we lob grenades over a single character or two. Make sure to prefix private member variables with an underscore or be burned at the stake in one camp. Use an m_ prefix or be flayed alive by another camp. Don’t use an underscore at all in yet another camp or be drawn and quartered. I’ve seriously thought of joining the camp that wants to prefix member variables like so:

string HEYThisIsAPrivateMemberVariable___someVariable;

How is that for being explicit? Of course the true code warrior will notice I didn’t explicitely mark the member as private and already has a sniper laser scope aimed at my head.

Holy War Phoenix

The real beauty of religious wars is that they never go away. Sure they’ll sometimes flame out a bit and lie smoldering just under the radar. But wait long enough and they’ll spring back to life in full force. Just look at the Edit and Continue debate in Atwood’s blog.

Another example of a holy war that never seems to die is the VB.NET vs C# debate. This is an interesting one because VB.NET and C# are really good buddies who like to have a pint at the pub together every now and then. They don’t have a beef with each other. It’s certain camps that use these languages who like to beat each other with flames and misinterpreted arguments that thrust these languages into an all out religious war.

Crusaders

At the forefront of these religious wars are the crusaders. I won’t link or call out any in particular lest my blog become the next battleground for the faithful holy warriors. But you recognize them when you see them. They can be found in the trenches of the newsgroups, blog comment sections, and in their own blogs, fighting for the cause with a single minded determination.

They rarely give an inch to the oppositions viewpoint, lest they come across as weak. You are either with them, or against them.

Well Known Religious Wars

No discourse on religious wars would be complete without a list. This list is by no means complete, but simply a list of well known holy wars in software that I can recall. Please contribute others in the comments and I will keep this updated.

  1. Spaces vs Tabs for indenting code
  2. Curly braces on their own line or not
  3. Private Member Prefixes…or not
  4. private keyword or just omitting it
  5. Managed Languages vs Unmanaged
  6. Edit and Continue or Not Edit and Continue
  7. BDUF vs Iterative Design
  8. Interpreted and dynamic languages vs Compiled
  9. VB.NET vs C#
  10. Java vs .NET
  11. vi vs emacs
  12. Windows vs Linux
  13. Tastes Great vs Less Filling

Got any others?