If It Cant Be Perfect Dont Bother

One of the Fallacious Arguments, wherein it is asserted (often incorrectly) that a solution to a problem that isn't a 100% solution is worthless. In some cases, this might be true (or seem to be true)--a 99.99% solution may indeed be suboptimal. In many cases, though, arguments of this type are used by opponents of a technology to discredit the technology which is useful but not perfect.

Examples heard on Wiki:

"Java isn't 100% portable; therefore Java's portability sucks". Usually heard from proponents of languages which are much more un-portable than Java, attacking what is widely seen as one of Java's key advantages. While Write Once Run Anywhere has been overhyped, and Java portability ain't perfect (and leaves you with a Lowest Common Denominator graphics library)--Java is clearly superior in this regard to most of its competitors. I'm not a huge Java fan, but I'll give it this.

Static Typing vs Dynamic Typing--occasionally it is uttered that there are programs for which Type Inference is undecidable (and also, typechecking doesn't catch all programming errors)--therefore we ought to abandon Static Typing completely. (Conversely, many fans of Static Typing make arguments in the opposite direction--that we should avoid any type operations which cannot be typechecked at compile-time.) In some problem domains, this might hold. In most problems, however, there's little reason not to mix the two.

Http Https Security Paradox: Currently browsers want you to have either all the security of Https and a certificate signed by a trusted third party or all the insecurity of Http, there is no space for self signed certificates that only give encryption but do not offer protection against Man-in-middle attacks. The really bad thing is that the browsers scream "danger!" when you use self signed certificates, but say nothing when you use plain Http that is not only succeptible to Man-in-middle attacks but also to eavesdropping. The problem can be resumed in the sentence: "It is better to have no security in http than to have some security with self signed certificates and https".


This would be a problem if we applied it to our own solutions that we ourselves create. We live in an imperfect world with imperfect understanding, so we do the best we can. Do What You Know.


See original on c2.com