On Religious Wars in Software

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. Managed Languages vs Unmanaged
  5. Edit and Continue or Not Edit and Continue
  6. BDUF vs Iterative Design
  7. Interpreted and dynamic languages vs Compiled
  8. VB.NET vs C#
  9. Java vs .NET
  10. vi vs emacs
  11. Windows vs Linux
  12. Tastes Great vs Less Filling

Got any others?

What others have said

Requesting Gravatar... Marty Thompson Feb 08, 2006 4:26 AM
# re: On Religious Wars in Software
13. Surrogate keys versus natural keys
14. Hungarian notation(kinda fits in with #3)

I'd like to mention that anyone who uses spaces instead of tabs for indentation is evil. Same goes for people who don't put a curly brace on its own line. I can tolerate just about anything else. Oh except for VB :)
Requesting Gravatar... Diego Pires Plentz Feb 08, 2006 5:17 AM
# re: On Religious Wars in Software
15. Ruby versus Python
16. VB versus Delphi
Requesting Gravatar... jayson knight Feb 08, 2006 5:22 AM
# re: On Religious Wars in Software
15. Public fields vs properties.
16. ALLCAPSFORCONSTANTS.
17. Dynamic SQL vs Stored Procedures (why this is even debated anymore is beyond me).
18. United vs Arsenal.
Requesting Gravatar... Scott Feb 08, 2006 6:21 AM
# re: On Religious Wars in Software
I can't believe you limited it to just Windows v. Linux. Heck, it's always Windows v. <OS>. Windows V. Linux, Windows V. Mac. It used to be Windows v. DOS. It's like Manchester U. v. everyone.
Requesting Gravatar... Alex Feb 08, 2006 8:43 AM
# re: On Religious Wars in Software
19. RPC/Encoded vs. Document/Literal
Requesting Gravatar... pcomeau Feb 08, 2006 10:11 AM
# re: On Religious Wars in Software
On # 18 (from Mr. Knight)
you mean that other, lesser United, not Newcastle right? :-)

Semi-old school:
com vs corba
OWL vs MFC
5 space tab vs 3 space tab
OO vs Procedural
Requesting Gravatar... Jeff Atwood Feb 09, 2006 9:08 AM
# re: On Religious Wars in Software
The best software religious war in recent memory was.. an actual religious war!

"Are You There, God? It's Me, Microsoft."

http://www.codinghorror.com/blog/archives/000247.html
Requesting Gravatar... Greg Milner Feb 09, 2006 2:59 PM
# re: On Religious Wars in Software
Oh, yes. And let us not forget:

Oracle vs SQL Server

and

Perl vs Python

and

.NET vs Java
Requesting Gravatar... Haacked Feb 10, 2006 2:52 AM
# re: On Religious Wars in Software
I got one. The "throws" keyword in Java. Better or worse than the C# way.
Requesting Gravatar... Alex Feb 11, 2006 6:19 AM
# re: On Religious Wars in Software
Zero-based vs. One-Based Indices
Requesting Gravatar... 0xff Feb 12, 2006 5:04 PM
# re: On Religious Wars in Software
monolitic vs micro kernels
perl / php >(perl rullz ;-) )
Requesting Gravatar... Scott Feb 13, 2006 3:02 AM
# re: On Religious Wars in Software
Oh crap, almost forgot about checked vs. non-checked exceptions.
Requesting Gravatar... jayson knight Feb 13, 2006 7:50 AM
# re: On Religious Wars in Software
As far as checked exceptions go; Anders doesn't like them, so that's reason enough for me.
Requesting Gravatar... Haacked Feb 14, 2006 2:52 AM
# re: On Religious Wars in Software
Dynamic SQL vs Stored Procedures
Requesting Gravatar... Joel May 01, 2006 5:34 AM
# re: On Religious Wars in Software
The granddad of them all: "High-level language vs Assembly" (though I am assuming that no one was unwilling to fight assembly and hang on to machine code.
Requesting Gravatar... anonymoose Jun 02, 2006 8:28 AM
# re: On Religious Wars in Software
little-endian vs big-endian
Requesting Gravatar... Paul Coddington Jun 02, 2006 10:25 PM
# re: On Religious Wars in Software
Extreme Programming vs... (any other method)
Requesting Gravatar... Anonymous Jun 04, 2006 5:46 AM
# re: On Religious Wars in Software
Databases are another good reason to start a war.
- db2 vs oracle
- postgresql vs mysql
(Even though the last one is rather strange since only one of those is a database)
Requesting Gravatar... Dan Fernandez Jun 08, 2006 12:44 AM
# re: On Religious Wars in Software
Good list, I would add bracing style - K&R vs. Allman

Debate at:
http://blogs.msdn.com/danielfe/archive/2003/11/24/51893.aspx
Requesting Gravatar... creaothceann Jul 10, 2006 11:45 PM
# re: On Religious Wars in Software
C/C++ vs. Pascal
Requesting Gravatar... Blog di lucab May 23, 2007 7:31 AM
# Occhio alla bufala
Windows Vista &#232; il primo sistema operativo Microsoft che &#232; stato lanciato nell'era dei blog.Pertanto
Requesting Gravatar... Matt Aug 23, 2007 2:42 PM
# re: On Religious Wars in Software
HUGE... object vs procedural
Requesting Gravatar... pcdinh Aug 24, 2007 6:29 PM
# re: On Religious Wars in Software
PHP Frameworks vs. ASP.NET. PHP ones are current winners
Action-based web framework vs. component-based ones. Action-based ones win.
Eclipse vs. Netbeans
Requesting Gravatar... james peckham Jan 15, 2008 12:19 AM
# re: On Religious Wars in Software
agile vs waterfall
Requesting Gravatar... Matthias Hryniszak Apr 08, 2011 9:26 AM
# re: On Religious Wars in Software
REST vs WS-*
Requesting Gravatar... Skywalker Apr 08, 2011 10:02 AM
# re: On Religious Wars in Software
- ASP.NET v.s PHP
- WebForms vs. MVC
- Handcoded SQL v.s. ORM
- Inline C# (Razor) v.s. codebehind everything
- designer v.s. no designer (webforms / mvc, there are actually developers who say MVC is a huge step backwards, the lack of designer support proves this :p. Personally I NEVER want to see WebForms again)

Requesting Gravatar... Jeremy Apr 08, 2011 10:06 AM
# re: On Religious Wars in Software
Plural vs. Singular table names.
Requesting Gravatar... Daniel Butler Apr 08, 2011 11:44 AM
# re: On Religious Wars in Software
Linq vs Entity Framework vs NHibernate
Requesting Gravatar... Tim Scott Apr 16, 2011 5:29 AM
# re: On Religious Wars in Software
GUID vs integer PKs. And even more important: gwid vs. goo-id
Requesting Gravatar... eti May 22, 2011 4:55 PM
# re: On Religious Wars in Software
@Marti Thompson: Hungarian notation, as Charles Simonyi intended is very useful ( see http://www.joelonsoftware.com/articles/Wrong.html ) to bad is one of the most misunderstood concept in the field.
Requesting Gravatar... mwicks1968 May 23, 2011 6:40 PM
# re: On Religious Wars in Software
Ah Jeremy, the old Singular/Plural Table names debate! As a recent convert to RoR, this is the one thing about it that Gets my Goat - so you can work out where I stand on the subject. Also as Python programmer I can't be neutral in the Spaces v Tabs debate either!

But probably in general, if you want to start a total riot and alienate all your work colleagues, start a team meeting by thinking out loud, saying, "I think it's about time we had some Programming/Design Standards in this shop - who wants to chair the Working group?"

Stand well back from that one!
Requesting Gravatar... Steve May 24, 2011 12:27 AM
# re: On Religious Wars in Software
var vs Object Name
Requesting Gravatar... Sadegh May 25, 2011 3:58 AM
# re: On Religious Wars in Software
Israel vs World ;) and more important is that Israel is in complete destruction
Requesting Gravatar... CashCow Jan 31, 2012 12:02 PM
# re: On Religious Wars in Software
UTF-8 vs UNICODE

What do you have to say?

(will show your gravatar)
Please add 3 and 2 and type the answer here: