I'm happy to see this happen again! It's been far, far too long.
One of the observations that came out the last time y'all did this was that too many people didn't know how to get started: they struggled to find questions to answer, to think of questions to ask, or to find other forms of participation that fit in with their skills.
So with that in mind, I offer y'all a couple of sections from a guide I wrote for my colleagues. Perhaps if someone gets stuck, or despairs of where to begin... They might find this guidance useful.
What sorts of participation are valuable?
First and foremost, taking visible actions which reflect our values:
- Posting answers which are helpful, informative and guide the reader (not just the original asker!) toward a better understanding of the subject. For maximum impact, prefer answering HOWTO questions (those asking for help accomplishing a specific goal or understanding a specific concept) vs. “debugging” questions (those asking for help resolving a problem in a specific application or configuration), but bear in mind that even the latter can be answered in a way which guides readers toward a holistic approach to problem solving!
- Editing questions (or answers!) to improve clarity, readability, and use language and grammar that reflect well on both the asker and any answerers. Remember: the majority of readers will be future learners, and will follow the example others set for them!
- Commenting on questions or answers to provide suggestions for improvement or clarification.
All of the above activities allow us to lead by example, both in technical acumen and social grace: we should always bear in mind the precepts of our Code of Conduct, and strive to reflect and encourage the best that our community has to offer!
There are also more subtle - but equally useful! - ways to participate:
- Voting serves two purposes: elevating the visibility of useful information, and encouraging authors. The latter is particularly important from a community-building perspective: positive reinforcement for people who take the time to participate constructively helps to keep people motivated and enthusiastic! Down-voting is less important in general, but - when encountering posts with harmful or misleading information - also a useful tool to both motivate authors and safeguard readers.
- Recommending helpful Q&A in other venues (Slack/IRC/Twitter), highlighting the contributions of authors and providing them with more widespread recognition.
A detailed exploration of these varied forms of participation follows...
Answering
Answers are what brings developers to Stack Overflow. A good answer can reach hundreds, even thousands of developers beyond just the person asking the question. It is therefore important to be mindful of where time and effort is spent when answering - and in maintaining the information conveyed in answers. Some tips:
- Generalize problems. Most questions get only a handful of views; they are the "long tail", each helping a handful of people but in aggregate reaching many. In light of this, it is worth being judicious about where time is spent when answering: aim first to answer questions which are specific, but not so niche as to be uninteresting to anyone besides their authors. There's nothing wrong with helping someone track down a performance issue in their thousand-line query, but if you can instead provide an answer that shows them how to identify it themselves, you could help them and others with less effort. A specific answer that links to a guide or tutorial on a broader topic for more details can be an elegant approach, providing an immediate solution for readers in a hurry, and a deeper understanding for those with the time to learn more.
- Choose topics that interest you. Look for topics you know about, want to learn more about, or otherwise pique your interest. This attitude comes across in your writing, and helps to engage readers.
- Show your work. Keep a list of resources you draw on when answering: reference material, blog posts, relevant source code, etc. Citing these can demystify the material for readers, allowing them to learn not just answers but the thought processes involved in finding them. Many readers won't care, but for those that do this lowers one barrier to entry in their focal community. If you (or someone else) has previously written a tutorial or guide to the topic at hand, linking to it after providing a solution can be a great way to break down the process as well!
- Edit the question. More on this below, but... Think of each answer as a mini blog post - with a prologue written by the asker. Taking a few minutes to help their work look good also helps yours to look good!
Editing
One of the more uncommon features of Stack Overflow is the ability for anyone to edit any question or answer. Among the most important uses are...
- Tagging. Most askers pick 1-3 tags when posting their questions, for instance "postgresql amazon-rds-aurora". These tags ensure that the question is seen by people following each of the relevant topics, while also improving searches. Adding relevant tags to questions improves the chances that both the question and any answers will be seen.
- Titles. A good title is essential if others are to find a question that matches their problem. Titles should be specific, descriptive, and reasonably short - for example, a question concerning an error message seen while upgrading PostgreSQL should include at minimum the error message itself, the versions of Postgres involved, and "upgrade". If the asker chooses a less descriptive title, a helpful edit can and should add these details!
- Grammar and formatting. A question or answer that is clear and easy to read stands to do more good than one which isn't; helping authors to make their posts attractive helps them get attention, and improves the experience for readers learning about Postgres.
Technical inaccuracies. This one needs a bit of care: fixing mistakes in an answer (or typos in a question) is useful, but it's generally considered a faux pas to change a post in a way that completely invalidates its author's intentions. Obviously, "fixing" code in a question such that the problem being asked about no longer exists isn't terribly useful, but for an answer this gets a bit trickier: generally, one can alter code or descriptions to fix unintended errors or provide a more robust implementation, but should refrain from replacing the author's preferred approach with an entirely different one in most situations. For example, if the author recommends using cursors, it would generally be inappropriate to replace their solution with a recursive CTE - even when the latter is demonstrably a better solution; instead, a separate answer should be provided which presents the preferred solution and explains its advantages relative to the existing answer.
Voting
Voting is how we indicate what is useful. The system uses votes to calculate a post score, which affects the order of answers, the visibility of questions, the rank of results within on-site search, and a few other things. This score is also used by search engines such as Google to identify useful answers, which may be highlighted in various ways in search results. Votes are also a signal to authors that their work is appreciated (or, in the case of down-votes, possibly problematic). Finally, votes are used to calculate the "reputation" score associated with accounts, which gates access to various privileges on the site. Any user with a reputation of at least 15 can cast up to 40 up-votes per day; those with at least 125 reputation can cast down-votes as well (the total # of up- and down-votes per day cannot exceed 40, and may be restricted to fewer in some situations).
Given the ease with which the voting privilege can be obtained, and the disproportionate effect it can have on both the visibility of posts and the attitude of participants... It makes a great deal of sense to vote as often as possible!
One cautionary note: DO NOT vote on questions or answers from co-workers. If done regularly, this is easily detected - and the consequences can be dire. More on this below.
Commenting
Comments are Stack Overflow's token nod toward non-Q&A discussion; any question or answer can be commented on (by its author, or by anyone with >= 50 reputation); comments are generally considered expendable, even temporary, and don't contribute much to long-term value - but they can be very useful as a quick way of asking for clarifying details or simply providing encouragement to authors whose work you appreciate!
Beware: as with so many other sites on the 'Net, comments on Stack Overflow can be quick, thoughtless, and even crude; whenever possible, prefer answering or editing to commenting, and avoid being drawn into anything that looks like a pointless argument.
Asking
There cannot be answers without questions, and while there is certainly no lack of volume when it comes to questions there can be gaps in what is asked about. Asking a good question is an uncommon and too often unrecognized skill - so if you happen to be good at it, asking a question on behalf of someone else who is struggling can be a great way to help them out. You're even allowed to self-answer if you happen to find the solution yourself (this should be done sparingly however)!
Recommending (suggest questions to others)
Sometimes the most effective solution is just knowing that a solution already exists: if you find or know of an existing answer that addresses a given problem, pointing to it when someone encounters that problem (either on Stack Overflow or elsewhere on the 'Net) can be a great help! It's also a lot easier than trying to reiterate such a solution in, say, Slack or Twitter.
This can be another good "show your work" opportunity, helping new folks get over their apprehension and acclimate to the community.
On Stack Overflow itself, if a new question has been previously answered it is possible to flag these as duplicates, thus leaving a path for future readers to quickly find their way to the existing answers.
What sort of activity should be avoided?
As with any venue, Stack Overflow has its own norms that must be respected. Here are a few common pitfalls to avoid:
Voting for colleagues
My co-worker writes some great posts on Stack Overflow - I wanna go vote for all of them! But if I do that, the system will detect it and invalidate the votes. If I try to get clever, there's still a good chance I'll trip a heuristic somewhere and a moderator will find out and invalidate the votes... possibly weeks or months later! Voting "rings" or other fealty-based patterns of voting are considered fraud on Stack Overflow, and if discovered the consequences can range from mere invalidation of the votes, to suspension of accounts, to account deletion - definitely not something worth risking!
There's a more subtle aspect to this as well: it makes it harder for your colleagues to learn what sorts of participation are actually useful to others. Since you can't see who votes for your posts, there's no easy way to tell the difference between "my answers are useful to folks" and "I have co-workers who upvote everything I write"... That can (and often does) lead to some bad habits.
If you vote for one or two posts from a co-worker without realizing it, no big deal - but try to avoid it, for everyone's sake.
Arguing
It can be so, so difficult to walk away when Someone is Wrong on the Internet! But, try to do so anyway. It chews up a lot of time, and generally produces little of value; present your argument and your evidence, and leave others to make up their minds. And if a conversation devolves into personal insults... DEFINITELY take that opportunity to close the page and do something else (or maybe flag such nastiness for a moderator first).
Long discussions
As with arguments, a lengthy discussion tends to chew up more time than it generates in value. When, exactly, this is true can vary - for a particularly hard-to-reproduce problem, it might be worth spending hours trying to draw out enough detail! But try to be self-aware here, and use your best judgement.
Overt promotion / partiality
Nobody likes spam, but... Nobody thinks it’s spam when they're doing it. Folks who appear to be using Stack Overflow only to generate links to or leads for their product/service tend to get a backlash from the communities they interact with - and that's precisely the opposite of what we're looking to accomplish! Don't be afraid to link to something you or a co-worker has written when it is directly relevant, but also don't be afraid to link to anything else on the Internet when it is relevant - and above all else, avoid linking to irrelevant material.
Good luck, and... As always... Have fun!