What I have learned in 10 years on Stack Overflow

What I have learned in 10 years on Stack Overflow
I'm approaching my tenth anniversary on Stack Overflow. Over the years, my approach to using the site and perception of it has changed a lot, and I want to share my experience with you. And I’m writing about this from the point of view of the average user who is not very involved in the life of the site’s community or its culture. These days I've only been answering questions related to VS Code, the product I'm working on. However, I used to actively participate in discussions on a wide range of topics. In 10 years I asked about 50 questions and gave 575 answers, looked through a myriad of other people's comments.

Jon Skeete described the culture of Stack Overflow much better and more authoritative than I will ever be able to do. Its publication influenced some of the chapters in this article, but overall these are my own candid reflections on my experiences on Stack Overflow, what's good and bad about the site, and how it can be used today. This discussion will be fairly superficial, without diving deeply into the workings of the site or its history.

So here's what I've learned from 10 years of using Stack Overflow.

You need to be able to ask questions

At first glance, nothing could be simpler: enter a few words in the text field, click “Submit”, and the Internet will magically help solve all your problems! But it took me almost 10 years to figure out what words to type into that damn field to actually get results. In fact, I'm still learning about it every day.

Asking good questions is a truly underrated skill (as is writing a good issue report, for that matter). First, how do we even determine if a question is “good”? Stack Overflow offers hint, which lists the following qualities of a good question:

  • Does it match the theme of the site?
  • Implies an objective answer.
  • Has not been asked yet.
  • Has been researched.
  • Clearly describes the problem, usually with a minimal, easily reproducible example.

Okay, but what does a “clear problem statement” look like in practice? What information is relevant and what is not? Sometimes it feels like in order to ask a good question, you first need to know the answer.

Unfortunately, the small text field doesn't help here. So is it any wonder that so many users are posting low-quality questions? Sometimes the only answer they get is a link to some confusing documentation. And they will still be lucky. Many low-quality questions are simply silently downvoted, and they disappear into the endless thread of questions.

Asking good questions is a skill. Fortunately, it can be developed. I mostly learned by reading a bunch of questions and answers, noting what worked and what didn't. What information is useful and what is annoying? Although you will still be afraid to use the acquired knowledge in practice and ask questions. Just try your best and learn from the results. I must admit that I myself am a little embarrassed by some of my early ignorant questions, although perhaps this proves that I have improved my questioning skills a lot since I found myself on this site.

Bad and not-so-good questions are not the same thing

I won't sugarcoat the pill: some questions are just bad.

A question consisting of a screenshot and the phrase “WHY DOESN’T THIS WORK!?!” - bad. Why? It's obvious that the author put in almost no effort. This is not so much a question as a demand: “do this work for me!” Why would I do this? My time is too valuable to waste helping someone who doesn't want to learn to begin with and won't appreciate my help. Learn what Stack Overflow is.

Now consider a question entitled "How to remove blue borders on my page," which consists of several paragraphs of text that talks about the CSS outlineproperty, but without explicitly mentioning the words "CSS" or "outline." While a question like this may go against many Stack Overflow guidelines, I disagree, it's not a bad question. The author at least tried to give some information, even without knowing what to give. The attempt counts, as does the willingness to perceive and learn.

However, many Stack Overflow contributors will probably treat both questions the same way: downvote and close. This is frustrating and turns off many inexperienced users before they can learn to ask better questions and even understand how the site works.

Really bad questions aren't worth your time. But it must be borne in mind that those who ask not very good questions do so unintentionally. They want to ask good questions, they just don't know how. If you punish newcomers blindly and without explanation, how will they learn?

A good question does not guarantee an answer

Stack Overflow usually provides faster answers to simple questions that many people can answer. Do you have a question about binary search in JavaScript or about HTML? Wonderful! Receive five answers in less than an hour. But the more complex or specific the question, the less likely it is that you will get an answer, regardless of the quality of the wording.

The likelihood of getting a response also drops quickly over time. When a question goes several pages deep into the feed, it gets lost. A week later, you can only pray that someone with the right knowledge will stumble upon your question (or generously click on it).

You may not like the correct answers

Every month I receive several downvotes for so-called unpopular answers. These are the kinds of answers that essentially say, “the reason is because it's designed that way,” or “it's not possible because...”, or “it's a bug that needs to be fixed first.” In all of the above cases, the authors do not receive a solution or even a workaround. And I suspect that when people don't like what an answer says, they downvote it. I even understand them, but this does not mean that the answers are wrong.

Of course, the opposite is also true: good answers don't necessarily tell you what you want to hear. Some of the best answers first answer the original question, but then describe other approaches to solving the problem. Sometimes I answer a user's question and then write a long text about why it is not recommended to do so.

Whenever expressions of attitude are simplified to up and down votes or a like button, important distinctions are lost. This problem occurs frequently on the Internet. How many social networks allow you to distinguish between “I support this” and “I think it’s well said, even if I don’t like it or agree with it”?

Overall, despite the monthly downvotes, I believe the Stack Overflow community votes fairly. We will stick to this path.

I almost never ask on Stack Overflow

The longer I used this site, the less often I asked questions on it. This is partly due to my professional growth. Many of the problems I face at work are too complex to express in simple questions, or too specific for anyone to help me at all. I have realized the limitations of the site, so I avoid asking questions that I almost certainly won't get a good answer to.

But I rarely asked questions here, even when I was learning a new language or framework. Not because he is such a genius, quite the opposite. It's just that, after years of being on Stack Overflow, when I have a question, I come to the deep conviction that I'm unlikely to be the first to ask it. I start searching, and almost always find that someone already asked the same thing a couple of years ago.

Observing other people's questions is a great way to learn new things about your product.

Now I'm working on US Code, so I made it a habit to look at questions tagged vscode. This is a great way to see how my code is used in the real world. What problems do users encounter? How can the documentation or API be improved? Why does something that I thought was absolutely clear cause so much misunderstanding?

Questions are an important signal that shows how your product is being used. But the point is not to answer and move on, but to try to first understand why the person has a question. Perhaps there is a problem in the product that is unknown to you, or some assumptions that you unknowingly made? The questions also helped me discover many bugs and inspired me to continue working.

If you're maintaining a product for developers, don't think of Stack Overflow as a dumping ground (or worse, a question graveyard). Check back regularly to see what questions and answers have appeared. This doesn't mean you need to answer every question yourself, but signals from Stack Overflow are too important to ignore.

The lines between a question, a bug report, and a feature request are blurred.

Quite a few questions about VS Code on Stack Overflow were actually bug reports. And many others are actually requests for new features.

For example, a question with the title “Why does VS Code crash when I do...?” - this is a bug report. VS Code should not crash in a variety of situations. Answering questions that are bug reports is counterproductive because the authors may be satisfied with a workaround and never file a real bug report. In situations like this, I usually ask users to file a bug report on Github.

In other cases, the differences may be less obvious. For example, the question "Why doesn't JavaScript IntelliSense work in VS Code?" Depending on how JavaScript IntelliSense isn't working, the issue can fall into one of three categories:

  • If it's a user configuration issue, then it's really a question for Stack Overflow.
  • If in the described case IntelliSense should work, but it does not, then this is a bug report.
  • If in the described case IntelliSense should not work, then this is a request for a new feature.

At the end of the day, most users don't care about these nuances—they just want JavaScript IntelliSense to work.

And although these differences are important for me, as the person responsible for the project, in general they should not matter to me. Because questions, bug reports, and feature requests are all ways of expressing one idea: the user expects something from my code and doesn’t get it. If the product were perfect, users would never ask questions about it, because everything would be clear to them and it would do exactly what they want (or at least clearly tell them why it can’t).

Developers are people too

People are emotional. People are irrational. People are assholes. Not always, of course, but sometimes! And believe it or not, developers are people too.

There's a fantasy that we developers like to tell ourselves: “We work with computers, so we have to be rational. We understand cryptic symbols, so we must be smart. Software has taken over the world, so we have to be cool! Cool! Forward!!!"

This is wrong. And if it were so, then God help the rest of the people. Even on Stack Overflow, that tool for professionals designed as an objective knowledge base, even in my own, highly specific corner of VS Code, I continue to encounter all sorts of outrages: logical fallacies, insults, herd mentality, etc.

Don't kid yourself: you're probably not as perfect as you think. But this does not mean that we should not try to get rid of our shortcomings.

Dude, I'm the one who created this

I'm a human too, and from time to time what happens on Stack Overflow annoys me. For example, when a user confidently writes nonsense or simply gives an erroneous answer to a question related to VS Code, a product that I created and which I know very well. Strangely, it seems that the more erroneous the answer, the more likely it is that someone will call it an indisputable fact.

When this happens, I act as in the picture and write the correct answer.

What I have learned in 10 years on Stack Overflow

And several times this resulted in long threads: woe is me for daring to question their knowledge of what I created! Stop trying to be right all the time, you damn smart guys! Because I'm right!!!

It's easy to become cynical in this hopelessness

When faced with an endless stream of low-quality questions, it's easy to become cynical. Has he never heard of Google? Does he even know how to construct coherent sentences? What are you, a dog?

Sometimes I look at dozens of new questions in a day. Constantly observing all these low-quality questions risks slipping into contempt or cynicism. This cynicism can spill over onto the site, as anyone who has encountered an overzealous moderator or spent a couple of hours researching and composing a question will attest to, only to receive negative responses in return and disappear into oblivion without any explanation.

Of course, there are users who don't put in an ounce of effort and post bad questions. But I believe that the bulk of low-quality questions come from people with good intentions (albeit stupid ones). I always try to remember what it means to be a newbie. When you just start, you don’t understand how everything really works here. In some cases, you don’t even know what words to express your problem correctly. Believe me, it's hard to be in this position. And it’s unpleasant when you are doused with slop just for asking a question.

Although Stack Overflow has done a lot to help newbies, there is still much more that needs to be done. I tried to find a balance between adhering to site standards and being lenient towards inexperienced users. This may involve explaining why I voted to close the question or posting a comment encouraging the user to provide more information. I still have room to grow.

On the other hand, I have no hesitation in downvoting users with a reputation of 50 who post questions like “What is the best VS Code layout for JavaScript development?”, or who upload soapy screenshots of code instead of text.

Sometimes I just want to thank you

There is a weak culture of gratitude on Stack Overflow. I remember once upon a time the site automatically cut out the words “hello” and “thank you” from questions. Perhaps this is still done, I have not checked.

Today, anyone who has worked in customer support knows well that too much politeness can get in the way and even seem forced. But sometimes someone on this site does something very important to you, and the only way to thank them is to give them a plus. It sucks.

Efficiency does not require us to become soulless robots. A side channel can provide more authentic communication between people, if users themselves want it, of course.

Sometimes I want to know what happened after receiving the answer

Stack Overflow operates on a transactional principle: some people ask questions, others answer. What happens after receiving a response? Who knows? Sometimes I wonder about this. Was my answer helpful? What modest project did he help? What did the questioner learn?

Of course, it is impossible to satisfy this curiosity. Requiring users to account for how they will use the information they receive would be very problematic, even if you could do that. But it's interesting to think about it.

Gamification is effective...

…when turning processes into games.

I still get a little worried when I see the little +10 or +25 icon in the status bar. Perhaps these little touches of gamification are the reason I've been coming back to the site for 10 years. But over the years, I've also begun to wonder what kind of game Stack Overflow is and what winning at it means.

I am sure that the system was created with the best intentions: to reward people for useful questions and answers. But as soon as you add high scores, it comes into force Goodhart's law, and some users begin to adjust their actions not to achieve maximum value, but to obtain maximum ratings. And this is important because...

Reputation doesn't mean what you think it means.

Reputation is not equivalent to technical competence, communication skills, or understanding of how Stack Overflow works or should work.

I don't mean to say that reputation is useless. It just doesn't mean what Stack Overflow admins mean or what the word "reputation" is supposed to mean. I realized that reputation is a measure of influence. Consider two hypothetical answers published on the site:

  • One about a common git operation. I wrote a three-line answer in two minutes using Google.
  • The other is about entangled graph theory. Perhaps only a hundred people in the whole world can answer it. I wrote a few paragraphs and sample code explaining the problem and how to solve it.

In five years, the first answer was viewed 5 million times and received 2000 upvotes. The second answer was looked at 300 times and given two measly upvotes.

To a certain extent this is very dishonest. Why reward something that was in the right place at the right time? (not everything is determined by luck; understanding the rules of the game also plays a huge role). On the other hand, the first question actually helped a lot more people than the second. Perhaps it is worth recognizing that, in a sense, recognition leads to the accumulation of “reputation”?

So I consider “reputation” on Stack Overflow to be a kind of measure of influence. True reputation cannot be measured by mere points, it comes from the community. Whose advice do I listen to, who helps others, who do I trust? Perhaps these will all be different people, depending on whether I write in PHP or for iOS.

With that said, I don't know what Stack Overflow should do in this regard. Would users be as motivated if instead of “reputation” they earned “cunning points”? Will users remain as engaged if there is no points system at all? I think it's unlikely. And the myth that “reputation” on Stack Overflow is equivalent to real reputation benefits not only the site itself, but also its most active users. Well, really, who doesn’t like increasing their reputation?

No, as most often happens in life, in order to get a real idea of ​​​​what is happening, you need to analyze not only numbers. If a post has 10 thousand points on Stack Overflow, then look at how this person communicates, what questions and answers he publishes. And in all but exceptional cases, keep in mind that Stack Overflow scores alone are unlikely to indicate anything other than a person's ability to use the site. And in my experience, they often don’t even talk about this.

I wouldn't be productive without Stack Overflow

Every time I need to do something complicated in git, I go to Stack Overflow. Every time I need something simple in bash, I go to Stack Overflow. Every time I get a strange compilation error, I go to Stack Overflow.

I'm not productive without IntelliSense, a search engine, and Stack Overflow. Judging by some books, this makes me a very bad programmer. I would probably fail a lot of tests and not solve a lot of problems on the board. So be it. Seriously, every time I use .sort in JavaScript, I have to look up information about when I'll get -1, 0, or 1, and I write JS every day, developing the most popular editor for the language.

No, Stack Overflow is an incredible tool. Only a fool would not use all the tools available to him. So why not be an inner fool like me? Save your brain resources for important knowledge, such as memorizing all the plots of the Seinfeld series or coming up with sophisticated puns (which are so missing in this article, but there will be many others of a completely different nature).

Stack Overflow is a miracle

Stack Overflow allows anyone, regardless of experience or knowledge, to post programming questions. These questions are answered by complete strangers, most of whom spend time of their lives and careers helping others for free.

The miracle is the very fact of the existence and the result of the work of Stack Overflow. I'm sure not everything turns out as well as its creators intended, but they try. Despite all the shortcomings, the site has been helping a huge number of people for many years, including me.

Stack Overflow won't last forever. One day something better will come along. Hopefully this is something that will learn from the mistakes of Stack Overflow and take the best from it. Until then, I hope we don't take this site for granted. This is both a landmark and a living community, which is constantly replenished with new people. If this worries you, remember that this is all very fragile, and even small actions - like helping well-meaning but as yet ignorant newcomers - can have a positive effect. If I criticize this site, it's only because I care and I know how to make it better.

PS

I was still a schoolboy when I came to Stack Overflow. I was just starting to write (ES5!) JavaScript in Eclipse, and it seemed like 90% of the questions started with “Using jQuery, just...”. And even though I didn't know what I was doing, strangers spent their time helping me. I don't think I really appreciated it at the time, but I haven't forgotten.

People will always want Stack Overflow to be something different: a question-and-answer site; a tool for solving household problems; living standard of programming. And to me, this site, despite its growth and shortcomings, is at its core an open community where strangers help each other learn and improve. And that's great. I'm glad I've been a part of Stack Overflow for the past 10 years and hope to continue to do so. I want to learn as much new stuff in the next decade as I did in the previous decade.

Source: habr.com

Add a comment