Well Designed Foo Can Be Better Than Bar

One of the FallaciousArguments. In this fallacy, the statement that a well-designed instance of foo (where foo is some technology, product, ideology, whatever) can be made demonstrably superior to an instance of bar (where the bar is not constrained to be "well-designed"), is extrapolated to support the notion that foo is better than bar.

The fallacy is that the (often implied) conclusion - foo is better than bar - does not follow from the premise (some foo is better than some bar). Indeed, the premise is often a tautology - in many cases where two things compete, there is considerable overlap between them when it comes to goodness.

One example of this fallacy is found on the EllFour page (L4 is a MicroKernel operating system), where someone says:

Why do MicroKernels matter? Because a properly-designed MicroKernel system can be as fast as a MonolithicKernel, and yet provide significantly more safety and flexibility.

Not to pick on L4 or MicroKernels in general, but this statement would probably be just as true were it reversed, as follows:

Why do MonolithicKernels matter? Because a properly-designed MonolithicKernel system can be as fast as a MicroKernel, and yet provide significantly more safety and flexibility.

The qualifier "properly-designed" is what makes this statement reversible in this fashion.

A "properly-designed" MonolithicKernel can NOT provide more safety and flexibility than a MicroKernel. That is the whole point. MicroKernels? are inherently more safe and more flexible than monolithic kernels. More safe because all the parts of the system are protected from each other. More flexible because any of the pieces can easily be replaced. There are plenty of good MonolithicKernels? which are in real use. If we stipulate that some of these are "properly-designed", and compare them to a "properly-designed" MicroKernel like L4 (rather than a bogus one like Mach), the MicroKernel system has inherent advantages.

Why is this a fallacy, anyway? Of course a badly-designed Foo will not compare well with a Bar that is in widespread use and is (presumably) well-designed. The comparison is intended to show that a well-designed Foo has advantages over the Bars in widespread use. Only if the advantages matter in practice, would one conclude that all Bars should be replaced by a well-designed Foo.

The fallacy is the suggestion that because some Foo is better than some Bar, Foo in general is better than Bar. Now, like all fallacies--the conclusion implied may in fact be true; MicroKernels do have some architectural advantages over the monolithic variety. (We won't discuss that here). Are they universally "better"? A difficult question to answer; and highly dependent on what the GoodnessCriteria? are.

Why do MonolithicKernels matter? Because a properly-designed MonolithicKernel system can be as fast as a MicroKernel, and yet provide significantly more safety and flexibility.

I found this to be true by experimentation.

I am not sure I agree it is an absolute fallacy. Perhaps in some cases if one loaded-up early on proven (expensive) experts and spend lots of time and money on design (BigDesignUpFront perhaps), it may indeed pay off in the long run. However, that is not always a realistic assumption. It may be hard to verify if the experts really are experts, and budgeting constraints may limit resources regardless of what an IT manager desires. In such situations, it may be more economical to pick a technique that works fairly well without up-front loading. It may be a situational fallacy when one does not state the up-front requirements in their claims. (See CategoryDecisionMaking for more on weighing tradeoffs.)

It's a fallacy in the same sense as NoTrueScotsman: it's a virtually content-free assertion.

My bar is certainly better than your bar. However, the judge has forbade me from showing it again to prove it.

See also ConfusingTheoryAndPractice

View edit of November 14, 2014 or FindPage with title or text search