Resist Holy Tech Wars
Only a Sith deals in absolutes.
Obi-Wan Kenobi, Star Wars Episode III: Revenge of the Sith
It might probably be due to my age (recently turned thirty-six), but I'm recently observing a certain aversion in me against tech holy wars. It's something between "C'mon, you can't be serious" and "Not again". I know that they have a decades old tradition in computer science, but still, I find them somewhat irritating.
-
Discussion about programming languages are full of these. For example, you have the dynamic vs. static typing discussion, functional vs. object-oriented, what is the right abstraction for concurrency: locks, actors, STM, or something entirely different, immutable vs. mutable data structures, etc. Of course, most of this discussion is led in a reasonably rational tone, but every now and then, you meet people who categorically reject anything which isn't X.
-
In database systems, there is the NoSQL vs. SQL databases, which break down to consistency vs. being eventually consistent, "scaling up" vs. "scaling out", and so on.
-
In Machine Learning we have the Frequentism vs. Bayesians divide. I actually often forget that people are taking this serious, but then again I end up with people rejecting ideas because they are from the other group.
Note that most of these questions are pretty big ones: Programming languages, databases, notions of probability and inference under uncertainty. There are little holy wars on smaller things.
I had an interesting exchange on Twitter today with David MacIver on this, and we agreed that in many cases, it is clear that there are arguments in favor of each side depending on the context. Different programming languages are fit for different things, and there is no language or programming paradigm which is universally superior. At the same time, the costs for mastering both alternatives are often quite large. You tend to grow attached to the programming paradigm you do most of your work in, and also to the tools, editors, libraries, the community, etc., and might over time become relucant to switch.
David added that in many cases, however, it's actually not that difficult to do both but people suffer from sunk cost fallacies. What this means is that people are somewhat averse to writing off investments they have already made. Basically, if you spent a lot of time learning a certain technology, you would feel like you've wasted all that time if you switched to a different technology.
Of course, and this is the reason why it's called a fallacy, this has usually nothing to do with which technology is actually better for the problem at hand.
As I said, holy wars are often about complex, high-level stuff. And unfortunately, things are never that easy. It's usually quite complicated. Both sides have areas where they shine, and others where they fail. At the same time, problems usually also have rather complex requirements which seldom align with the available solutions.
I think that for many, holy wars are also rooted in a wish to simplify life, to get easy answers. "Which programming language should I learn?" For which problem? Number crunching? Distributed programming? Building a web site? "Which database technology is the best one?" Which will scale with your demands for the next ten years? There are no simple answers. But that's life, basically.
I think what irritates me most about this is when smart people, who otherwise seem to be able to take in a huge amount of detail, give in to holy wars. In particular when they're scientists, because our professionality demands that we're open to new things, and always suspicious of what we think we already know.
To close this rant, and to counter the argument that I'm basically having a holy war against holy wars, I admit that holy wars (at least in tech) have their merit. Often, it forces both sides to focus on what's special, and possibly also grow in the process. Given the huge number of technologies to learn today, it's also a good thing to just focus on one thing for some time, and nothing helps like believing that you've found the greatest thing there is. At the end of the day, however, you have to put it all into perspective and admit that perfect solutions only exist in fairy tales.
Comments (5)
I like that you have a small concession to the value of holy wars at the end. :-) As Steve Jobs said, "Focus isn't about saying yes, it's about saying no." I think it's perfectly acceptable for someone to want to focus on their area of expertise, and to use the methods they're comfortable with - the problem of holy wars is when people try to convince other people that they're wrong for doing it their way.
I guess I think of it a bit like sexual orientation: people might have their reasons for thinking there's one "right" way, but for the most part people should live with what works for them. In other words, it's fine to have strong opinions about what *you* want, as long as you don't assume it's the right choice for *everyone*.
For example, "I love to use emacs and would never switch to another editor" is a totally fine stance - if you know what works for you, go for it. "Anyone who uses vim is a heathen" is where things go wrong... And yes, I get the irony of saying that it's wrong to condemn other ways of doing things as wrong...
Hi Agnoster,
an important point you are rising. If there is no force exerted on other people, there is probably no real war anyway ;)
In general I agree with you, of course. But sometimes it's not always possible that everyone says "I do what's best for me", for example, because people collaborate on a project and have to find some common ground.
-M
Hey, for what it's worth, I'm actually really warming up to Scala. ;-) I'm trying to use it for simple tasks that I'd otherwise turn to Ruby for, just to try and get more comfortable, and... it's not bad. (Apart from the start-up time, of course. That still drives me a little nuts.) Maybe I was wrong to discount static typing quite so strongly - after all, I enjoy it in C! (Speaking of which, the actual extraction of the ngram model is about 2 orders of magnitude faster in C, and since I want to try iterating the solution rapidly... you know what? I think I'll just write the rest in an email.)
Sounds like a good idea ;)
Just thinking about this a bit more... . I think I'm still generally suspicious if someone tries to sell me something as the one and only solution to anything there is. Of course, "works for me" is still something else than saying "works for everyone", but it is still some indicator for how someone makes his or her decisions in general.