I’ve been trying to improve my critical thinking abilities of late and to that end, the Skeptic’s Guide the Universe [LINK] has been very helpful. It’s through this means I’ve been re-exposed to the notion of the "logical fallacy". Here’s a link if you’re not familiar with the concept [LINK].
"A logical fallacy is a false or incorrect logical principle. An argument that is based upon a logical fallacy is therefore not valid."
Example A=B and B=C therefore A=C.
A logical fallacy might be A=C and B=D therefore A=B.
There’s essentially no basis for this A=B assertion. This is a trivial example and easily pointed out. When you get into things more complex items reflecting items in the real-world it gets harder.
Here are some Logical Fallacies I’m seeing in software design:
1) Argument from authority: Stating that a claim is true because a person or group of perceived authority says it is true. E.g. "this thing scales, the vendor said so".
2) Looks Good on Paper: A particular design looks elegant and can be easily explained on paper. However is non-performant and entirely unmaintainable in real-life. Example of this is the "enterprise service bus".
3) Design from Best of Breed: Identify the functional areas covered by your architecture, then pick best of breed in each area. You end up with a master of all trades, Jack of none. Your system needs to hang together, you can’t take each area in isolation. These days with software acquisitions you can’t even be guaranteed that choices from a single vendor will hang together as they might have been developed by different smaller companies.
I probably have a few more if I were to think about it. These sort of build on an earlier post "Vegetable Design Patterns" [LINK].