There were two posts on the front page of Hacker News yesterday - Choose Boring Technology and Choose Exciting Technology. Both make are great points and are compelling on their own, but they’re completely at odds with one another.
Boring Technology gives examples like PHP, Postgres, Java, and all other sorts of technology that’s been around for a while and is.. well.. not as new and shiny. Battle-tested technology. Things that everyone on the team knows. The argument for boring technology is generally that you won’t get anything that surprises you.
Exciting Technology is … uh.. okay, so bear with me: the examples given are Cassandra (at least 12 years old), MongoDB (>11 years), Clojure (>14 years), and NodeJS (..let’s not touch that). For the sake of simplicity, let’s say Exciting Technology is technology that an engineer is less familiar with and as such cannot for certain say that it will solve the issues they currently have - but there are some shiny new features that they really like!
Let’s … not talk touch on my personal experiences with Cassandra, Mongo, and the like. Let’s not touch on the issues that seemed to be the case at Etsy’s SRE & maintenance of servers. Let’s not even touch on all the fighting going on in the HN comments.
Instead, I think it’s interesting to talk about the kinds of people that do this because I don’t think that either of these articles will change people’s minds.
Managing Humans by Michael Lopp is a book that’s not just about managing humans. In it he writes about engineering culture, different personalities you might find, and communication skills. Things that are sometimes considered tangential to management (but are very important!)
The chapter “Stables and Volatiles” details two archetypes that you’ll commonly see within engineering cultures.
Stables are engineers that happily work within a set of confines - even appreciating these confines such as direction and deadlines. They assess risk, carefully mitigate failure, and aim for predictable outcomes.
Volatiles will show up, stomp on everything that exists, and leave a trail of disruption in their wake. However, when they build.. they sure build a LOT. In some cases, what they make will be novel and would not have occurred otherwise.
Stables and Volatiles are at odds with one another. They do not get along on everything but a team with both can be incredibly successful - even if there’s a bit of conflict along the way. Volatiles become stables, and sometime stables become volatiles, and neither is really good or bad. They just are.
These archetypes are applicable to the argument about boring versus exciting technology. Stables will more likely than not choose the familiar. Volatiles will sometimes choose the foreign. Neither is right or wrong - at least not intrinsically. Instead, it’s gotta be a balance and you’ve got to use the right tool for the right job.
If you lean too far towards boring technology nothing will be pushed forward. If you lean too far towards the exciting you’ll end up with a backend written in Little using a home-grown database written in Haskell. That.. does sound pretty exciting, though, doesn’t it?