Jason C. McDonald Jul 11
Anyone else been passively avoiding StackOverflow lately? And, by lately, I mean "since that last time a few weeks/months/years back when you were flame-roasted for existing incorrectly"?
I've been a member of StackOverflow since I started coding seriously, and to date, I've answered twice as many questions as I've asked. I've helped with the review and edit queues, and assisted with mop-up work during the "Homework Question Floods" that occurs every January and September. I even consider it a must-join community for developers. I certainly don't want to give the impression that I'm bashing StackOverflow!
But if I'm honest, I've been avoiding the place.
Problem Words, or Problem People?
Now, StackOverflow really should be applauded. They've recognized an unhealthy trend in their community, and have decided to do something about it.
But, while they try to make StackOverflow a more welcoming place, the seething masses responsible for creating the toxic environment have taken to the comments section (as usual) to express their displeasure at the changes underfoot.
If you've ever asked a question on StackOverflow, or indeed many coder communities, you will have no doubt had the experience of asking a question or making a suggestion, and having your very life-essence clobbered out of you for your "audacity". I've written and spoken many times on this topic, even coining such humorous pseudo-Latin names as Programmaticus Newbieflamerous and Programmaticus Militaricus to describe these communication styles.
But what really lives at the heart of this vitriol? Here's one "gem" of a comment that I think underscores it nicely...
The site IS welcoming and it IS helpful, if you only put in the effort to learn how to use it. Thanks to the community for making it such a great place by eliminating the garbage users.
...wait, garbage users?
To me, that one comment quite effectively demonstrates the driving force behind the poisonous atmosphere that permeates our coding culture today: We are in the destructive habit of evaluating a person's worth by their actions.
Now, that is not to say we should overlook problematic actions. If that were the case, there'd be no point in my even writing this article! I'll gladly be the first in line to correct a poorly worded question or answer, rectify technical misinformation, and even vote to close questions that clearly demonstrate the person's unwillingness to do the work themselves. But I (hope I) always do it with compassion. Even when my words or actions appear forceful, I aim to never appraise the person's worth as a human being in the process.
That healthy dynamic can easily be observed in the comments sections here on
dev.to(). We inherently, implicitly value one another as intelligent human beings, capable of reasonable conversation and logical debate. As a group, we recognize that we are all at different stages of learning and growth, and aim to support each other in further maturation.
A healthy correction won't always be pleasant to hear [read], but it will never discourage one from earnestly trying and earnestly failing in the public eye, from asking questions (even "obvious" ones), and from participating in intelligent discussion. Mistakes and failure are how we grow.
This may seem obvious, so how have so many people missed it?
Short Fuses and Sunday Drivers
In reading the comments on the StackOverflow discussions, I realized what this all reminds me of: road rage!
It's probably safe to say we've all been there. You're driving along, and some "knucklehead" demonstrates his apparent inability to read signs. Instead, he's moseying along some 10 MPH under the posted speed limit. Then, to add to it all, he makes an unexpected turn, and doesn't bother to inform you of it.
And what do we do?
Is his driving terrible? Oh, absolutely. He probably could stand to have some major driving re-education. He might be a real jerk!...or maybe not. Maybe he's having an off day. Maybe he's tired from working fourteen hours straight. Maybe his wife is in the hospital and he's distracted. Maybe he really, earnestly, just doesn't realize what he's doing!
The trouble is, we jump to a snap evaluation of the person's inherent worth, and then we feel we must inform him of his estimated market value. We blaze on past, giving him the one-finger salute, and perhaps a few choice words of education out an open window. Or maybe we just serenade him with a long blast of our car horn as we drive off into the sunset.
When we stop and think about it, what have we accomplished? We've certainly raised his blood pressure several points, and ours along with it, but has he learned anything? Probably not. If he's having a bad day, we just made it ten times worse. If he's honestly just a few fries short of a Happy Meal behind the wheel of a car, he's not going to suddenly wake up and smell the coffee because of our impassioned overtures.
Again, this doesn't mean we don't do something. We have car horns for a reason - sometimes it's to warn of danger, and sometimes it's to wake up Sleeping Beauty when she's texting through the green light. We may need to flash our warning lights to remind a tailgater that, if we were to stop suddenly, they'd be forcibly promoted to our backseat. We take appropriate actions to warn and admonish.
Note the difference in objective: the latter serves to assess the behavior, often suggesting corrective action; the former serves to assess the person's value, to no positive end. Yet, because of our tendency towards anger, we gravitate towards the former.
Now, anger can be a healthy thing, spurring us to take a positive action to right something that's wrong. It was, after all, my anger at the hateful comments I mentioned that led me to write this article. But it can just as easily, if not more easily, become a deeply destructive thing.
Author and speaker Chip Ingram ("Overcoming Emotions that Destroy") cited that anger is a secondary emotion, caused by one of three things:
- Hurt (Unmet real or perceived needs)
- Frustration (Unmet real or perceived expectations)
- Insecurity (Real or perceived attack on personal worth)
In that light, I think there are two major reasons why road rage occurs:
1) Recognition of danger to ourselves and others, created by someone else's failure to follow the rules of the road. (Unmet real need and expectation.)
2) Anger at an inconvenience to us: we might be late, have to wait longer than we like, or we're just bored from waiting in line. (Unmet perceived need, expectation, and possibly even a perceived attack on our worth.)
Did you notice? Road rage creates a feedback loop! We get angry, attack someone else's worth, making them angry (or angrier), and they return the favor or deflect it onto someone else.
As an interesting side note, a research study found a correlation between the number of bumper stickers on a car and the driver's tendency towards road rage. Customization of one's car is, in short, a territorial behavior. Have you looked at the back of your laptop lately?
I think most of us have encountered this scenario as well. You're tooling around StackOverflow, or any other coding community, and you find something like the following...
i am tryin to rite python code to get stuff frum website s and put it in a db. how do i read the text frum the page? thx
Chances are, you immediately recoil. Seriously? Who is this punk kid writing yet one more web scraper in Python? And to make things worse, he doesn't even want to write it. He wants YOU to do the work! Everyone can see what's wrong here:
The poster has put virtually no effort put into writing a readable post. His spelling and grammar is atrocious, which doesn't suggest anything better from his code! Not that you'd know for sure, since he hasn't shown any code at all. Besides that, he obviously didn't read the plethora of documentation and tutorials on the topic, both of which would have been revealed by a basic web search for "python web scraper". Instead, he's asking this painfully broad question. You, and any other halfway-experienced Python developer, could write tomes on web scrapers.
What's our reaction to this? More often than not, it's one or more of the following.
A satisfyingly firm click on the DOWNVOTE button, and then moving on. They're a lost cause anyway.
A snotty comment, in the ballpark of "Srsly, dude? LMGTFY! Ohh lookie, there's some documentation! Maybe you should READ IT and try writing your own code!" Ha, you sure showed him.
If you feel invested in this one, turn to your social media and rattle off something about stupid questions from stupid people. (Bonus points for tagging the idiot in question.)
Having done your part to inform idiots of their idiocy, you return to browsing the community, when you encounter something else.
Python has a
picklemodule for this sort of thing, and it's pretty easy. You can just serialize the data to a file, and load it later.
Oh no, not this again! The
pickle module is the least efficient possible solution to any problem, and here's another neckbeard recommending it. What do you do now?
Just downvote him and move on. You whisper thanks to the genius who invented that wonderful anonymous dumping button.
Let him have it in the comments! "Wow. Do you even WRITE production code ever? There is always something better than pickle. It's text data, put it in a JSON file and move on. Assuming you're literate, you might try reading sometimes." (You've got a few other clever and witty slams ready, just in case he doesn't immediately cave to your superior intelligence.)
Flag it! After all, this type of technical stupidity should just be purged from the internet.
Social media mockery time again. This is why we have Twitter, after all.
When we're done, we've accomplished nothing more than hurting feelings and loudly proclaiming our perceived superiority. We've abused four weapons...
Weapon 1: The Anonymous Downvote
People fight, rather vehemently, for their right to hit-and-run with this tool, but stop and think about it for a moment.
What does a downvote mean? "We don't like this content." The trouble is, for someone who doesn't yet understand all the dynamics of the community, this is often confusing, simply because people cannot read your mind.
Does the question show no effort? Is the answer technically incorrect? Is the wording hard to understand? Is it a duplicate (and, honestly, most platforms have other tools for handling that!) Is it only a link? Do you feel the question is too obvious? If you're honest, do you just flat out not like the person?
Every time you use a downvote, social responsibility dictates that you absolutely must own your reasoning. That downvote means something to someone. It's discouraging, maybe even depressing, but it isn't educational by itself! Write a brief, respectful, constructive comment that educates the other party.
While some people just don't want to take the time, I think many people that object to leaving a comment do so because they know their reason cannot be explained respectfully. They weren't downvoting for any other reason than just venting their angry or hateful emotions. It was intended purely as a slap in the face, but to own that with words would be to expose oneself as a jerk. You can't live in a delusion of being sanctimonious and admit that you downvoted someone because their grasp of English makes you imagine them as some sort of hairy primate.
Now, I will grant one exception to this: if someone else has already clearly and constructively stated the problem, your anonymous downvote does no harm. It simply constitutes your agreement with the assessment.
Weapon 2: Toxic Words
Do I really need to say much here? In the words of author Brennan Manning...
In every encounter we either give life or we drain it; there is no neutral exchange.
We can either use our words to educate, inform, and inspire, or we can use it to berate, belittle, and discourage. When we're choosing words, we must think about the other person, and choose words that will help them.
Don't misunderstand me, this is not some sort of "bleeding heart" sentiment, advocating tiptoeing around the overly sensitive emotions of others. Admonishment sometimes requires bluntness. New information may not make one "feel" good. Correction may require force. But our aim is different: we may temporarily hurt someone's feelings in order to do them a greater good, but we do no harm.
Weapon 3: Inciting Others to Harm
This is one of the most serious offenses I list here. It is bad enough for us to do the attacking, but when we stir up others to join us in it, we are partly responsible for their actions as well!
This is, bluntly put, bullying. We're gathering our allies together to beat up the target as a gang. This causes some of the most serious emotional and mental harm possible. We might be able to ignore one person, maybe even two, but having a whole crowd of people declaring us to be "garbage" will almost always leave us feeling like they might be right. In turn, that inspires self-hatred, and all the horrendous things that brings.
This is a factor in whether a downvote is appropriate. If someone is already getting verbally flogged, a flurry of downvotes is going to be (reasonably) perceived as an endorsement of the harassment. The same is true for upvoting offensive responses. This is one more reason you should be cautious of how you use voting tools; if you don't take the time to assess the situation, you can easily add to the group harassment.
Weapon 4: Abusing Moderator Tools
In its worst form, Weapon #3 escalates to where one incites moderators to harm the individual. There are many, many appropriate cases where we should be flagging posts, reporting content, and involving moderation staff. However, doing so for anything other than harassment, bullying, and/or violations of community rules can cause the deepest possible harm. This is because moderators represent the community as a whole.
In other words, if someone is being attacked and harassed for a mistake, and a moderator comes in and removes the victim's posts or takes other action against them, that legitimizes the abuse. It says to the victim, "we as a community agree with your attacker's assessment that you are garbage."
This should also give pause to moderators, and anyone else with authority in a community. Your words matter more than anyone else's. To abuse any of these weapons is to act on behalf of the entire community you patrol.
On StackOverflow especially, imagine how a beginner might feel if a moderator verbally abused them in the comments. "This community, made up of hundreds of thousands of programmers, endorses this attack on my intelliegence. Why do I even try?"
Operator Error: Please Reinsert Your Empathy
Could those road rage dynamics I described earlier be similar to those driving our "code rage"? I believe so, although in slightly different flavors...
We get angry at others for failing to follow the rules of the community, even if those rules are unstated, and therefore learned. (Unmet expectation.)
We get angry at others for espousing ideas contrary to those we hold. (Perceived attack on personal worth.) Imposter Syndrome has a huge role in this!
We get angry at others for failing to do what we see as "their part". (Unmet expectation.) This drives "RTFM" statements.
We get angry at others for not giving us the information we need to move forward. (Unmet need.) This may be at the heart of the "What Have You Tried" movement that author Matt Gemmell later regretted starting.
We get angry at others for coming into a space where we are comfortable, and doing things we don't like. (Perceived attack on personal worth, unmet expectation.) This relates back to that territorial behavior that bumper stickers (and by extension, laptop stickers) correlate to.
What do all of these statements have in common? They're all about us! Our needs, our wants, our expectations, our personal worth. Now, there is nothing inherently wrong with having, and seeking fulfillment of, our needs and (some of) our wants. There are appropriate times for becoming angry at broken social contracts (unmet expectations). And we have every reason to be angry when our value is threatened.
The issue is, we've made everything so much about us, we've forgotten our role in helping meet others needs, our own obligation to honor social contracts, and our own responsibility to not attack the value of others.
In short, we've become so myopic, we can't imagine what it's like behind someone else's steering wheel, or someone else's computer keyboard.
empathy this way...
empathy (n): the action of understanding, being aware of, being sensitive to, and vicariously experiencing the feelings, thoughts, and experience of another of either the past or present without having the feelings, thoughts, and experience fully communicated in an objectively explicit manner
Isn't that what we're missing in all of this? Those "garbage users" mentioned earlier aren't really garbage. Many are lost and bewildered in unfamiliar territory, bravely forging forward the best they know how. They turn to us to help - perhaps not in constructive ways when they're asking for finished code instead of guidance, or failing to give critical bits of information we need - but we really need to credit them points for asking at all! They're taking the first step, which is always the scariest: they are publicly acknowledging that they are not capable of solving the problem themselves. If anything is a blow to ego, that's it.
Others who dare to try and answer questions or provide information, are again taking the risk to expose themselves to public criticism. In this age of social media, we know that there is no end to the number of people willing to rip us apart for believing differently. Correcting earnestly held errant knowledge doesn't require a baseball upside the head! It requires respectful, reasoned argumentation to the contrary, paired with an understanding that we're not responsible to convince anyone of anything! After all, we're all wrong about something, but we're seldom in doubt. Sooner or later, you WILL be fighting one the wrong side of a debate.
And yes, sometimes people are going to be too stubborn to listen. Maybe they have perfectly good reasons, or maybe they just would rather embrace insanity than be wrong, but that's a case where we need to make our case (especially for the benefit of the observers) and let it go.
In all of it, we must not allow ourselves to descend into valuation of others. We appraise actions, not people. We address behaviors, not identities.
We're all human, which means we all get angry, whether we choose to acknowledge it or not. As a result, Code Rage is something we all have to battle, some more than others.
In the end, the answer is quite simple: Speak Life!