Platform Integrity Social Software

Making Stack Overflow Work

A few weeks ago I stopped by the Social Design Club and gave folks a tour of the Stack Overflow/Stack Exchange Q&A engine. After a few years away, it was fascinating to dig into the details of an intricate system I helped maintain for a long time. The design decisions remain relevant to people working on social software today, so read on for lessons from one of the most successful communities on the internet.

Without an entire book, it would be hard to cover everything the platform does well, so treat these as some introductory highlights.

Preamble: “Collectively increasing the sum total of good programming knowledge in the world.”

According to one of its founders, this was the ultimate intent of Stack Overflow. Since 2008, the site has changed the process of software engineering so completely that it’s easy to forget things were ever done any other way, but useful information for debugging your code used to be a scarce resource on the internet. If you were trying to solve a coding problem, the help you needed was probably locked up in an out-of-date book somewhere, buried in a forum post interspersed with spam way down the page, or worst, on Experts Exchange.

Experts Exchange was a technical Q&A site. Their content often came up in search engine results, and when you clicked through, they threw a paywall in your face. Sometimes you would pay to see the content, only to find it didn’t solve your problem. The affront of Experts Exchange to developers everywhere was much of the animating force behind Stack Overflow’s creation.

Finally, it’s important to realize that site creators Jeff Atwood and Joel Spolsky were celebrity programmer bloggers for years before they teamed up on their shared project. At a time when developers had less clout than they do today, Jeff and Joel were talking about how to get better at the craft of software engineering, and advocating for greater respect for developers in the workplace. When Stack Overflow showed up, it presented an opportunity for lots of programmers to collaborate on a community with their heroes.

But how do you tackle a goal as big as the one above?

An MMO for Creating High Quality Artifacts

Perhaps the most remarkable thing about Stack Overflow, and the wider Stack Exchange network, is how it incentivized a ridiculous number of humans to behave in relatively constructive ways towards a shared goal on the internet. I believe this can be attributed to 3 major factors:

  1. a clearly defined shared identity
  2. tons of effort engaging and interacting with the community, at least early on
  3. brilliantly designed game dynamics.

All of these were essential, but here we focus on #3.

Questions & Answers as the prime information type

If you glance at this image, it’s really clear what the folks who made the site want you to focus on.

From the Stack Exchange Welcome Tour

Everything that happens on Stack Overflow, and throughout the Q&A network, is meant to be in service to the creation of questions and answers. Fittingly, those get prime real estate in the UI. There’s other stuff going on, but it’s all smaller gears running in the background in service to the larger goal.

Community-defined heuristics for desired content

A group is defined as much by who they’re not as by who they are, and the early Stack Overflow community knew this. Folks didn’t want just any Q&A on their site. Case in point:

“How is babby formed?”, a Yahoo! Answers post often cited as the antithesis of Stack Overflow’s aspirations.

From jump, the intent was to help programmers be better programmers, and idle discussion was discouraged. Armed with this clarity, founders, community members, and staff engaged in countless hours of arguing, debating, rehashing, and consensus-building over the years about what kinds of posts were a good fit for the site (this tips into #2 above). These conversations eventually coalesced into the Help Center, which provides rigorous, thoughtful heuristics for what good and bad questions and answers looked like.

In practice, the community came to reward posts which:

  • Demonstrate what the asker has already tried
  • Provide enough context for others to easily repro the issue
  • Include code snippets
  • Are well formatted, in complete sentences, free of typos
  • Are interesting for experienced developers to understand and solve

The more highly voted an answer, the higher it is on the page. This means visibility is dictated by perceived helpfulness, not chronology. As a user, upvotes on your content give you rep, creating a persistent, quantified standing within the community.


As you contribute more posts the community approves of, you climb the ranks in rep. This unlocks privileges which allow you to engage in various moderation and maintenance tasks.

Privileges listed on the Stack Overflow Help Center.

The beauty of this is the people who’ve demonstrated the most investment in the community are the ones empowered to help care for it.


Posts are flagged and potentially closed when they’re unclear, too broad, or simply off-topic, maintaining the focus and quality of the site. 

This moderation functionality is a natural pairing with community-defined content heuristics. To say the the nature and usage of these tools is “contested” would be an understatement.

Features for clarifying and improving posts

When you’re creating a shared knowledge base, the ability to take existing posts and make them better is key. This activity is supported in two ways:

1. Edits

Anyone can edit a post. However, changes from users with less than 2K rep must have their edits approved.

The on-site edit display is similar to a git diff.


The smaller, indented text below is a comment. They are temporary “Post-It notes” on questions and answers, intended for clarification and constructive criticism.

They can receive votes but generate no rep.

Moderator Elections
2020 Stack Overflow Moderator Election results.

Stack Overflow and Stack Exchange run on the labor of volunteer moderators, and the community appoints those leaders via a thorough democratic process. Elections run on OpaVote and use an STV system. More background can be found here.

Somehow, it worked

Stack Overflow’s gamifying the creation of expert information has been a resounding success. Today, nearly every developer in the world has a Stack Overflow tab open at work and, as of this writing, there are 176 Q&A sites in the Stack Exchange network. But communities are never done. With scale and stellar metrics come increasingly complex problems. As time goes on, there are messy questions of who the system was designed for, and what kind of consideration is owed to the many volunteers doing the lion’s share of the work maintaining it.

Thanks to Freyja and Joe for having me as a speaker, and prompting me to revisit this very special machine.

Platform Integrity

On Humane Trust & Safety and Support Teams

Recently I sat down with a leader at a tech company building a community platform to offer input on running Support and Trust & Safety teams. Later, I sent a followup email and then realized its contents may be useful to other folks in tech wrestling with the ethical quandary of managing teams tasked with cleaning up the internet. My advice has been posted here with their permission:

When we spoke I did a lot a of rambling, because I have an excess of war stories rolling around in my head, but I realize that may have left you swimming. Below, I’ve parsed my thoughts into a handful of things I think are worth trying to act on if you want to create a team doing Support and/or Trust & Safety which is designed to bypass many of the unhealthy dynamics that are usually baked into this work:
1) Pay well for work that doesn’t scale.
It sounded like you may be pushing to have Support be paid on the same scale as engineering. That’s really solid. Typically tech companies hate paying for labor that doesn’t produce scalable output; mushy human stuff is a necessary evil, and they pay as little as they can manage for it. This is really short-sighted, though. Software which has users is going to take work to maintain no matter what, and if you recognize the operational costs upfront, you’ll be helping avoid surprises and burnout for your entire company later.
2) Prepare to increase the size of your Trust & Safety and Support teams proportionally with the scale of your userbase.
This comes from similar dynamics as #1, and is typically really hard to swallow. I’m not suggesting that Trust & Safety and Support will never be able to automate away parts of their work, or that folks on those teams shouldn’t be encouraged to do so as part of their jobs. But you should expect that the load and the complexity of issues will scale proportionally to the number of people using your software, especially as you add more social features, and having an ever growing number of smart, capable people on hand with enough extra bandwidth to think strategically and devise solutions for the stuff they’re seeing on the frontlines will ensure you’re generally not blindsided by your platform unleashing messes on the world.
3) Create a separate time off scheme for Trust & Safety and Support.
I recommend giving everyone doing this work 3 paid months off. This work is going to take a psychological toll and people’s productivity is going to be affected. Usually this results in staff feeling terrible about themselves and papering it over, which is the first step on the road to burnout. Yet if acknowledgement and affordances are created for this outcome, and it’s treated as a normal thing that individuals aren’t failures for and which the company has their back on, it will increase people’s resilience by ensuring they don’t waste more bandwidth on shame.
4) Have Support and Trust & Safety driving platform-level changes.
Another enormous driver of burnout in this work is facing upsetting scenarios which you have no opportunity to resolve. This creates lots of second order trauma. Alternately, if Trust & Safety folks find themselves fielding the output of a huge platform abuse vector and they think of novel ways to solve it, actually seeing it implemented is an incredible morale boost which will prevent against learned helplessness, and help your people stay in the game with you over the long haul.