Why Stack Overflow’s Voting System Is Truly Harmful

Hey guys,

We are back this week again! In this blog post, we are exploring the voting mechanism on the site since you may already know that voting is one of the super-duper important key factors on Stack Overflow. We will see what the future holds with respect to our motivation, but for now, our enthusiasm is still up to the task!

When you like a post, let it be a question or an answer, you can vote on it if you have enough reputation. You only need 125 reputation for downvoting, and 25 reputation for upvoting as of writing this. This sounds all so cool at first glance because it is relatively easy to get to this level. Basically, a few good posts will get you there. Let us see the practical implication,  however.

Many people have brought this up — even before my involvement with relatively strong opinion on the topic — that voting is the root of all kinds of evil. Some contributors have put it even more harsh and snarkier than me, a couple of times. TL;DR: the fundamental law of the voting system is that

    It is not constructive since it does not enforce the system to be objective.

Alright, I already hear you asking why I would think so? Thank you for the question. The ancient mantra says If a post is good enough, it will be upvoted over time, otherwise it will be downvoted. I can see where you are coming from — with mature people in an ideal world, yes, but if that was the case, we would have no wars around the world, like currently in Ukraine and Gaza; everything would be like in Alice’s world.

I would not like to get involved in politics here, but let me put it clear: unfortunately, we do not live in an ideal world. Therefore, in my opinion, we need to establish the right tools that ensure that the assessment of a post remains healthy, sustainable, objective and constructive.

OK, so you probably have the question at this point: “What do you suggest we do to resolve this issue?”. That is a valid question and I certainly appreciate it since this is a core issue in the system that needs an urgent solution in our opinion. So, let me elaborate a little bit more on this.

I would like to be able to see downvotes with explanation to see how a post can be improved in the end of the day. This sounds simple and easy, but let us see why could not have happened in practice so far and what concerns some people keep bringing up. The first couple of points are pretty lame in my opinion, but let us go through them one-by-one with due respect:

1) “I just want freedom not to leave comments.”

Freedom for what exactly? What do you gain by not leaving a comment? Do you gain some time that could be spent on other activities? But then why don’t you just do those other activities with full attention? Let me ask you: why do you leave pointless downvotes around where the OP (or even other users) may have no clue what could be improved?

2) “There is no point in leaving a comment when it is so evident.”

It may be evident to you, but apparently it is not so evident to the OP as well as for other visitors, potentially. Again, it is not constructive to just say “your post sucks” without pointing out “the obvious”. We are also back to the assumption, as anytime with the downvotes, that the downvoter may be wrong.

3) “I am sure others who have more time will explain it.”

Oh, come on… What will happen if everyone has the same opinion, and if you do, others are surely as entitled to it as you are, yeah? It would be a “good” excuse for everyone to escape and the OP may potentially never get the actual reason. That is not so respectful. Even if others are bringing up some issues later, they may do so with ones different from hose you had in mind.

4) “But I do not have the time to leave comments explaining the issue that I see, yet my vote is a piece of very useful contribution to the site.”

Again, if you do not have time to point out the issues, why are you even voting? It is possible that you are completely wrong. I am not saying this is always the case, but it is one possibility anyhow. If you explain your reasons, the OP may be able to clarify the post. Even if you are right, it would be awesome to get the post improved, and a simple -1 does not necessarily help with that. The OP may do another review just in case without any findings.

5) “I would not like to leave a comment because then the OP may go around and start voting on my posts subjectively, potentially with sockpuppet accounts.”

This is the first really valid (well, semi-valid) concern to which I would like to give a bit more consideration, since this is about the basis of all the subjective revenge-voting pattern. It is too easy to go around, track users through their profile, find their posts on meta, moderator application, or just memorize them for upcoming posts, etc. It is really not the right thing to do! Let me say the least:

If you do not try to explain your reasoning, you keep feeding the system to remain as it is today without any systematic change.

If you prefer downvoting without a reason, subjectivity will always remain there, against which you are trying to act. I understand your reasoning and absolutely appreciate it. I just think that achieving your goal ought not happen by this means.

If you need to leave a comment, and the OP goes around to downvote your posts, close vote them, et al, then the OP will also need to leave some reasoning, otherwise it might be very suspicious and you can start flagging the comments or just ignore them completely. Pardon me, but rubbish reasons are still better than no reasons for a post since then at least the reader can know that the several downvotes on the post or all of them are unjustified from the technical angle. Anyway, the point is that the OP will not be able to escape as easily from objectivity as he currently can.

6) “I already wrote to the OP under other posts what was wrong and that is recurring in certain cases.”

This is yet another lame excuse in my opinion. The reason for that is basically as usual: this may not be evident to the OP and as such, nothing may be found on a second read of the posts. It is also possible that the OP disagreed with you on another post, and thinks that you are gone, and will not come back to him, or at least not so frequently. The OP may think that why this downvote could be happening. Also, it can be a downvote due to personal style issues, too, which is inherently subjective and that is why the OP does not care.

Yet, the OP may be absolutely entitled to know what the real reason is behind a downvote, and he needs to know it too so as to see whether the post can be improved in any objective and meaningful way.

7) “I do not wish to look like a negative and non-constructive person by mentioning my downvote, even with a reason.”

I can understand where you are coming from, but constructive downvoting and explanations are done for good. Let us have good faith and say that it allows the site to make proper growth for its quality content. You and the OP may call it a good day since both of you have potentially learned something new along the way in the productive discussion, and the future readers, the posterity, will also be very grateful for the top-quality content contributed, especially if this is a good answer or an excellent question for a recurring issue.

Once the issue is fixed after some constructive discussion and the comments are removed as becoming obsolete to reduce the noise, no future reader will know this other than from looking at the post history. Let us state the obvious: this would not really happen oftentimes and even if it did, that means some trust to the reader because that means the post got stabilized, robust, etc.

I am probably explaining it too verbosely, but what I am trying to convey is that constructive collaboration is very useful for everyone involved and that is why many experts go to Stack Overflow in my experience. They would also like to get feedback, let it be a “thank you” or constructive criticism, but they can learn, educate and provide quality content in the open.

8) “I would not like to leave a comment with my concerns because the OP is known to be too argumentative.”

Right, so there are two cases here to distinguish between, namely:

* The OP is argumentative because he cares a lot about important details. This may well be healthy, actually, as long as it is
really an important detail. Even if you may require more time to discuss the post on this level compared to the initially anticipated level, this may be well worth it. You may lose your motivation to go down this road, but if it still has objective merit, it is still useful and important to the improvement, please go for it, or at least write your concerns down on your level so that the OP can at least follow up with a potential edit.

* The OP is mostly arguing for the sake of arguing. Sure, there are such cases and people, sadly; no disagreement there. What I suggest in that case is not to engage in unproductive discussions for your own sake. Still, write down the things objectively and follow up any objective comments. You can ignore all the subjective comments that may potentially just be brought up needlessly. Of course, you always have the option not to engage in anything, but then I think your vote is unfair.

9) “I do not want to repeat the previous comments written.”

This is one of the most appropriate responses insofar. Fair enough, I would say. This is the reason why the comment upvote feature was rightfully established long ago. If you agree with a comment written, you do not need to reiterate that by potentially duplicating the content. You can easily reduce the noise this way. You can click on the up arrow to show that you agree with previous comment and the OP will know that there is more than just one person to it who think the same or at least very similar about the post.

I have no problem with upvoting a valid and exciting comment instead of reiterating. In fact, I completely support and encourage it to avoid the noise by having “+1 to foo” comments and the like all over the place. Having said that, please do not forget to do this seemingly minor, yet very useful action. It costs you only one click after all.

10) “We already have some pop-up text encouraging the downvoters to explain their downvoters to be constructive and helpful.”

Honestly, I am having mixed feelings about it. On one hand, I can understand where the moderators and community managers are coming from – they also think that it would be much more productive -, but on the other hand I think that this feature does not only bypass the main problem, but it even makes the situation worse.

The fundamental issue with such “etiquette options” in the web world is that it is too easy and simple to get used to ignoring them. It does not really cost you much effort if you do not wish to leave a comment. Practically speaking, I have been ignoring quite a few disturbing “etiquette” and other options on the web out there. I can say that based on experience that I almost do not even bother obeying them, nor do I even notice them anymore. I just got used to the fact that they do not exist in my world since they annoyed the hell out of me at times.

The same principle goes here – if you really do not wish to post comments to be really helpful and constructive, it will be relatively easy to keep ignoring that mystical pop-up. Therefore, this option has just become the “lame excuse” in my opinion. Whenever someone would like to propose an enforcing tool, this always comes up as a “defense” against solving the problem for real. Thereby, this has become an obstacle in the way and that is why I think it makes things now worse than if it had not existed in the first place.

    Towards the proposal

Alright, let us lean towards providing a proposal which I think would save this part of the site!

Some people think that the best place to address this issue is not in the core foundation but only on the surface, and by applying certain “customization”, such as:

* Freezing posts to reduce the “Meta effect”

* Reveal post visits on the profile page

* Run some tools to detect some behavioral patterns, but these are only accessible to community managers and the SE staff, not even to moderators!

* Apply suspensions manually when justified.

* Reverse serial downvotes automatically and sometimes manually.

* Removing comments begging for downvote reasons.

* Revealing them in the first place and flagging them.

While some of these surface activities (reversal and suspension) would remain in place (with much less usage in a more ideal world), most of them do not really try to cure the real root cause of the illness. They are only trying to treat the symptoms. That is the main issue with these tools that take time to develop and even more to time maintain and use, whereas if the issues were addressed properly from the beginning, they would not be as necessary as they currently are. Basically, these tangential non-solutions demand too much time and the community cannot focus on fixing the core issues.

This effort could be used much better. For example, freezing posts to prevent the meta effect is a really strange idea. The problem is not with voting, but unreasonable voting. Voting is very useful as long as it is constructive and objective. Banning such votes are harmful and inconsiderate in my opinion. One thing is clear, however — even moderators and community managers started to see and/or admit the problem, even if just partially. The problem that we have been talking about for a long time now.

OK, so I have tried to elaborate quite extensively on the “show stopper” issues in order to be fair and informative. As you can see, I do not really share the idea that they are really show stopper blocking issues. Feel free to come up with new reasons if you have any. I would be very keen on discussing them because I think the current system is really not good enough, and I think the issues should be addressed unless I am convinced by some other reasons, of course. My proposal for the time being is as simple as this:

Make comments mandatory for downvotes, but make it possible to exchange that with comment upvotes if there are existing comments that cover your view.

Oh, I hear you: it puts too much burden on the poor contributors. Let me briefly ask you one question: how often do you find a “your contribution sucks” only comment useful or even appearing at all on say, mailing lists, other forums, IRC channels, code review tools in projects, et cetera? I think now you may start to understand that why this is a bare minimum requirement for a healthy, sustainable, constructive and objective site like this.

This would be a relatively simple, yet very powerful addition to resolve most of the subjective and non-constructive hazard in the system. If this is too much as a starting point for the community, this could be even softened further down with additional ideas that you can read right below.

1) Make it possible to leave comments anonymously.

While it is possible to establish this with some work, I think it does not bring much gain. You are already not anonymous when leaving an answer or comment elsewhere, so this would not be much different here either. Having said that, if the community thinks this would make things nicer, I would accept it as a compromise for the time being. Just let us do steps towards the final solution, already!

2) Only enforce the reason from -X scores.

This could be applied to -2 or -3. In the latter case, it would be enforced at the time the post goes gray to be less appealing. At least, that is how it works at the time of writing these lines. This would make it possible to leave downvotes without reasoning for the first 1-2 times, but not afterwards.

I think that is pretty much it for today. You deserve my hats off if you had made to this point! As usual, stay tuned, we will be right back with another important issue next week. You will probably be very surprised about that piece of criticism, but I won’t uncover the topic just yet.

Hope to see you coming back. Have a lovely week ahead with a lot of useful contribution and life stories!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s