Golden Hammer
I see this practice almost constantly. When you have a hammer, everything around you starts to look like nails.
When you have working code or a technology wrapped in a lot of surrounding code, it seems like it can solve any problem.
I ran into the golden hammer when Kafka became a well-tested bus. Meanwhile our project used IBM MQ integration everywhere. It took a lot of time to defend a new integration solution and convince colleagues of its advantages for our next integration task.
Symptoms
- One technology (framework, database, bus) is used for every task without exception.
- New solutions are rejected because "that's not how we work".
- Technology discussions boil down to "we already have X, let's use X".
Why it happens
The point is that the golden hammer lets you solve a task without cognitive load. You just pick up a known technology and hit. A new technology, on the other hand, requires learning, hunting for pitfalls, then who-knows-how-much code to rewrite, unclear security implications, unclear maintenance. But all of that can be estimated. If the advantages of switching outweigh all those costs, it makes sense to switch.
It's important to understand: is this a justified desire to stay within the old technology, or the "duckling syndrome", when the first technology you learned seems the best?
Example
The "bad" version: any integration goes through the existing bus, even when it can't do what's needed:
order -> IBM MQ -> order handler
logs -> IBM MQ -> log aggregator # the wrong tool
The "good" version: picking the tool for the task:
order -> bus (Kafka, if you need partitions and replayability)
logs -> aggregator directly
How to fix it
- Map out the tasks and evaluate how well the current technology fits each one.
- Compare "switch" and "stay" by metrics: development cost, support, security, performance.
- Don't confuse a justified decision with the "duckling syndrome".