- HN: Some really repugnant attitudes from time to time need to be downvoted. For example, personal attacks and things that would have been moderated out of existence on other platforms.
- Stack Overflow et al: Answers that are objectively and dangerously wrong. And I don't mean answers that just misread the question - those actually might be useful for someone else who stumbled on the page looking for exactly that thing. I mean answers that are dangerous, vulnerable, misleading, or represent an extreme viewpoint as fact ("buhh object orientation is dangerous, you must write C++ using functional paradigms, it's the only way to make good programs")
I worry that if stuff like this doesn't get downvoted by some, these things will be considered valid - or even acceptable - by others.
Usually SO is a last resort for me once I have done enough research and read through lots of documentation for hours trying to understand why something does not work as expected. I ask a question on SO, and rather than being answered, am downvoted and belittled in the comments. It has made SO a toxic place where honest questions that are researched prior are punished. I do understand why it happens though because for every honest question, there's probably thousands of questions from people who obviously don't do any research.
Then having your "Thank you for answering my question" comment removed by SO moderators because they don't want thank you's on the platform... It's just turned into too much of a toxic place and is an absolute last resort.
IMO. Others experiences may be different :)
The point is that people generally downvote for whatever reason they want. Even with community standards that help to educate people, by empowering people to downvote, they just exercise that right and it has consequences for the community.
This has been my experience too. For someone like me who's a non-professional programming hobbyist, SO has been one of the most toxic and unhelpful communities. My only helpful experiences there are with the people who also happen to have their real names for their user ids.
I've had questions downvoted because I omitted something that "should have been there", downvoted because I included some things that "should not have been there", downvoted because I "asked for a suggestion" (eg: which type of DB is better for this kind of data?), or because I asked for something "that has been asked elsewhere", even though the two questions might have different tech stacks and use cases altogether.
I recommend most beginner programmers to go to reddit instead, where there's a less barrier to entry and visibility for questions. People are happy to answer you in Reddit for some karma, while on SO, the people who answer correctly have to subtly beg the questioner to mark the answer as correct.
I don't think anybody reading an Internet discussion has so little time not to add to the downvote: "This part of your comment is horribly wrong, I warn others against doing it."
Actually, I think I would be more convinced to be careful with that sentence than just seeing bunch of downvotes.
But commenting without downvoting skews the ordering algorithms, and of course if someone else has already made a similar enough comment that you wouldn't be adding materially to the conversation, adding a similar comment just makes the post look busy an therefore, potentially, interesting.
You got a downvoted comment with no replies. Now, why was it downvoted? You can reread it and see if you were rude/offensive, but besides that...
What are things that are moderated out of existence on other platforms and not on HN?
I disagree. Just call them out. I don't like it when anything is disappeared
It seems fine to disagree - but if that is your standard of “extreme” or “dangerous” it makes you seem like a crank and makes your justifications for downvoting seem very biased and wrong.
The dangerous part is presuming that no good software can come from OO. A comment like "I would prefer to see this in a functional paradigm, with as few side effects as possible" is absolutely fine.
The statement that all OO is bad makes an absolute out of a subjective, rubbishes the work and effort of millions and may cause a relative beginner to ignore learning a paradigm that is fundamental to their growth and learning as a developer.
Now then, that said... if you wanted an argument over avoiding OOP, I would argue any statement that categorically says "Avoid X" is an oversimplification. Everything is a balance of strengths and weaknesses, and there are times when OO is the right tool for the job. You are welcome to disagree, and I wouldn't downvote you for doing so _in this context_, but in a Stack Overflow context, depending on how you say it, I very well might if I considered your words dangerous enough.
(i.e. Silver bullets kill more than just werewolves)
That’s a ridiculous perspective.
Again, it’s totally fine to disagree with them, and make solid counterpoints if you can, but calling them dangerous is completely ludicrous.
This makes you sound like a narrow OOP zealot who gets cranky when people point out the truth that any use case solvable by OOP is also solvable with at least equal quality and equal satisfaction of the constraints using functional programming.
Again, merely disagreeing is one thing, and raising pros vs cons of some specific OOP design. But to call it dangerous to suggest OOP may never be needed is just completely unreasonable. I question your understanding of the concept “dangerous” in that case, and if it were up to me, you’d lose downvote privileges treating people like that and misrepresenting their sincere, evidence based software ideas with a derogatory term like “dangerous.”
I can't tell whether you're intentionally building a straw-man here. My original example of a downvotable comment had three statements:
"object orientation is dangerous": It clearly isn't. Badly written object oriented software can be dangerous, and you can argue that OO languages could do more to promote safety within themselves, but that doesn't make OO as a theoretical construct a bad thing, or all OO code bad, or all OO developers wrong.
"you must write C++ using functional paradigms": Again, there are separate challenges when writing fully FP-style C++, certainly there is nothing to say you MUST write C++ that way. And many projects would probably not welcome you rewriting their codebase in that way. If someone goes back to their employer / open-source project / teachers and tells them they are doing it wrong because their code contains OO, they may well be laughed out of the door.
"it's the only way to make good programs": This is obviously a lie.
Then, look at the context - I said "answers that are dangerous, vulnerable, misleading, or represent an extreme viewpoint as fact (...)" - I intended the above three statements to be an example of the latter, I figured that people can easily imagine dangerous / vulnerable / misleading SO posts themselves. But yes, while I do consider there to be dangerous effects from stating a subjective viewpoint as an absolute like this, I do think that the above statements take a reasonable yet subjective statement like "Few pieces of advice have served me as well as [avoid OOP]" into a totally unreasonable objective statement "it's the only way to make good programs"
Also, take a look at my later statement "Everything is a balance of strengths and weaknesses, and there are times when OO is the right tool for the job." I thought it would be relatively clear from this that there must always be times where OO is not the right tool for the job. My original statement was not an attempt to bad-mouth FP. But telling beginners to never use X because it's evil for whatever reason does have its dangers, whether that paradigm is FP or OOP.
> any use case solvable by OOP is also solvable with at least equal quality and equal satisfaction of the constraints using functional programming.
I suspect games programmers and kernel devs might disagree with that. But even if not, I would say that the bar you have set is terribly low. To my mind, a good program should also be readable, expressive, and in keeping with the project's coding standards. Generally, that's where I find that even some well-written FP code may fall down. But again, that's not an argument against FP itself, because I would not argue against FP. As I said before...
> A comment like "I would prefer to see this in a functional paradigm, with as few side effects as possible" is absolutely fine.
In fact, I would go as far as to say I might even agree with that statement. I certainly wouldn't downvote it. Sure, I'd like to see better arguments about why the side effects in that case are a problem, and why FP might be able to improve the code. But that is a perfectly valid and true statement. But hopefully now you can see why that statement is materially different to "object orientation is dangerous, you must write C++ using functional paradigms, it's the only way to make good programs".
> “ I mean answers that are dangerous, vulnerable, misleading, or represent an extreme viewpoint as fact ("buhh object orientation is dangerous, you must write C++ using functional paradigms, it's the only way to make good programs")”
So you are claiming that an idea expressing “OOP is dangerous” is itself dangerous as an idea and that this danger is what merits your downvote.
Yet you’ve done nothing to explain such an extreme and unreasonable point of view.
> Then, look at the context - I said "answers that are dangerous, vulnerable, misleading, or represent an extreme viewpoint as fact (...)" - I intended the above three statements to be an example of the latter, I figured that people can easily imagine dangerous / vulnerable / misleading SO posts themselves. But yes, while I do consider there to be dangerous effects from stating a subjective viewpoint as an absolute like this, I do think that the above statements take a reasonable yet subjective statement like "Few pieces of advice have served me as well as [avoid OOP]" into a totally unreasonable objective statement "it's the only way to make good programs"
Please quote me the bit where I say that I "downvote other ideas because they (the ideas) are dangerous” - I said very clearly that I downvote answers that are dangerous.
An answer is a concrete expression of an idea, but an idea can be correct without the answer being correct. (an extreme example: "We should improve the overall health of our nation" might be a completely valid idea, yet "shoot the disabled" is a completely wrong answer that embodies that idea but takes it in absolutely the wrong direction.)
> Yet you’ve done nothing to explain such an extreme and unreasonable point of view.
Alright, let's flip it: "Functional Programming is dangerous". I can use FP to write a program that accidentally wipes a hard disk. Therefore FP is dangerous. Argue against that.
Functional Programming, when used correctly, mitigates some of the dangers of Object Orientation. Arguably, a correctly written Object Oriented module should not be any less safe than a module correctly written in a Functional style.
You can argue (and probably do) that the implementations of Functional Programming that you enjoy using make writing correct code easier. And that is a valid statement.
But saying "OOP is dangerous" is no more valid than saying "FP is dangerous". Saying "Haddock are slimy and disgusting which is why I prefer Cod". No, fish are slimy and disgusting, and these are both fish. Maybe there are degrees by which some fish are slimier than others, but that doesn't justify an out-of-context vilification of Haddock.
So let me tell you some things that are more dangerous to your code and project than OO:
- Using a language or paradigm that your team are not familiar with
- Using tools that force you to distance your variable and method names from the domain-specific words that the specification is written in
- Premature optimisation
- Following every new framework and fad that comes along.
So yes, it is extreme and unreasonable to categorically state that "OOP is dangerous".
As an answer, it deserves to be downvoted.
As an idea, it has merit and deserves to be explored and justified and compared.
In a place of ideas (like Hacker News) that statement is perfectly acceptable (if not entirely helpful)
In a place of answers (like Stack Overflow), it is misleading and dangerous in that it encourages far more dangerous behaviours.
On Hacker News, I totally agree that downvoting debatable views that are expressed poorly is totally unnecessary. If it isn't a statement that is outright dangerous or intentionally hurtful, my bar for downvoting here is very high. I would trust the audience to discern for themselves.
On Stack overflow, you are essentially there to teach people something. "Don't ever do X" is not going to teach something. Unpopular ideas (and even some popular ones) should be backed up with cogent reasoning, and I think downvoting (with an explanation) is the best way to tell future visitors "this is (probably) not the answer you are looking for".
But - lately I’ve been second guessing myself and wondering whether there’s any virtue in continuing to not use this feature, which is sometimes useful. There are a minority of comments that should be downvoted and I agree with downvotes they receive even if I don’t hand any out.
One reason I’ve been questioning my personal policy is because I’ve recognized that - in the spirit of the article here - that downvotes on HN are given for a wide variety of legitimate reasons that don’t necessarily amount to disagreement. Sometimes comments are very off-topic, sometimes they make assumptions, sometimes they’re polite and nice but factually wrong, sometimes they’re jokes that aren’t funny. I’ve started to view downvotes as being symmetric to upvotes, and I give upvotes liberally and for a huge number of reasons. There’s nothing really wrong with downvotes being seen in the same light... other than negative feelings it might cause and the times it leads to destructive responses rather than constructive responses.
I’d love to hear what others thing, should I start using downvotes now, or continue to abstain?
Well there are two good reasons, maybe they're good enough?
I think HN would be improved by simply eliminating the downvote entirely and rely on upvoting alone, as the parent suggests.
If it's not egregious enough for flagging just ignore it and it'll sink to the bottom. No need to downvote.
As much as HN is far from perfect, I still think there's some healthy disagreement visible and bad faith arguments don't get promoted.
I believe that's the case now. The only difference would be that, if you felt the existing top response was incorrect and there was no better post for you to upvote to try to overtake it, you would have to write one. I think that would be a positive development.
Up == agreement
Down == disagreement
Flag == violates community standards
I generally try to add a thoughtful response to anything I downvote, but I am guilty of downvoting and moving on a couple of times.
I think requiring a response to downvote would be better than removing downvoting entirely.
Guilty, guilty, guilty! :-)
Seriously, I think all of us have done it. But for most it's an occasional thing and we wouldn't miss it if downvoting went away, since most of the time we either write an opposing view or upvote an existing one.
In the perfect world, I'd come to HN and the top 2 voted comments would be the most succinct and well argued sides to the discussion (assuming there's a traditional for+against), then the top voted comments the tier down would be the best refutations of those points. That way I can read both and get to my own balanced view quicker. If all the voting system tells me is "this is what the average HN reader agrees with" that's far less valuable.
For example, if a group of people who tend to vote the same way on certain things all downvote a particular comment, but a smaller group of people with a different voting history vote a different way on the same comment, the system could mark that comment as a minority opinion rather than simply a "bad comment" and give less weight to downvotes from users of the opposing position when sorting that comment.
The HN readers are good at moderation overall, not perfect but definitely good. Maybe it would be enough to have an "agree/disagree" button as well as a "good/bad" button.
Another issue is that places like HN and Reddit only show the total score, and not the upvote/downvote breakdown. I saw a topic here where all the comments on one side were downvoted and grayed out, but when someone put up a poll asking for the opinions that side got about 40%. It's hard to know if a greyed out comment is because the community as a whole feels the comment is bad, or if it's simply in an emotionally charged discussion where the opposition has a slight majority.
I much præfer discussion fora that lack a voting system. The order of comments and submissions can purely be determined by last reply bumping whatever tree had it to the top.
Relevantly, I have found myself accidentally tapping the downvote button a few times on mobile — if you tap and hold on Safari, it brings up a link preview which has the same effect as [up/down/flag] voting deliberately.
Leaving something at 0 upvotes is still a signal, although it’s less distinguishable from “no one saw this”. This approach makes the decision of voting binary (to upvote or not) rather than one with 3 choices, which reduces mental overhead. It also allows me to focus on positivity and finding comments that provide value, and pay less attention to ones that don’t. In the end, I think there can be value in downvoting, but I personally just don’t feel that the benefits of doing so outweigh the costs.