Stop Thinking Everything is Black and White

Today I was poking around StackOverflow when I came across a comment that irked me a little, and it's not the first time I've seen this behavior.

I've noticed that a lot of people tend to think of things in a black and white way. Either something is right or something is wrong and anything in-between is unacceptable. Take that comment as an example. David comments to complain that btford's answer is too unsure of itself. After that the answerer simply updates the post to sound more confident and David is then satisfied. Seems pretty trivial, but can you tell what is wrong with this yet? Well I'll tell you.

Confidence ≠ Information

This world is filled with people who, either consciously or subconsciously, yearn for certainty and control. They will listen to a pseudo-scientific homeopathic doctor over a real doctor because the unregulated conman has the luxury of being able to sound confident; this is in contrast to the real doctor who has an extremely important responsibility to convey the facts, including risks and uncertainties. If you have cancer and will probably die in three months, a real doctor would be obligated to tell you this information. It would be wrong of him to then follow that up with false hopes and empty promises just because that's what the patient wants to hear.

You know what they call alternative medicine that has been proven to work?...............medicine.

This is not just true for the medical industry; it's also something I've seen quite a bit in the software industry. Calling back to my original example, what do you think either person should have done? Neither the complainer or the answer author thought for a second that maybe they shouldn't reword the answer to sound more confident unless one of them actually IS more confident about it. David even comes back to say "assuming you're right this is now a great answer!" Now that the uncertainty is removed from the answer anyone who comes to it without reading that comment exchange will assume it's right because the answer no longer contains the helpful context that initially let everyone know it might not be accurate.

If one of them took to the web and verified the information then there would be no problem with that person coming back and editing the answer to either a) remove the uncertainty or, b) fix the answer. The real problem is that the answer might not be correct, so it's more than a little strange when simply rewording the answer to sound more confident satisfies the expressed concern. If anything, we should be more concerned now than we were before because now we have information that the author isn't totally confident about, but is conveying with certainty simply because someone asked him to.

This is a very minor example of a much larger problem that I have either observed or fabricated out of confirmation bias :P. People hate uncertainty, but what they don't realize is we are never truly 100% certain of anything. It's not a simple black and white, right or wrong situation. We experience degrees of certainty by expanding and contracting the error bars. For example, radiometric dating is a technique for calculating the age of materials such as rocks. This method of dating materials is not 100% accurate down to the second. People, especially Young-Earth Creationists, love to cite this as a reason to throw out the entire technique and call it unreliable. What they don't understand is that it's all about the error bars.

Just because we can't narrow the age of a material down to the second doesn't mean we can't narrow it down to something. Let's say we are able to narrow the age of some rock to within a few thousand years; our error bars in this instance would represent a time span of a few thousand years. Yes, radiometric dating is a very bad technique to use if you want to date something down to the second. Unfortunately for those who love to shout this criticism, we don't have ANY dating methods that could date such ancient materials to the second. Does that mean we shouldn't use what we've got to get some kind of estimate? Of course not.

The same is true in the software world. I get annoyed sometimes when certain StackOverflow questions get closed (especially when the reason is something as ambiguous and subjective as "not constructive"). It's not uncommon for me to find a question that is exactly related to what I'm looking for, but there are no answers because pedantic community members voted to close the question. I don't quite understand who these questions are hurting. I get that we have to weed out the complete garbage that would otherwise clutter the site, but they get so extremely picky and pedantic about it. What I don't understand is why, if a person decides to be so picky, they don't try to improve the question or make suggestions for improvement rather than simply close it.

The asking party loses out because they spent all that time crafting their question only to have it closed by a band of elitist developers with too much time on their hands. But there is one party that loses out even more than the question author......everyone else. In my time in the corporate world I've introduced a few colleagues to StackOverflow. I've had two of those people give up after their first question was closed with little feedback. It's hard enough to get your question noticed when you're coming to the site for the first time; do we really have to make it that much more of a barrier to entry by just shooing them away?

Some of the best answers I've received are ones that begin with "Don't quote me on this, but I'm pretty sure...". I don't know if the answer author was lazy or just didn't have the time to follow-up their research, but it didn't matter. They often get me started down the right path and increased certainty is then only a few google searches away most of the time. I'm not sure why others don't agree, but that is a helpful answer!

Many people are afraid to sound uncertain about something because they're afraid it will convey weakness. You know what actually conveys weakness? Phony confidence! Pretending to know the answer to something when you don't is so obviously a mistake, yet this is what the majority of people I encounter have no problem doing. Some individuals are so far out in la la land they even want others to knowingly assert false confidence because any amount of uncertainty makes them uncomfortable.

It's okay to say "I don't know." No, really. Qualifying statements with "I'm not totally sure..." or "You might have to double-check this, but..." is NOT a bad thing. It's an extremely important thing that provides context to the reader so they don't waste hours of their time. Ultimately it's my responsibility to verify the things others say, but if they don't let me know when they're uncertain it is likely that I'll copy the code straight from the answer and paste it into my application as the first step. You may say that's my problem and that I should just be verifying all information I receive through something like StackOverflow. You're right, to a point.

A good analogy would be a real-time chat client application and you don't have control over the server. Let's say that the server only ever sends information back to your client immediately after your client sends something to the server. In this situation you would have to write your client app to poll the server at a regular interval to check for updates. You have to decide how often to check, but it can't be too often or you risk overloading the server when too many people join the chat room. Ultimately you end up making a compromise, probably something like 5 to 10 second intervals. You know it will only be sustainable up to some arbitrary number of users but it's a sacrifice you have to make because you don't have control over the server.

It's not completely unreasonable to contact the server administrator and prod them to implement a protocol that would allow the server to send updates to your client in real time. That way your client doesn't have to worry about pinging the server too much, and the users of your client get a better experience because the chat is truly in real time. You'd be more than a little bummed when the administrator comes back and says "That's your problem bro, deal with it."

All I'm advocating here is that it's not completely unreasonable to encourage others to leave a little more context in their answers in order to decrease the amount of effort necessary on the part of the reader. Going out of your way to tell them to remove this context makes no sense at all. We need the error bars! Stop treating them like a sign of weakness and realize that everything in this universe falls along a spectrum of certainty and that it's not just black and white.