My tweet
last night “Node.js is the MongoDB of programming
languages” got enough response I feel I need to explain it a
bit. It’s an awfully snarky thing to say, but it has some truth.

MongoDB used to be the cool kids’ database. It’s
appealing when you start using it: good docs, easy to get
going, a plausible story on performance. NoSQL is exciting and
MongoDB is an easy NoSQL system to try. But then people started looking closer and
finding all the ways it broke and now MongoDB is out of favor, at least
for serious production servers.

Node.js is now the cool kids programming language. It’s
appealing; good docs, clean slate of libraries and tools, fast VM,
and a plausible attempt at server performance. Non-blocking systems are
exciting and Javascript closures make continuation programming easy. But
now people are looking
closer and finding all the ways Node.js is awkward or brittle and
one starts to wonder.

I’m not saying Node.js is bad. There’s a
lot of good in it, I particularly like that it’s
made non-blocking programming more accessible than Python
or Java or Nginx has. Mostly I’m just mocking the fashion
of the month. It is a shame that people are rushing
to this Brand New Thing without knowing the history and
potential pitfalls. Just like we learned with MongoDB that ACID is hard, Node users
are now discovering that reasoning about continuations is hard and memory
management with closures is tricky, not to mention unwinding the
stack on errors. The Node community is hard at work on improving
things, hopefully that development process will lead somewhere
productive.