I was watching a YouTube video where a massive school of sardines gets devoured in a feeding frenzy by sharks, sea lions, tuna, birds and finally a massive whale and it occurred to me that it was a great metaphor for the technology space right now. We developers are the sardines getting devoured by a media frenzy of technology hype and vendors.
Many don't see it, buying in whole heartedly to the going hype and trends without having engaged their own critical thinking beforehand. It helps to have seen one or two previous hype cycles to know when you're in one and it seems to me that right now has gotten a bit crazy. But at the same time there are so many amazing new technologies. That is what makes it so hard to separate the BS from the true game changing technologies, patterns and architectures.
The weird thing about hype cycles is that they can spoil some really good technology choices. When hype is at its height the thing being hyped is seen as the ONE true way. Older things are scorned and older developers derided for their antiquated ways.
I first saw this for myself with the NoSQL hype bubble. Yes NoSQL databases can be a great choice, when they fit the scenario. I built an architecture mapping tool on Neo4j that is just not feasible on a relational database. I built a data tracing tool first on Cassandra, then on Elasticsearch which again wasn't feasible on a relational store. But developers got sucked into the hype bubble and suddenly NoSQL was the best choice for EVERY situation. Some developers knew I was working on a Cassandra proof of concept and they lamented the fact that "management" probably wouldn't replace SQL Server with Cassandra. I explained that unless they had some serious write workloads that Cassandra was frankly, a bit crap. I mean, Cassandra makes huge trade-offs in flexibility in order to attain the goal of massive scalability with a write intensive workload. Suddenly developers wanted to use it for an internal CRUD app! Why? Because it was the hype and people weren't THINKING.
But thinking for yourself is not easy. When you're a junior you tend to just take what you read in blogs as gospel. Juniors are easily roped into believing nonsense and even us seniors aren't immune from it. When the hype cycle reaches its zenith its easy to get caught up in it. So how do we see through the BS and avoid the hype bubble mentality? I have some thoughts:
Develop your Hype Sense
If you're caught up in a hype bubble right now then you're like your grandma that has three search toolbars in her browser and is probably unknowingly particpating right now in a couple of DDoS attacks. She doesn't have her web sense yet. Think about it, you know when you're in dodgy territory on the web and when not to click a button or link.
Don't believe the hype. It's that simple. Treat ALL hype cycles as BS until proven otherwise. The BS response needs to be automatic. I don't mean that you should be dismissive but you do need a serious dose of skepticsm.
Learn Your Current Tech
If you don't understand the strengths and weaknesses of your current technology stack and architecture then how can you evaluate the new hotness that is being hyped up?
If you don't understand anything about data modelling and your own specific data how can you evaluate SQL Server against MongoDB?
Understand the hyped technology from first principles
Magic does not exist, sorry! There are things called "The Laws of Physics", "Our Current Understanding of Mathematics" and "Our Current Chip Architectures" that get in the way. Each new technology is built with a series of trade-offs in order to attain some goal. What usually gets hyped is the goal and the trade-offs often forgotten about.
Know the goal and know the trade-offs. Those trade-offs are IMPORTANT.
May be wait for the hype to die down
Careful with this one because often new technology enables new business opportunities. If that is your case then as long as you know you're in a hype bubble but potentially there is a big business pay-off, then go for it.
But if you just want to redevelop application X in technology Y because it is "better" then you're in the DANGER ZONE.
Unless you're about to make new business opportunities then think about waiting for:
- the hype to die down
- the tooling around the new tech to mature
- the shared global knowledge and experience to improve
Sometimes the hype is worthy, but jumping on it in the early days can be risky. The tooling is usually much worse, stability is worse and ultimately only history can tell you if a technology was beneficial. May be just wait a while. Do some proof of concepts, play around with it, knowing it's hype and not magic.
So please, develop your Hype Sense, get your BS alerts firing on all cylinders. Your experience and judgement MATTERS, use your powers of critical thinking!
I'll leave you with an amazing quote:
and an amazing Software Engineering Radio podcast episode with Dave Thomas.