When I think of FUD (Fear, Uncertainty, Doubt), I think of the intangible (and irrational) sense that a given technology is inherently bad, will cause your site to go down, and your girlfriend to leave you.
Over time SQL FUD has cropped up from all the NoSQL evangelists hammering on about how NoSQL solves all the traditional problems RDBMSs have. Do they have valid points? In a lot of cases, sure. But that doesn’t mean that NoSQL is without its own problems.
Part of making peace between the SQL and NoSQL camps should include being honest about the strengths and weaknesses of each technology, so engineering decisions get made, not sales decisions. Every technology has its strengths and weaknesses, just like physical materials in, say, structural engineering.
Structural engineers need to understand all the attributes of materials to build a bridge so they can make the right decision balancing things like structural strength and cost. That wide-angle view on things is what I think of when I think of what an engineer should be. Most of us are called engineers, right? Are we really thinking like one?
I’ll argue that equally-irrational strong belief in a technology and being blind to its limitations is just as much of a problem as FUD (and often its more annoying). With older technologies, it’s the belief that causes you to keep going back to the same technology over and over again, and to ignore alternatives that might be a better fit. With new tech, it’s what causes companies to start to undervalue and alienating DBAs (often ignoring real needs for solid DBAs) because NoSQL will solve all of their problems, ignoring the learning curve of those technologies, and forgetting [taking for granted] everything that comes for free with fully-fledged RDBMS systems.
I think most software/operations engineers know that feeling of when they first start to see the potential of a technology they are learning. It’s new, it’s sexy, and places you can use it (or could have for past projects) become obvious. It’s a great rush, and it’s part of what makes our jobs more exciting. I think we also know the bias of known technology: it’s easier, we already understand it, we don’t need to go outside our experience to make it work. Part of being a mature software/systems engineer is understanding these (and other) forces that work on our own opinions and within our teams/companies and especially how to control them and use them for the good.
I’m not claiming to be the most experienced/senior engineer in town. I’m just calling for us to resist FUD and not-FUD and to make balanced decisions like real engineers.