In many ways, developers are craftsmen, or “artists” (I use the term in the vastest sense, hence the quotes – it’s not said in a pejorative way). We have our style, our preferred tools, etc… Since we write code, our tools are text editors, compilers and debuggers.
But, while you will seldom hear painters saying that this or that brand of brush is better, IDE (as in editors + compilers + debuggers) wars are fairly common in our world. Even though we seldom have to switch back and forth between development environments, most developers hop on the wagon to support the one they have chosen.
On a daily basis, I use as many as 4 (5 if you include CLI) environments… There is Eclipse with my students, NetBeans for myself, since Eclipse isn’t as good on the Mac as NetBeans, CodeWarrior for legacy and specialized targets, and Xcode for the rest.
Each and everyone of them has its strong points and its weaknesses. Besides, you have your coding habits that one or the other may enforce/respect. Why is there such a commotion then? After all, either you choose for objective reasons, such as usability and/or features, or you use several of them simultaneously…
For some reason, choosing a development environment is some kind of religious leap. You have the atheists (such as myself) and the extremists. Don’t ask a vi fan to use Emacs for fear of purification cleansing of your ears and your soul (or worse).
Some people retort that this war is no more absurd than the OS war (Mac OS vs Windows vs various UNIX-derivatives), and that this war has been going on for a long time. I disagree, this is not the same kind of dispute at all. Yes, it’s computer based, and yes it’s a bit silly, but it has a major difference : these OSes are not cross-compatible. Once you choose a platform, you have to invest in it, and most programs can’t run on multiple systems for a unique price… If you choose one platform or the other, changing later can have a hefty cost!
The IDE doesn’t have the same role : it’s just a tool between your brain and the product. Apart from various optimization phases that can produce a faster/smaller program from your code, they all do exactly the same thing… They take a bunch of files (generally the exact same files), and package them for execution on a given target OS. Give or take a few details, they are interchangeable.
So, why do these wars occur? I am not sure myself… I guess it boils down to this “optimization” need we developers have. When you make a program, you hate to wait for stupid things, right? When you find a tool that speeds up your process, you’re happy and you want other people (such as the ones who might help you, depend on you, or wait for you) to speed things up a little bit too. And I guess it is a human trait to get frustrated when people don’t understand how much more intelligent you are when you’ve managed to get more productive…