Take message queues. ZMQ and the like have basically solved message passing which was a ghastly thing to worry about for many years.
message queues arent at all bad, but they come with additional complexity (most of it operational), and come with a set of limiting assumptions. so my frustration is that they are now the default answer for everything, and we're ignoring this lovely design space, one that becomes increasingly important when talking about scale.