A little knowledge is a dangerous thing.
Stack Overflow is an overrated, overused, piece-of-trash website.
Depending on your personal experiences, you'll read this thesis and think one of two things. You'll think:
There appears to be no shortage of videos criticizing the culture on Stack Overflow (shout-out to zyapguy). The difference is, they are often cartoonish and hyperbolic; thus, they do not serve as serious or persuasive analysis. I wanted to keep track of a list of real posts on Stack Overflow, in order to consolidate them in one place and have them prepared whenever someone challenges me on this opinion. This is a case where you don't need to exaggerate the truth; the absurdity lies in the reality as it is.
The scandal isn't what's illegal; the scandal is what's legal.
— Michael Kinsley
Back in 2018 (the brief era during which developers would still Speak To Me), the prevailing attitude among developers was that Stack Overflow was a good resource to rely on. Here is my evidence, anecdotal though it may be: during one of my job interviews (one of the few that led me on the path to getting an offer, no less!), I was asked what resources I use when solving practical problems, and they seemed to show approval when I reluctantly named Stack Overflow. Even at the job in 2018, I heard one of my louder, more extroverted co-workers express extraordinary gratitude for the website, and he questioned how any programmer ever did their job without having that resource available to them! And even at the time, I found myself very displeased with the popularity it had attained. So, once and for all, allow me to explain the reasons why.
If you're short on time, here's the synopsis: The most fundamental problem with the forum is that it does not lend itself to deep, thorough investigations of truth. More often than not, they'll tell you just enough information to answer your question and nothing more. They'll include very few, if any, sources and citations; they'll often focus on revealing code rather than explaining underlying concepts in detail; neither the chosen answer nor the most-up-voted answer will have the most completeness or accuracy; and in some cases, the answers submitted outright contradict one another.
Let me walk through a case study exposing the problems with reliance on this site.
Suppose you learn in your C class that a reference may not be undefined. (This is something that I and many others were literally taught in our courses in C. I wish I were making this up, but I'm not.)
Figure 1. A slide from my internet friend's C++ class. Notice that it insists references are "always bound to an object," unlike pointer variables which "can point to nothing."
But then, by running your own experiments, or by encountering a problem with practical code, or by hearing a rumor on the internet, as is often the case in C++, you are informed that references can have null values. How is this possible, you wonder? Well, you have the world at our fingertips, so surely it cannot be that difficult to answer! You go to your search engine and type "can references be null."
As an aside: If you do this in 2022, you notice that of the top six DDG search results, three of them are from Stack Overflow, another two are from Microsoft (and apply only to C# and not to C++), and the last one appears to be a Reddit comment (which I'd assume is barely a step up from Stack Overflow!). If my anecdotes hadn't persuaded you how famous and trusted this site has become, this fact should: they rise to the top of search results, so much so that search engines have taken to adding a sidebar with the selected answer at the top of the search result listing!
Figure 2. The ubiquity of Stack Overflow in search results. Duckduckgo has a space set aside for showing the "answer" if it comes from Stack Overflow.
Suppose the year is 2020 and not 2022; so you happen across a different Stack Overflow post about the subject: https://stackoverflow.com/questions/4364536/is-null-reference-possible
You notice that the chosen answer is very brief and contains a blunt, simple verdict for its first sentence:
References are not pointers.
This answer directly contradicts the information in the longer, more detailed and thoughtful response given below it:
[...] since pointers and references are the exact same beast in [assembly].
Right off the bat, the top answers are not worded precisely, and they do not give a deep, conceptual understanding of the topic at hand, from the foundation upward.
But the story does not end there. Suppose that, later, in talking with an internet friend, he links you to a more obscure, far less up-voted Stack Overflow post about the subject: "By-Reference / By-Pointer in Assembly Code".
This one finally answers my confusion! But the problem is... it isn't that well-viewed or upvoted. I wonder why that may be...
Consider this question pertaining to casting between different char types. First, notice that the selected answer has nothing more than a keyword in it. Not a citation, not a source, not a paragraph of explanation, not even a mere sentence!
But it gets even worse.
In the comments attached to this answer, the submitter defends its status as the selected answer, by saying that it is one of the earliest submissions. He says he had "'competed' in high-traffic tags with fastest-gun-in-the-west responses like this." Then, he says that "you don't get this level of rep by deleting your answer, even if that's the right thing to do."
To my way of thinking, this comment alone is very telling: people are incentivized to leave their answers up, regardless of whether they are accurate or helpful, regardless of whether it is, by their own admission, "the right thing to do." In other words, it places a heavy emphasis on speed over accuracy — and I always had a problem with educational games that did this, since I was a kid in school. We should be rewarding correctness, not speed, and perhaps that thesis deserves its own blog post.
But it gets even worse.
Notice that in the previous comment, the challenger (who seems to have come out of nowhere, but was called out for having downvoted the answer?) backs off, saying "point taken (especially from someone who has 55x more reputation [than] me!)."
This is very dangerous logic: it perpetuates the idea that people who "have the most reputation" should be trusted blindly and have higher status, regardless of the quality of their answers. At best, this is a specious appeal to authority — but at worst, it's far more sinister, because it's disguising a non-reputable authority as a reputable one!
So, in effect, people are incentivized to favor short, quick, inaccurate or incomplete answers, they get upvoted and selected as The Answer, and then the same people are given Reputation that makes people unwilling to challenge them — which only serves to cement the culture of soundbite-responses.
This whole cultural issue (of always seeking simple, shallow solutions and instant gratification) reminds me of a video lecture shared with me by a skilled Rust programmer whom I met at university.
You'll notice, if you scroll down, that one of the comments reads, and I quote:
"I think Google (search) is a bigger part of the cause, in that it is easier to find the specific trivial answer to an exact issue than to find the general deep knowledge needed to understand the real problem."
I would suggest that the rise of Stack Overflow, together with the incentivization of speed over completeness, is the greater culprit.
Suppose you want to learn how unions work in C++. You write up some experiments and compile your code, but encounter a bug. So, naturally, you do some searching and happen upon this Stack Overflow post which matches the problem you've been observing.
The first thing to notice is that it is marked as a "duplicate." We'll return to this point in a moment, but for now, scroll down and analyze the submitted answers.
There are two answers listed, both with negative three points.
Herein lies yet another indicator that the culture of Stack Overflow is abhorrent: members will downvote a post without explaining why. In this case, the poor soul who gave the second answer (the one posted only twenty minutes after the question was asked, rather than nine minutes) was left hanging, with no human contact and no level of respect given to him!
Yet again we get the message: people are quick to downvote, but they're slow to give explanations.
There are plenty of other duplicate posts that are legitimately duplicate posts. But in this case, it always makes me wonder: if they're duplicates, why keep them on the site? Even more specifically, why allow people to submit answers to it separately?! The net effect is to scatter the responses across multiple different pages, which makes it difficult to read. There must be a more intelligent way to process these duplicates.
But, I should be careful what I wish for. I recall seeing many posts that were marked as duplicates even when they weren't duplicates (sadly, I do not have these references offhand, but if I find them, I'll add them as hyperlinks) — so, if Stack Overflow were to implement my suggestion and bar answers for any post marked as duplicate, it's safe to say it would lead to abuse and constrained discussion.
And this is assuming that you even get an answer to your question — which brings me to our next Exhibit...
Often, you'll stumble upon questions asking for the exact problem that you've been having — that have literally no answers submitted. Here is an example with zero answers after 22 months: "Maven - Docker java.lang.NoClassDefFoundError..."
Figure 3. A meme that proves I'm not the only one to notice the toxic culture on the forum.
If we all were to rely on Stack Overflow, not just reluctantly, but proudly, then it would foster a dependence on one internet-connected resource. How does this scale to when we lose internet access, as I have done multiple times in the past?
Maybe we should all think twice before recommending Stack Overflow, or expecting our applicants to use it proudly, or clicking all the Stack Overflow links before checking the other resources and search results.
Figure 4. A meme of my own making... though I might not include it in the final post.
If you still don't believe me that the forum has a toxicity problem, take it from the company CEO himself: in a recent interview with the CEO of Stack Overflow, he recounts the following tale:
One of my earliest experiences at Stack Overflow was a negative experience with the public community when I asked a question. I got slapped on the wrist by my fellow community members saying it was a poorly worded question... I went wow, I feel that way, and I'm not a novice programmer. I wonder what the average brand new developer feels!
In the same interview, he also states:
There's an internal phrase that we use, Stack Overflow is the context for the code. Our mission statement is to empower the world to build technology through collective knowledge, it's not through code necessarily. Code snippets are part of the answer, but the 'how' is equally important ... a code snippet with nothing else, no context around it, that's the worst possible situation, you don't know you're doing, but around the code is also an explanation of why ... if people don't read the explanation, that's on them, right?
They claim that Stack Overflow is the "context for the code," but in practice, is that really what it's become?
To be clear, it's not completely Stack Overflow's fault. If I could wave a magic wand and change the world in one fell swoop, many of my prescriptions would not be directed towards the company; rather, they would address the broader programming community and industry. It is the culture, both inside the forum and surrounding the forum, that I wish would change. The company could do a better job influencing the culture, but it ultimately the fault of other community members.
But, to be clear, I do not expect it to change anytime soon. I merely want to vent about this and allow people to understand my criticisms, even if they don't agree.
I welcome any feedback.
The mark of the educated mind is the ability to entertain an idea without accepting it.
Public Blog Posts
Private Blog Posts