I could preface this with so many disclaimers. I'll mention some specifics at the end, but just to get this out of the way: Yes, I realize that some individuals on Stack Overflow can be negative and possibly biased or outright toxic.
Great, now that's out of the way.
Over the weekend I read a question on Stack Overflow. Like many questions, it was difficult to understand what the person was trying to accomplish and why. Someone answered the question, and their answer looked like a wide miss. It didn't come close to answering the question.
I added a comment to the answer - this is not an exact quote because the answer has been deleted:
Maybe I need some more coffee, but it doesn't look like this answer has anything to do with the question.
When I wrote that comment, the farthest thing from my mind was wanting to make the person look bad or feel stupid. I deliberately left room for the possibility that I'm the one who doesn't get it.
There's no indication that the individual took offense. Someone else downvoted the answer, and then they deleted it. (If you lose reputation because of a downvoted answer, you can delete it and get the reputation back. Awesome!)
Then I reflected on all the times people left similar negative comments on my answers and downvoted them. It happens from time to time. It used to happen a lot more.
I realized that I often took such feedback personally, even though I've offered similar feedback and it wasn't personal, hostile, or derogatory in any way. I wouldn't want anyone to interpret such feedback that way coming from me, but sometimes I interpreted it that way when it was directed to me.
Here's some total honesty: Sometimes I would conclude that other people thought they were better than me because they had higher reputations, and were talking down to me because they felt superior.
Why would I think that? Was it because I could read their minds, or I could see them sitting behind their keyboards scowling or laughing at me? Or was it because answering the question made me feel a little bit smart, but now my I answer was rejected, not accepted, and I was embarrassed? Which is more likely, that they're out to humiliate me, or that they're trying to help other people just like I am?
Here's a different way of looking at it:
- For the most part they have high reputations because they know what they're talking about. One good answer can get you 500, maybe 5000 points. It doesn't get you 50,000 or 200,000.
- There's more at stake than just my feelings. My wrong answer could mislead someone else - either the person who asked the question or the next person who finds it. (I depend on the site too. I want it to show me the best possible answers.)
- The person who downvotes doesn't want you to have a lower reputation. They assume that you'll delete the answer and get your points back.
But here's the most important point: Learning from that negative feedback has improved my skills and increased my confidence.
When I got downvoted I realized that I didn't know what I thought I knew. Or I knew it but made silly mistakes in my answers, just like we make silly mistakes in our code. Or I failed to read the question carefully, just like we sometimes misread requirements. Sometimes my answers were half right. I understood some things but needed to solidify my knowledge about something else.
Here are some of the ways that my participation has helped me and still does, much of which would never have happened without the negative feedback:
- I learned to do some research before saying what I thought I knew.
- I learned to write some code and some unit tests so that when I posted an answer I was 100% certain that it worked.
- I learned to compare upvoted answers to my own and recognize where someone else did the same thing I was thinking, only better.
- If I tried to answer the question but couldn't figure it out, I still read the other answers and often learned something.
- If someone else had already answered the question, I made sure I could understand the answer and asked myself whether I would have come to the same conclusion, and if not, why not?
- I learned that experienced developers occasionally take a more or less pragmatic approach than I might have, and I considered whether I might do the same, when, and why.
- I got tons of experience reading other peoples' code.
I still received negative feedback and got downvoted, and I still do. Over time, however, I received more upvotes and my reputation increased. People began accepting my answers. Now the positive feedback was reinforcing what I did know. I began to recognize questions that revealed people making the same mistakes and experiencing the same confusion I had, and now I was able to help them. Every time I explained something I understood it more fully.
The increased Stack Overflow reputation felt good, but more importantly it was a direct reflection of my increased skills as a developer, which had increased in part because of my Stack Overflow activity.
This didn't happen despite the negative feedback. It happened because of it. Stack Overflow gave me a forum to learn by teaching while having my work graded by top-notch experienced developers who pointed out the good and the bad. And it's free!
Please take these thoughts with you:
- Answer questions on Stack Overflow. Grow with the feedback. It's valuable training you can't get anywhere else.
- Don't take feedback personally. It's usually not personal. If it feels little smug at times, remember that sometimes that's us projecting our feelings on to others. If it really is smug, it's still valuable and free.
- Stack Overflow is made of people. Sometimes people are rude, demeaning, or biased. If you've had some bad experience, I'm not saying that it didn't happen or that you were too sensitive. But they're trying, really. I see tons of good intentions.
- I also have to allow for the possibility that the communities around some tags behave differently. I mostly answer .NET questions. There are tags I don't even look at. Perhaps there are subcultures around certain tags that behave differently, especially if the community is smaller.