Categories
Uncategorized

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
Voting

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.

Privileges

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.

Flagging

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.

2. Comments

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.