MongoDB and WTFs and Anger
Recently, Sven Slootweg (joepie91) published a blog entry entitled
Why you should never, ever, ever use MongoDB.
It starts out with the words "MongoDB is evil" and proceeds to give a list of negative
statements about same.
I am not here to respond to each of his statements. He labels them as "facts",
and some (or perhaps all) of them surely are. In fact, for now, let's assume that everything he wrote is
correct. My point here is not to say that the author is wrong.
Rather, my point here is that this kind of blog entry tells me very little about
MongoDB while it tells me a great deal about the emotions of the person who
Like I said, it may be true that every WTF the author listed
is correct. It is also true that some software has more WTFs than
I'm not a MongoDB expert, but I've been digging into it quite a bit,
and I could certainly make my own list of its WTFs. And I would also
admit that my own exploration of Couchbase has yielded fewer of those
moments. Therefore, every single person on the planet who chooses
MongoDB instead of Couchbase is making a terrible mistake, right?
Let me briefly shift to a similar situation where I personally have a lot more knowledge:
Microsoft SQL Server vs PostgreSQL. For me, it is hard to study SQL Server without several WTF moments.
And while PostgreSQL is not perfect, I have found that a careful
study there tends to produce more admiration than WTFs.
So, after I discovered that (for example) SQL Server has no support for
deferred foreign keys, why didn't I write a blog entry entitled
"Why you should never, ever, ever use SQL Server"?
Because I calmed down and looked at the bigger picture.
I think I could make an entirely correct list of negative things about SQL Server that
is several pages long. And I suppose if I wanted to do that, and if I were really angry
while I was writing it, I would include only the facts that support my feelings,
omitting anything positive. For example, my rant blog entry would have no reason to acknowledge
that SQL Server is the mostly widely used relational database server in the world.
These kinds of facts merely distract people from my point.
But what would happen if I stopped writing my rant and spent some time thinking about the fact I just omitted?
I just convinced myself that
this piece of software is truly horrible, and yet, millions of people are using it every
day. How do I explain this?
If I tried to make a complete list of theories that might fit the facts,
today's blog entry would get too long. Suffice it to say this: Some of those
theories might support an anti-Microsoft rant (for example, maybe Microsot's
field sales team is really good at swindling people), but I'm NOT going
to be able to prove that every single person who chose SQL Server has made
a horrible mistake. There is no way I can credibly claim that PostgreSQL is the
better choice for every single company simply because I admire it.
Even though I think (for example) that SQL Server
handles NULL and UNIQUE in a broken way, there is some very large group of
people for whom SQL Server is a valid and smart choice.
So why would I write a blog entry that essentially claims that all SQL Server users are stupid when
that simply cannot be true? I wouldn't. Unless I was really angry.
MongoDB is undisputably the top NoSQL vendor. It is used by thousands of
companies who serve millions of users every day.
Like all young software serving a large user base,
it has bugs and flaws, some of which are WTF-worthy.
But it is steadily getting better.
Any discussion of its technical deficiences which does not address these things
is mostly just somebody venting emotion.