- Apr 18, 2017
- Tags: programming
Preface: the "new hip" technology stacks I'm referring to aren't necessarily new or hip. They just got popular over the last few years. These are the stacks such as Ruby on Rails, Python & Django, the MEAN stack—as opposed to the more "enterprisie" stacks such as .NET or Java.
This post was inspired some articles I recently came across: how Slack porting some parts of their codebase to a strongly typed language, TreeScale combining micro-services to reduce overhead, or Walmart labs falling back to traditional server side HTML rendering on top of React. The common point I got from all of these posts is that the technology they once thought to have been the best thing since sliced bread, turned out to not be the silver bullet they had hoped, and that there are merits in the "old school" ways of doing things.
The circle of hype
The tech community is a lively and vibrant community. We get excited about new things and we pour our blood and sweat contributing to them. Though I would like to argue that a lot of products we get excited about recently are just repackaging of even older technologies. Let's look at a few cases:
- The NoSQL hype: Somewhere along the way, people started saying things like "NoSQL scales better than RDBMS." Things like MongoDB, DocumentDB, and DynamoDB aren't new. Object databases have been around forever. We just got excited because some company used them the right way and wrote a blog post about it. Some of the largest services we know of still rely heavily on RDBMS along side with these "new" databases.
- NodeJS callbacks are non-blocking and webscale hype: Paypal rewrote their service in NodeJS because Java only got them 3 req/s. No friend, your 3 req/s came from a service accumulating a large amount of technical debt over time. There are plenty performant services written in Java and .NET. Callbacks aren't new. C# and Python had done it better for a long time without the callback hell (see async & await).
- The functional language hype: Functional programming isn't new, LISP isn't new, and they have been "taking the world in the next few years" for decades now. We just got excited about Clojure, Haskell, and Erlang because some company used them properly and successfully.
- The scripting language hype: Scripting languages aren't new either. They have a lot of advantages as well as disadvantages compared to the alternatives.
In essence, a lot of the "new" technologies we get excited about have existed for a long time. The "enterprise" technologies some of us avoid came to be because they solve the disadvantages the other stacks. RDBMS are great for certain things. Compiled languages are good for certain products. This is why so many maturing products port their codebase to these "enterprise" stacks.
The case for "new" stacks
Having said all that, I'll confess I have jumped on plenty bandwagons as well. I, too, get excited about shiny things. Even though I had mostly worked with "enterprise technology" in my professional career, my personal projects have ranged from Ruby to Golang to Clojure to Erlang then circle back to Clojure, and so on. I have also ported some of these projects to .NET then back, etc. I'll spare you the number of times I have switched the backing databases of my projects.
Well, it's fun to learn new things. Completing a project is a good way to learn the ups and downs of a particular technology.
A lot of these technologies also have a low barrier of entry. They are simple(r), do one thing well, and often come "battery included." Ruby on Rails work like black magic. I learned Golang and built a URL shortener with it in half a day. If I hadn't known anything about databases, of course MongoDB would sound a lot more appealing than the likes of Postgres or SQL Server—I can just throw some object at it without having to worry about schema or anything. Best of all, you can probably download these to your dev box for free. For hobby projects or startups needing to ship prototypes in short turnaround time, these are attractive attributes.
All in all, it's fantastic to be excited about new and shiny things. That's one of the best things about our field. That said, we owe it to ourselves to keep in mind the trade-offs when choosing one technology over the others—sounds obvious, but I keep having to remind myself about this.