What a bad day at work taught me about building Stack Overflow’s community
stackoverflow.blog
stackoverflow.blog
This question was quickly edited/changed by someone else to "How do you do AUTO_INCREMENT in Oracle". And then it was marked as a duplicate and quickly closed.
I never asked a question on Stack Overflow again.
It sounds like you don't want it to be "the place where everyone can ask questions" so much as "the place where only good questions get civil responses".
If SO/SE were rebranded to be less inviting it wouldn't be "under siege".
The operators of the site refuse because it would limit their advertising reach.
Both sides have become more entrenched over time, and the result is a unhappy disintegrating mess.
I just stopped asking questions there.
I find that simultaneously troubling and, given my experiences on SE, unsurprising from someone whom I assume is a SE mod. If that's the position that most moderators take, no wonder it's such a caustic place.
In development, auto-increment appears to be previous field +1. Developers write code expecting that behavior and relying on continuous IDs without gaps. But, well, for example, Oracle doesn't rollback sequence values. They also pull them in blocks (I think blocks of 20?). So sometimes you can end up with numbering like 1,2,3,20,22 if things were weird at just the right time, and you probably never saw it during development or QA unless you happened to know to try to force it.
Then you get things like SQL Server resets auto increment field values on database export/import, so numbering which used to have gaps in the original will have no gaps in the import, causing the numbers to change. (I have no idea why, just seems like a bug/disaster waiting to happen.) Changing some ID fields tends to cause obvious disasters, as you usually have several tables which store a copy of the old auto ID value to join on.
I've seen several production data loss issues as I learned about the joys of this data type and prefer to avoid them as I learned more.
GUIDs require more storage, and are likely (definitely with v4 GUID) to lead to index fragmentation. Postgres requires an extension to do most useful things with GUIDs whereas SERIAL is ready to go. I'm very pro-GUID yet don't universally prefer them in databases.
WHY questions are not good use cases for what Stack Overflow is trying to accomplish. WHY questions to a community that isn't the original developer of a tool have subjective answers and Stack Overflow is trying to be a place of objective problem solving. Possibly your question was better suited for an app like Quora.
I still sometimes post questions in the hopes of an answer, but 99% of the time the question is too subtle for the site and I either get no answer, or answers to a question I didn't ask.
Personally, I don't like SO and I'm not convinced we're better off having it around.
That sort of curiosity makes for a good Ask HN post. Maybe give that a try next time? https://news.ycombinator.com/ask
(For anyone who doesn't know, those are just text posts. It's conventional to put "Ask HN: " at the head of the title if you're asking a question, "Tell HN: " if you're telling rather than asking.)
Stack Overflow doesn't care about helping users get answers to their questions; they care about creating a Google-indexed repository of high-quality questions and answers. These two aren't the same because of the concept of a "high" or "low" quality question. If you go to a consultant (or even a helpful fellow employee) with an vague, ill-formed question with a lot of specific detail about your exact context and problem they'll help you through it. Stack Overflow doesn't give a shit. No one is going to waste time giving you a nuanced answer to a complex real-world situation; nor is it with their time to cross-examine you to find out what your real question is. That would be both time consuming and unrewarding - unrewarding because it will help at most one person. No one else will care about your specific situation, so your ceiling is at most one upvote. If you want that kind of help, you have to pay for it, in one form or another. Unfortunately, most new users ask a question about something their genuinely confused about in a topic area they've just started to learn. Big mistake. Such questions were already asked 5 years ago and you'll get closed as a duplicate, or your confusion will be interpreted as cluelessness and closed as unclear. You'll get a ton of downvotes in either case.
I like stack exchange; I have a few thousand points on two different sites. I enjoy answering questions, or even just seeing what kinds of questions are being asked, and of course use it almost hourly when googling for different problems. I rarely ask a question though, and usually regret it when I do. But at this point let's just admit it's basically just a wiki with a psuedo-Q&A gimmick.
[1]: https://lh3.googleusercontent.com/avINNb1_Dg2h6QfDRJOpnWVFWu...
I'll add that experienced Stack Overflow users don't care about helping other users. They care about badges and reputation, which is a proxy for helping users but not quite the same.
So to me it's more like a wiki with a pseudo-Q&A gimmick with a LinkedIn-meets-github-repository-activity-bragging aspect to it, which is particularly inviting to people who like taking down others and feeling intellectually superior, even if that means telling someone that their question is stupid – which means breaking a rule that is essentially the cornerstone of any other Q&A setting.
Although I'm sure that happens, the site is explicitly designed to be a pseudo-wiki (Jeff counted Wikipedia as one of its inspirations), so if you ask a question that's too specific to your use case (i.e. that other users will not be able to put into practice) or a matter of opinion, then there's a legitimate reason to close it as not an appropriate question for Stack Overflow. Most other Q&A settings, such as Quora, are not trying to be pseudo-wikis, so these questions make more sense for those contexts.
For example, if you asked, "Should I use MySQL or SQLite", that's not a great question for Stack Overflow. You might instead ask, "What are the key differences between MySQL and SQLite" which can then provide the insight to answer your original question as well as help other users.
I'm pretty sure if you ask that exact question, an even if nobody has asked it before so it isn't a duplicate, someone will find some reason to shoot it down.
And the reason: closed as not constructive by Kev Feb 28 '13 at 13:12
Note that as time went on, it became one liners and anecdotes... and everyone has their own anecdote of what the differences are and how important those differences are to that person... and that leads to discussions and page finding the answer you're looking for on page 40 of the answers somewhere deep in the comments of an answer.
That wasn't the goal of Stack Overflow.
That's just really the same question rephrased. If you think the latter shouldn't be closed, then just edit the former to read like it and leave it open.
Which is 100% disingenuous, when Jeff Atwood was first working on SO, gamification was high on his list of things he wanted to do, and it's been a part of SO since day 1.
StackOverflow on the other hand will often give you an actual critique of your question. That criticism can be really frustrating, but it's often good for you (it has been for me). Often the problem is a problem only because of how you perceive the problem space, or you're wrong about fundamentals. Other times you're not including important details because you didn't know they were important and just having that pointed out can help, or this problem is of a known form with a known solution - you just didn't know the "magic words."
There's even something to be said for forcing people to learn a bit about the community before jumping into it. As annoying as that is and as much as it is an on boarding obstacle - it helps people work together. The on boarding process for a driver's license sucks and puts up tons of barriers, but with good reason.
I don't disagree with anything you've said, or deny that super rude and unhelpful behavior occurs there, I just want to say that some of the "bugs" of StackOverflow are probably "features."
You really are giving too much credit to SO here. It hasn't been my experience with it at all.
> StackOverflow is one of the few ways you can learn to [ask good technical questions]
I partially agree.The fear of a withering dismissal does motivate many people to carefully formulate questions. In fact, I've answered my own questions more than a few times by just starting to write out my questions on stackoverflow.
It still pains me, however, to witness the persnickety behavior, close-votes, down-votes, and cold commentary that people get when they ask an earnest question. No one deserves that, not novices, not pros. It's never OK to be mean to someone even if they aren't abiding by the very long list of arbitrary and inconsistently enforced rules for asking a question.
I am not hopeful that stackoverflow will change any time soon. There are factions which actually relish the gamification of the site and their own personal insanely rigid interpretation of the rules. Some even rage-quit a while back when the first steps were announced towards addressing inclusivity and rampant meanness.
Another issue which comes about from the overzealous duplicate tagging is that not all software engineering questions last forever. If someone is asking how something works in C89 and gets the best answer, and then someone else asks the same question five years later, the answer will be the same. But if it is a question about JavaScript or new C++ or Python, then answers can get stale pretty fast. One workaround the community uses is taking those questions that are top hits or top quality and keeps editing them year after year. But that only works for the high profile questions and answers. The policy hurts the site overall.
In fact, SO is fantastic, the best ever at what it does, by far. It does what it does, really well. When it started, I occasionally asked or answered questions; now I don't, and it has nothing to do with community (good or bad). It's because, you know, all my questions are already asked on there, and answered, often multiple times.
This doesn't mean there won't be more questions that need asking, as of course there will for new technologies especially. It means that the ratio of users to questions has risen exponentially, so that the % who need to do _anything_ on SO has dropped.
You want the typical newbie experience? It's this: 1) types question into Google 2) clicks on link to SO 3) may have to repeat steps 1-2 a couple times 4) finds answer to their question 5) goes away
There is nothing in this that resembles "community". Like wikipedia, there may be a core group of ultra devoted users who keep adding new content. And you know what? That's ok. Perfect, even. The problem with SO's community, is that it's thought of as a community.
The worst thing they could do with SO, is try to make it a community. We already have Facebook and Twitter, and they didn't turn out so well. We don't have another substitute for Stack Overflow, if they try to turn it into a social network.
+
> Over the next few quarters, we’re going to be taking a step back and re-evaluating how we deliver feedback to users about their questions. We want to make sure people are getting necessary feedback without feeling called out or publicly embarrassed.
My bet: they'll keep the mechanisms exactly the same and hide from the newbie user the information that their question has been flagged for closing, marked as a duplicate, etc., and show a 'temporary ghost score' capped at zero.
The answer wasn't a Q&A help site it was a high quality curated wiki of the best answers and questions. It isn't supposed to be a forum where you come to ask your one off questions it supposed to be a place where you encounter a unique technical challenge figure out what the core issue is and then see if anyone else knows how to resolve the core issue and then have that core issue answered forever and always.
The one time I asked a Question on SO it was a very positive experience that went well got answered quickly, but I first had spent thirty minutes documenting everything checking the actual docs and ensuring I had done my due diligence before throwing it out there for someone else to answer.
If you aren't willing to put in work to find the answer to your question why the hell would you expect someone else to.
To me, a lot of times naive and new user questions are excellent opportunities for learning, mentoring, and sharing. You have this little moment where you influence someone in a positive way, make them feel welcome, and maybe put them on a path to growth as a developer.
https://stackoverflow.blog/2018/04/26/stack-overflow-isnt-ve...
The main constraint to work around is that, currently, question pages are mostly globally public. SO could change that pretty easily. They already have a lot of the mechanisms.
Like, it could be as simple as only showing downvotes and downvoters if you are logged in and have enough user 'points.' Otherwise, just show the newbies the result ('marked as duplicate' etc), and a [-] instead of -7 on the question tally. So it doesn't feel like a crowd of people yelling at you.
And, what could be really super cool, is if the SO team can auto-recommend learning materials specific to the programming language/framework/whatever. Like if I ask a stupid question about Django models, which becomes marked as duplicate, SO NLP's the question then matches it to the Django docs, which they've also indexed via NLP.
If there's some reason why you really need to see specific reasons the elite users decided the question was a duplicate or unclear, SO could use progressive ui design. Instead of blasting newbies in the face with criticism on the question page, make them click to reveal why H4x0r69 said your stupid XSS question confused CSPs and CORS, so the experience is a dialectic rather than public shaming.
You'll encounter an absolutely shocking amount of utterly stupid questions. Yes, I know, stupid questions supposedly don't exist. Judge for yourself after spending an hour looking at the new queue for PHP and JavasScript questions.
Once you've done this, and still think the experience for new users should be made better, I commend your kindheartedness and patience.
Imagine though if they had some kind of coaching system based on down votes. If you get no response or get negative on your early posts, you get a private (automated) message with helpful tips. Better yet, you get a link to a SO question that goes something like, "My question is not getting any answers, what can I do to improve it?" or "My question got down voted a lot, what can I do to improve it?"
I use SO multiple times a day and sometimes feel the urge to contribute back. I don't have enough expertise to help with deep problems, but am patient enough to work a newbie through their bash/awk/sql questions and it's enough for me to hopefully make one struggling person's day a little better.
I think part of the problem is that those old users think of the place as something for eternity, when in reality it's transient. Repeating questions is desirable. Instead of closing the new questions as duplicates, it should be occasion to retire the old question. Sure, there are some answers that still hold true 10 years later, but how is the one looking for an answer supposed to know that?
My point is, by discouraging behavior that the community is "generally" opposed to, SO helps in ways beyond just answer questions. That said, if they can make it a little nicer to ask a question, without losing the core value they provide (IMO - quality questions & quality answers), then by all means lets give it a try.
> https://stackoverflow.com/questions/10160079/how-to-find-nea...
Which is a terrible way of phrasing that question. "next/previous double value?" "like numeric_limits::epsilon but for given number?" "Quite self explanatory?" I didn't - and couldn't have - found this question via Google because it doesn't actually ask the question it purports to - it makes vague allusions to it and hopes the other party will know what they mean. The page would be much improved from a better question with a precise technical description of the exact problem asked because then the page would actually contain the keywords that people would be looking for. But stack overflow, by design, believes that the One True Way to ask a question is the way it was asked first, and that everything subsequent is a duplicate and should be closed.
1) Grace period. For new questions (and especially for new users) - add a grace period where the downvoting, closing questions, and voting to close are all prohibited. Could be 4 to 24 hours - some optimal window where questioners can read comments, clarify their question, add/revise code examples, etc. Getting downvoted or closed is an extremely toxic experience and tends to position the well for all questioners, be they newbies or veterans.
2) As an answerer I also need a way to watch a question and see if it improves over time. So when I provide feedback in a comment, or flag/watch a question, I need a historical view of all my threads.
Right now the experience is upvote or downvote right away, proffer an answer right away, vote to close or otherwise flag right away; there's too much immediacy in the interface. It feels like a churn. And churn is a game that appeals to rule enforcers (moderators).
3) Chat. A bad question may be intrinsically bad - incoherent and confused and unanswerable by anyone. Or a question may be bad in context.
SO is like email. It's asynchronous and creates a conversation history. In this context a good question is direct, concise, and descriptive.
Many questioners approach SO like it was a chat. They need to ask several small questions before they can formulate a real question. They need an informal conversation (chat) to set up a well structured, intelligible question (email). Many users are looking for help through the whole process: exploration > formulation > resolution. SO is optimized for the last step and ruthlessly moderates out the antecedent steps.
SO already has a chat at https://chat.stackoverflow.com/ - but usage seems sparse. Instead of "vote to close" being the only option for bad questions, maybe recategorize them instead. "Send to chat" or "Request for comments" to flag a question that needs help getting to an answerable state.
Most of you probably don't have this problem because you've long contributed to Stackoverflow. But the user experience isn't just hostile to newbies asking questions but also really anyone who hasn't been contributing for a long time.
I think they have it backwards. They should prioritize answering questions and adding comments, not asking questions.
The lack of regard for the context of the problem the OP is trying to solve/trust that they have their reasons and project constraints for doing so is annoying and disrespectful.
1. It starts as a community of people eager to share their knowledge, help people, etc.
2. Initially, the small community of users scours every (or a large fraction of) new questions that come in, jumping at opportunities to help (and perhaps also demonstrate their expertise etc: it feels good to answer a question well, like disposing off a level of a video game or whatever).
3. Over time, as many users come in, the community develops its own norms of what's good and bad, its own in-jokes and in-group markers / shibboleths, etc.
4. At some point, the number of new user actions that come into view becomes too much for one user to manage. Somewhat overwhelmed, and given their overdeveloped “connoisseur” tendencies at distinguishing between good and bad questions (https://xkcd.com/915/), they tend to look for shortcuts to dispose of questions (“this question is bad because ____”). Any question that does not match the in-group standards of a good question can easily be disposed off instead of engaging with them. It is easy to forget that these standards are somewhat arbitrary, and often not even encoded well anywhere... and even if they were, new users won't read it anyway. It is also easy to forget one's original motivation and purpose, of helping others.
The end result is that new users asking their questions in what way seems natural to them (remember Sturgeon's law) almost uniformly have a bad experience, though from the perspective of the regular answerers of the site, they are continuing to answer good questions at the same rate.
I have not had a bad experience asking my questions; I'm pretty sure I can still go to one of these sites, ask a question, and have it be well-received, but that's because I know the norms, the superficial things that make a question look like a good question “worthy” of being answered. But whenever I look at say Stack Overflow (the oldest, biggest site, and by far the worst offender in this regard), I see many horrifying instances of a new user's question being “rejected” for trivial reasons, when in the old days we'd have helped the asker improve the question and worked harder to extract the “pearl” inside the question.
(My last phrase reminded me of the title of a post from 2011: https://stackoverflow.blog/2011/06/13/optimizing-for-pearls-... which ends with:
> Therefore, the only logical thing to do is to maximize the happiness and enjoyment of answerers. If this means aggressively downvoting or closing unworthy and uninteresting questions, so be it.
I think this was the right choice to make at the time, and if Stack Exchange Inc in order to make the sites more welcoming ends up making the sites a less fun place for answerers there won't be much of value left, but still there's a lot that can be done to understand why otherwise initially well-intentioned answerers end up behaving this way over the course of years, and finding ways to keep answerers on the site without regularly crushing those seeking answers.)
My sister leaves Facebook every few months because she perceives there's too much hostility there, then rejoins again a few months later to see what's going on in the family. I see most of the posts and comments she sees, and I can see why she thinks people might be belittling her, so I don't blame her. I'm glad she doesn't try to get into technical discussions where the appearance of hostility can be far worse.
* Mostly looking at Twitter and Facebook with their explicit "engagement means my friends will see this" algorithm
That created a problem that has snowballed and is probably to big to ever really fix now. It is caustic, its not user friendly (even to users with experience).
as others have suggested, (part of) the issue is with the nature of the site itself. we can talk about elitism, seniors shitting on "noobs", whatever. the truth is, there's all walks of people on SO. there's a continuous barrage of bare-naked prompts for "do my homework for me", there's a continuous barrage of "(i don't even know which side is up, but) what's wrong with this gymnastics equipment i'm using?" questions. if you're any kind of regular in that kind of environment, you'll eventuaatlly get exhausted. the only way they can improve the site for "beginners", however ill-defined that term is, covering both the blatant homework cheaters and honest learners, is to limit engagement by force. "you seem burnt out, you can't post comments or answers for a week. come back when you're in a better mood." that seems like a sure-fire way to drive away their knowledge pool and ultimately their revenue stream. another way is to rate-limit the crappy input, but that doesn't seem to be what the article is hinting at at all.
for all the bitching about how toxic SO is, this is not my personal experience. however, that doesn't mean i think the format of the site has merit. IMO, if you want to fix the experience for honest neophytes, you need to enable dialogue. a newbie asks a ill-posed question, a senior points out the misconceptions, asks for clarifications. the newbie comes back with more information, improved followup. senior is finally in position to provide a red-meat answer.
i just described a mailing list, and that's a format you cannot sell with the kind of margin SO has been raking in. they could ditch their programmers and employ a bunch of writers to collate the wisdom of various product-specific mailing lists into an encyclopedia, but they're not interested. i understand that, it'd be a hell of a pivot. but if they push on catering to the lowest common denominator, they're doomed.