The Cultural Anthropology of Stack Exchange
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Spolsky, Joel
Joel Spolsky is an expert on software development, co–founder of Fog Creek Software, and the co–creator of stackoverflow.com. His website Joel on Software is popular with software developers around the world and has been translated into over thirty languages. He has written four books about software development, including Smart and Gets Things Done: Joel Spolsky's Concise Guide to Finding the Best Technical Talent (Apress 2007). Joel has worked at Microsoft, where he designed VBA as a member of the Excel team, and at Juno Online Services, developing an Internet client used by millions.
 Thanks. Thank you. Let's see if, oh look, it came up. Good. I'm going to talk a little bit about Stack Exchange, the cultural anthropology of Stack Exchange. Cultural anthropology is a class that I took at university, which was the most boring thing I had to study. And my university, Yale, had the option to change classes at the last minute. So there was a period of three weeks when you could take any class you wanted, and then sort of at the end of that period you had to choose five, I think, or four or five. And accidentally I failed to withdraw from the cultural anthropology class in time and was stuck in this very boring thing learning about the Trobriand Islanders and exchanging yams. And the, I can't remember who, but there was a group of people in Canada that liked to trade blankets a lot. And I thought it was really boring. And I forced myself to take the class, and I forced myself to get a good grade in it in order to practice the surviving of very boring things. But the punchline is that it turned out that that was one of the most important things I had to learn because what I discovered is as soon as you're building systems for millions and millions of people, anthropology is actually more important than programming and object-oriented design and any of the other things that you're going to learn about in the next two days. So that's what this talk is about, is about the anthropology of the system. Last time I counted we had something around the order of 40 million monthly unique individual human beings that visited one of our websites at Stack Exchange. Either Stack Overflow is about half of the people, 20 million, and about 20 million visiting the rest of the network at StackExchange.com. And if we were a country, we would be the 34th largest country. We would be larger than Algeria and bigger than Canada, that's a good one, I guess, and some other countries there. So, you know, we would be larger than every U.S. state. And cultural anthropology is really the only tool for dealing with understanding and studying a community that's this large. We're also, the other problem is that we're kind of utopian. And by utopian, I mean that not only are we trying to study a country and understand, you know, how people work and how they think and how they behave, but we're trying to rebuild it in our own image and we're trying to make sort of a perfect utopian world on Stack Exchange for whatever that means. And we have sort of very, very high ambitions about how that culture functions and behaves. And this is, of course, radically different than anything I was taught to do as a computer scientist, as a computer programmer. When computers first came out, we were sort of lucky if we could get them to calculate things and to compute things. And indeed, I think that most programmers still spend an awful lot of time imagining that what they're doing is just trying to get some kind of a computation out of the machine in some way and that that's their job. Nobody could even imagine, sort of in the early days of computers, nobody could imagine that they could be used for communication at all and that therefore computers would become societies and cultures. This is, I learned how to program on one of these things. It was a deckwriter 3 which was connected at 300 bod or 300 bits per second which means it could print about 30 characters per second to a mainframe computer. But it wasn't really until, so sort of the early time sharing systems would print. The later time sharing systems used these, you know, glass terminals, CRTs. This is a digital VT100 and it was called the smart terminal. Smart meant that it had the ability to move the cursor. So, which meant that you could do an enormous number of interesting things like have a full screen text editor, a full screen interface. And the interesting thing about the arrival of the glass terminal or the CRT or whatever you want to call these things, TTYs, I guess this is a TTY. The most interesting thing about when these things arrived is that they could handle a lot more than 300 bits per second. In fact, they could go at the incredible rate of 1200 bits per second because the print head didn't have to keep up and printing technology had not been very fast in those days. And that meant that for the first time you could actually print large strings of text, large blocks of text. And that's when email was invented. And in fact, the general interface for email is what became Usenet, which was sort of the precursor, I don't know if I would call the precursor the web, but it's certainly the precursor to Stack Overflow and to sort of all online discussion, all online discussion groups in question and answer forms. And if you look at Usenet very closely, you'll see how many people actually in the audience, there's a big audience here. Wow. Have any of you, did any of you use Usenet? I mean, it's mostly obsolete but if you're a programmer, you probably use it at some point. So, a large group of you who use it. And one of the things you might have noticed about Usenet is that if you looked closely, the format of a message on Usenet was identical to an email message. It had, you know, a from and a date and so forth up at the top in a subject line. And it was originally a store and forward system that was built, wasn't really built on top of email, but it was sort of built to work in the same way as email did except that you were sending things out to groups and it replaced mailing lists as a good way to ask people questions. One of the things I noticed about Usenet, and I used this extensively in college in the 80s and this was again before the web, was that the form that Usenet conversations tended to take and the culture that evolved on Usenet was directly caused by decisions that were making, that were taken by the programmers that built Usenet. So, one of the decisions that the original Usenet software was called RN and it was sort of half command line software although it could launch you into an editor for typing. And it, the thing about RN is that when you replied to somebody else's message, by default it would copy the entire message that you were replying to into your editor and prepend every line with a little greater than sign. And that made it very easy if you wanted to to reply to the previous person's post on a point by point basis where you inserted your little pithy reply to every single sentence within, you know, sort of interleaved within the body and use that to reply. And this was a design decision that was taken because Usenet had no central server and there was no way to know that the people that are reading your reply had seen the original message. And there was no way for them to get the original message because there was no central server. And if they happened to have stored a copy of it then they knew what they were replying to. But most sites didn't have a lot of disk space and they stored about seven days worth of archives. So, it's very likely that you were replying to somebody and the people reading your reply would not have seen the original message and so you had to quote it. And so this decision to use the greater than signs meant that there was this form of arguing on Usenet that was very, very nitpicky where somebody would go in and insert a comment on every single line and you would say something and they would say, this is nonsense and that's clearly nonsense and this other thing is nonsense and the third thing you said is nonsense and you spelled this wrong and your grammar is terrible and how can anybody with such bad grammar be trusted to rule upon the correct interpretation of the treaty of whatever. And so these debates were completely ridiculous and silly and they were, the culture of debate was shaped by an accidental decision of the software developer that just thought, let's make the default to quote. And what this made me realize is that every time we're building computer software that's going to mediate between human beings that even the smallest decisions that we make in the architecture of those computer systems and user interface design decisions, you could, I mean, you know, by comparison, although Usenet, people would be very argumentative, another system which evolved at the same time was CompuServe. And on CompuServe, it was a central system and you could always find the original message that you were replying to and therefore, because it was stored on the central server, and therefore the reply by default did not copy the previous message and people were much more civilized. They actually did not respond with long screeds that answered every single point and turn. They responded in a far more general way. And I think what I realized then is that every time you design a software that more than one person is going to use, the decisions that you make are going to influence the society that's created on top of that software. And so that's what this talk is really about. The same thing applies in architecture. When you build a wall, it's going to influence where people stand and where they go. If you build something by accident that happens to have a nice curve to it, then kids will show up and start skateboarding there. If you build by mistake a table out of concrete and you put a little 8x8 checkered pattern on the table and some chairs next to it, then old men will show up and start playing chess. So what you build actually causes people to come and start behaving in a certain way. Sometimes it's extraordinarily intentional. It's very, you know, it's exactly what you would have expected and it's exactly what you wanted to happen. Sometimes it's completely accidental. If you've ever been to the Spanish steps in Rome, that's an example where there's sort of an accidental situation where you have two roads, one of which is much higher than the other, and they can't be connected by a road because it's too steep, so they're connected by a staircase. And that staircase is right in the center of town and it overlooks a nice piazza. And so people come and sit on the stairs, mostly backpackers and local Roman high school kids. And it's a fairly convenient place also to braid your friend's hair because you can sit on the step above them. And so all the behavior that's happening on this staircase all the time is an accidental occurrence. You can go there and say, look at this amazing culture that's been established of the backpackers and the high school kids and the people braiding each other's hair. But it's an accident of an architectural feature. In Times Square in New York, they tried to build the staircase, hoping to get the same thing to happen. The staircase doesn't go anywhere. It just goes up into space and then it ends. And they don't have quite as much of the people sitting on the staircase and braiding each other's hair as they do in Rome, but they probably will. When the first discussion forms when the web came out, everybody said, oh, we need a version of Usenet for the web. And the first discussion forms were created online. And these discussion forms were all sort of universally bad copies of Usenet that in most cases paid absolutely no attention whatsoever to the anthropology or the sociology of what was going on on Usenet. So these forums actually copied a lot of the mistakes and copied a lot of the bizarre accidents of the way that Usenet worked. Sometimes they even copied the ability to quote the previous message, although that went away pretty quickly because that was clearly not necessary. But a lot of times they copied the threaded model that Usenet switched to or the original model of just sort of, you always have to see everything. And the main point about this is one of the things that they copied was the fact that things appear in chronological order. And so you're having a discussion and any time you read the discussion, you're always reading it in chronological order. And this makes sense for anything but questions and answers. So we were a little bit more utopian than that in setting out to create stack exchange or stack overflow. We knew that the decisions that we made as architects of the system would create, you know, a physical infrastructure and then people would come live in that physical infrastructure and a culture and a society would develop on that infrastructure. And we had a utopian vision of making this society that meets certain kind of highfalutin goals. The goals that we had were just that people get answers to their questions. It wasn't anything particularly fancy. But we made a lot of design decisions that were based on that which sort of look like, again, anthropology. So let me talk about some of those areas that we focused on a lot in building stack overflow. And in many cases what we were doing was copied from somewhere else. And almost every case it was copied from somewhere else, whether it was Reddit or Dig or Hacker News. Those were some of the more recent ones. Stuff that we copied from Xbox, like achievements, stuff that we copied from the world of gaming. We copied the frequent flyer miles feature of airline loyalty programs. One of the things that we focused a great deal upon is the first impression that you get when you come to stack overflow or any of the 100 odd stack exchange sites that we now have. The impression that you get tells you an awful lot about what's going on. So if I put this photograph up and you look at that, I haven't told you what this is, but many of you will recognize this is the Occupy Wall Street protests. And there's a whole bunch of signals going on there. Now these are protesters, so they are intentionally sending you these signals. And we could find a whole bunch, obviously, somebody holding a sign. And you can read the words on the sign. There's a person there with a sign that says, I love the 99 percent. And that has meaning. She also interestingly has very expensive headphones. But I won't blame her for not thinking about that. There's a fellow there with a t-shirt that says a pada on it. He's got a, you know, it's sort of like a Palestinian keffiye, but it's kind of too brightly colored. So it's kind of, you know, funky and western. And the way his hair is organized and the way everybody is sort of presenting themselves is sending a lot of messages. Everything about this picture is telling you something about what this group of people believes in. And you immediately make a judgment as to whether you agree with that and you want to join or you disagree with that and you don't want to join. And there's all kinds of signals that will tell you whether to join or not. Almost everything you will ever read about web page design is attempting to tell you how to make the web pages friendly as possible to all people so that every human being in the world will want to come to your website. Which sounds like a great ideal, but it is not actually the ideal of Stack Overflow. We focus mostly on how to get people to go away and leave us alone. We looked at, in the early days of, and the reason it has to do with quality, of course. So when we looked at other question and answer systems while building Stack Overflow, we found a bunch that were out there. Here's one, answers.yahoo.com is absolutely enormous. And everybody thought of this as the granddaddy of all question and answer sites. And some of the questions that are on there, I suspect this is probably hard to read in this gigantic room, but I'll read them for you. What do I use to clean out my coffee maker? What is your favorite plant of all time? What are you listening to? What are you listening to? What kind of a question is that? I mean, I guess it is technically a question. There is a question mark there. What was the last thing you ate is on answers.yahoo.com on the home page? Can I die from car carbon monoxide? No. The answer is no. It's fine. Don't worry about it. Just sit there. Some of these questions, there's a clue at the bottom which is I keep forgetting to do my homework question mark. I guess you're required to put a question mark or maybe the system puts it in for you because it looks like the user put an explanation point and somebody added a question mark. I keep forgetting to do my homework. The clue is that these are children. These are kids. They're 12. And they came home from school in the afternoon and they're using their computers to entertain themselves. They are not genuinely asking questions. This is a chat room. It's not actually a Q&A site. And if you saw this and you had an important question about, you know, sort of advanced thermonuclear reactions or whatever, you would not think that this is the right place to ask it and you would leave. So this site is already, anybody that's not a teenager is already going to leave. It's already going to be pushed away by the site because it doesn't really meet their needs. Here's another one. Answers.com was the number 12 site in the world in traffic when we started. And here's some questions that are on there. What kind of attorney is needed for advice on getting someone you know committed to a mental institution? I like that question. It's useful because then you can look them up in the elevators. There was a question here that I thought was telling, what are some examples of a welcome address for JS Prom? Nobody I asked knew what a JS Prom is. This is obviously something that is happening in one particular school. A Prom is a school dance in America. And JS apparently means not JavaScript, but junior senior, which means the two oldest classes, the 16-year-old, 17-year-old, are having a dance at the school. And the interesting thing about this is here is a person who is asking this question who still doesn't realize that the Internet is larger than their high school. But they're on there asking this question. So once again, a site for kids, Askville by Amazon was out there. They weren't that big. There are these questions like how can I start making the right choices in my life? That's a good question. What is the 21st largest states that seems like a ridiculous question? I don't know why anybody would ask. What is the interval notation for 5x minus 4 is less than 3, 2, s? Ah! Finally a real question. And the answer is this looks like homework. We're not going to answer your homework questions. It's the only real question on the site with shutdown immediately. Meanwhile, of course, if you've been to Stack Overflow and you've looked at the home page, you see a whole bunch of programming questions. And if you don't know how to program, you have no idea what is going on and you leave, which again is what we want. SQL indexing, none, single column, multiple columns, all the keywords that you see there, Android, SQL indexing, cake, PHP, interpolation, MATLAB, multigrid, et cetera. You start seeing a whole bunch of words and if you're a programmer, you kind of get that this is a programming site and it might be for you. But if you're not a programmer, you don't even understand what language it's written in. To give you, you're all programmers so you probably think that all this kind of stuff makes sense. But if you look at one of our other sites like the Jewish Life and Learning site, which is very, very specifically for Orthodox Jews asking very specific questions about Orthodox Jewish practice, you see questions like why is the idea of Saphirot, not Shtuf, which you may not understand at all. I think probably very few of you in this room understand what that means or is it possible to have Chomets on the Shabbos directly after Pesach is an important question, but you probably don't know what Chomets or Shabbos or Pesach are. So you might leave, which is fine because you don't have the answer. Here's a statistic site, questions about GG Plot 2 and factor loadings after oblique rotation and so on and so forth. Now to be fair, these sites that I'm showing you, this is our vertical statistic site. This is our vertical Jewish site. Amazon's Askville also had a vertical site for math. And the math questions they had are what is the size of a plot in the Caribbean? I don't know what the size of a plot in the Caribbean is. Let's say 40. I don't know. That's not a question that doesn't even make sense. Okay, so here's my problem. I am 20 years old, didn't really attend high school and know only super basic math, meaning plus. So that's not even a question that we really know how to answer and it's certainly not appealing to a mathematician to answer that question. And then there's something else here which says apply for apartments online. And if you look closely, it was asked 13 hours ago and that sends a message too, right? What is a message? It's spam. Nobody cares. There's nobody here to remove spam. 13 hours have elapsed since somebody posted spam and nobody has done anything about it. The other message, by the way, is that all the avatars are just sort of like little blobs. Nobody has bothered to upload a custom avatar, but that's a little more subtle. Meanwhile, we actually have two math sites, math overflow, which is for research level math and math stack exchange, which is for just general math, not research level. And again, the minute you go to that site, you realize that this is very advanced mathematics and I don't understand any of it. And there's all kinds of formulas, they're in equations and beautiful LaTeX formatting. But I can't make heads and tails out of it. Math overflow is so advanced. I don't know if this is so advanced. But the rule on math overflow is only research level mathematics are welcome, which means it's a commu-, the general rule is if you could ask one of these questions to a math professor at a university and they could answer it, then it's not research. And therefore, it doesn't belong on math overflow. And that's sort of their guidance. And that sort of shows you they're only asking questions that math professors can't answer. This is a pretty sophisticated site for a pretty narrow range of, you know, in that case, about 12,000 people that participate on something of a regular basis. And everything about the homepage sends you that signal, so you would not ask a question about, you know, how to subtract on those sites. So you see a group of people, you see a website, and it's going to have all kinds of little signals going on. And you're going to decide, you know, here's a group of kids and it's winter and they're wearing shorts, which means that this is an East Coast university and they're from California because they're still wearing shorts. And they're wearing these little caps that indicate that they're probably in a frat and they're playing Ultimate Frisbee. And there's a whole bunch of signals there and they're obviously athletes, not stud-, not studious, you know, they're jocks, not geeks. And as soon as you see that group of people doing that thing, you immediately decide, that looks fun, I want to join them. Or I don't even know what they're doing, I'm not going to join them. And everything about the homepage is designed, again, to push away the wrong people that can't answer questions for us and that are going to have questions that are going to interfere with sort of the professional stuff that's going on on Stack Overflow. So first impressions is the first thing I talked about. The second thing I want to talk about is voting, of course, and you're a programmer so I can go through this pretty quickly. Voting, you could vote on questions. They, there's a little up arrow and a down arrow. When you like a question, you vote it up. When you don't like it, you vote it down. The most interesting thing there is actually voting on answers and that is a fairly, fairly reliable way to make sure that the good answers appear first in the, in the, in the list instead of last. And that difference alone made a huge difference to sort of the quality of a page that Stack Overflow shows you. Because every other forum was showing you the historical archive of a discussion that took place, which you could read and that would take you a certain amount of time and the answer might be towards the end. It might be buried in the middle. It might not be anywhere and you had no way of judging other than careful reading and then trying everything. Which of those answers was likely to solve your problem? But by sorting things, by vote, by community peer, it's, it's very, very likely that the first answer or maybe the second but most likely the first answer is the actual solution to the problem. And so if you find a Stack Overflow question as a result of a Google search, which is over 90% of the people are doing that, then over 90% of the page views are results of Google searches, then the, the first thing you read is likely to be the answer. So you're likely to be happy that you got your answer right away. Instead of having to read a seven-page discussion and click next and try all the things that the different people recommended and see if they work for you, you can skip that, that whole stage. One of the more valuable parts of the voting is that it leads to reputation. And every society has some kind of reputation system. The, you know, the military always has this thing that we call fruit salad that you wear, you know, all these colorful little ribbons to indicate, it's Colin Powell. A complete history, those are called campaign ribbons. So it's a history of things that you've done. And everything else is our sort of badges that you've earned. But these are things that you've done, you know, battles that you've been in and so forth. And of course we have the same thing on Stack Overflow. So here's our user page. And each user, mostly when we show you their, their name, we'll put it next to an avatar that they choose and then sort of a few more things like their reputation and so forth. So when you start out, it's very simple. You get a little tag there, a little slug. It has nothing other than your name on it and a one which indicates that you were able to successfully type your name. You get one free reputation point just to, just so you don't feel like you should recreate your account, I guess. And then you have a little picture which you control and if you haven't learned yet how to change your avatar, then we give you a bunch of little triangles which make you look like a newbie. Over time though, it starts to get a little bit better. You might get a little bit of reputation. You figure out how to upload a new picture of yourself that reflects you and you start to earn these little badges which appear next to your name. Over time, when you get a lot of badges, this is something not a lot of people have noticed, but I think 10,000, you get a little drop shadow that appears beneath your avatar and if somebody mouses over, you get this much larger card which appears which you control where you can put a description of yourself and so forth. You know, some of our top users have an awful lot of reputation. There's John Skeet, still our number one user. And the only thing that you can sort of go beyond just having a lot of reputation on the system is you can run an election to become a moderator. And when you're a moderator, you get that little diamond next to your name which means that there was an election and everybody voted and you won and you became one of the moderators on the site which gives you the ability to sort of remove things without anybody questioning what you're doing to see things that have been removed and to try to help the community run itself by itself. So all of this stuff, all of this flair is stuff that you wear if it's your clothing when you're on Stack Exchange. And it sends a message as to who you are and what you care about and what you like and why people should pay attention to you and whether or not they should pay attention to you. And it's going to, even if it has no effect on the people that are seeing it, it has an effect on you because you're always thinking about what is the message that I'm portraying, that I'm conveying, that I'm sending people. And it's something that sort of everybody thinks about just in the way they get dressed every morning and what they put on and how they wear it. And I picked this picture of a person because he's got about 30 things going on there in which he's trying to portray something about himself to everybody that sees him. When he wakes up in the morning, he thinks about how he's wearing that little hat that, flag, if you don't recognize it, is the Confederate States of the United States. They tried to break off in the Civil War because they wanted to keep slaves and they were defeated in the Civil War but he still got the flag. And it's on a particular kind of truck or hat. He's got a particular kind of haircut. He's got all kinds of tattoos which I won't even begin to start to interpret the tattoos. Can't see them all that well. Anyway, he's got a cute little flip phone. He's got the Harley Davidson motorcycle bike belt buckle. And that shirt that he's wearing is what we call in American a wife beater. And not only is he wearing a wife beater t-shirt but he has an emergency backup wife beater t-shirt in case something happens to the first one. Stuck in his belt. So again, it's just he's sending 27 signals as to who he is and what he wants you to think about him and how he wants to present himself. And that's something that everybody does and you can be a peasant or a king and you still get to think about what you wear, how you present to the world. And that's what reputation is. We have badges as well which is sort of a part of your reputation on Stack Overflow. And one thing that people don't recognize about badges is that people sort of look at them and say, well, I don't really care about badges. I'm just answering questions and I'll earn those accidentally. And most people actually don't. But just knowing that the badges are there is enough to send signals to the community, to the world of people on Stack Overflow as to what behaviors we want you to do. So for example, when Jeff Atwood and I designed Stack Overflow, we said, should you be allowed to answer your own question? And we thought about this and we said, well, there's pros and cons. If you can answer your own question, then your stealing reputation from other people that might have come along later and answered it and gotten their reputation sort of seems unfair for you to ask a question and then immediately answer it and get reputation. On the other hand, we realized that the person most likely to be able to solve a problem is the person who asked it because once they ask the question, you know, they don't give up or go to sleep or take a nap. They actually go back to their compiler and continue to try to solve that problem. And so they're very likely to discover the answer and if they do, we want to encourage them to post it for everybody else to see. And indeed, the goal of Stack Overflow is to make answers for those hundreds of people that are coming into each question from Google searches to read. It's not necessarily to solve the problem of the original asker. And so we decided that we definitely want to allow you to answer your own question. In fact, we want to encourage it. And so there's a badge that you can earn for answering your own question. And that is enough to send a message to the entire community even if nobody works hard to try to earn that badge. And some people do. But even if they don't, we've told the entire community, look, this is a site that values, this community values you when you answer your own question. Plus about another hundred odd things that we can show you through the badge system that we consider to be important. All these things, these badges, these reputation, they are a part of your permanent record and they feed into the fact that you can get a job on Stack Overflow and that we have this career system in the background where you can sort of advertise what you know and what you're good at. And thousands of employers will have access to that and be able to come along and find you based on your skills. Government is something that every society has. Every society of two or more people has some system of governance. We built some of the government system into Stack Overflow from the beginning. The most important thing that we built in is the reputation system is we realized that as people gain more experience with Stack Overflow, as they spend more time using Stack Overflow, they'll earn more reputation and they can be trusted to make more and more decisions within the system. So they can be trusted more and more to indicate to us what should be closed, what kind of questions should be closed, to vote things up, to vote things down. As you earn reputation, we realize that you're spending more time on our site and we could show you less advertising because you've already seen that same ad 50 times. We can show it to you fewer. And in fact, almost all of the daily community moderation is sort of done by people that have just earned enough moderation to do it, earned enough reputation to do that moderation. We have another site which a lot of people don't know about called Metastack Overflow. It's the site about Stack Overflow and that's where conversations take place about what's going on on the site. Why was this question closed? Should we allow questions like this? Should we have a feature that does so and so? This is sort of the equivalent of the parliament or the Congress of Stack Overflow or maybe it's sort of like a town hall where conversations take place. And we have a chat system which almost nobody has found yet, but it's there. Keep digging. You'll find it. There's a link. And this is 24-7 online sort of IRC style chat where sort of more immediate decisions are taken. There's one room, one chat room that we give all the moderators access to. There are about 300 moderators on Stack Exchange and they have access to a room called Teacher's Lounge. And Teacher's Lounge is almost like real-time police radio where literally in real-time people are responding to the needs of the community. We have a blog which is sort of like a newspaper and all of these things are sort of parts of our culture, parts of our society. The blog is where we sort of announce things, big news, big changes, et cetera. We'll show up on the blog. And all of that society, all of those governmental institutions, whether it's the real-time ones like Teacher's Lounge or mostly the ones like Metta, the chat and a very limited number of internal conversations that we have, lead to law, creating a system of law. And every successful society eventually has a bunch of laws. Our primary overruling law is We Hate Fun. This is the symbol of the logo of We Hate Fun as a clown throwing up. And essentially, we take ourselves way too seriously. When we first created Stack Overflow, we detected that people were every once in a while asking something that was funny or somebody would write a response that was very funny. And the thing that would happen is somebody would write something funny and everybody would look at it and they would vote it out because it was funny. And that was already interfering, immediately interfering with this system that we tried to build, which is a system that gets you the correct answer to your question. And then these things that were funny and that got upvotes would attract eyeballs from all over the place. So they get posted to Reddit and Hacker News and Slash. If you go back far enough in time. And millions of eyeballs would land on these things. And we could tell because we would see these pages that instead of having 200 page views or 500 page views, would have 50,000 page views. Now a normal website developer would say, yay, I win because they're getting all the page views. But these pages were completely useless. They were bad answers. And if you were searching for a particular question or searching to solve a programming problem, which is what we built our site for, then these pages would get in your way. Thus, our rule about hating fun and the way that we show that we hate fun is that we close questions all the time. And we close questions that for various reasons, possibly because they're fun, but more likely just because they just don't fit on our site for various reasons. And we have about five of them. And those are sort of the laws. That's kind of how we enforce things. We have, when we close things, by the way, we don't immediately delete them. If we just deleted them, then you wouldn't know we closed them. And you might continue to practice that bad behavior. So what we do is we sort of close them and we leave them around on the homepage for a while with the word closed next to it and a big banner over it saying, this question is bad. The person who asked it is evil and should be, doesn't really say that. But we leave that out sort of as a signal to everybody else, don't do this. This is not what we do here. Please stop doing this. Somebody did this. And we had to close their question. And then we're not allowing anybody to answer it because you did this thing. The five things that we did that we have as closed reasons that are constantly evolving, constantly changing, and sort of with, as we learn from the community, we change what those things are that we close and why we close them. One of the reasons, these are the current reasons, but they're in the process of being changed. One of them is a duplicate. We used to refer to this as a duplicate question. Now we don't really think of it so much as this is a duplicate question. We think of it as this question has already been answered, just slightly different by about 5%. If somebody tells you, if you ask a question and somebody tells you, somebody already asked that question, then you say, good. Well, that's probably because this is a good question. It's like, what's wrong with that? If you ask a question and we tell you, oh, by the way, somebody already answered that question, then you say, oh, terrific. I'll just go read that answer. I can undo my asking over here. So duplicates, the reason we close duplicates instead of letting you ask them all over the time is again and again and again is that we are in some ways a wiki because our answers are editable. And we would rather have one amazing answer to each question rather than having that a lot of people edit and maintain and modify and keep up to date rather than having a bunch of people answering the questions again and again and again, especially for common things like what is a monad? We have a reason for closing questions called off topic. Obviously people will come in and ask things that are completely unrelated to the topic of programming. This one was a toilet issue. This is not strictly a programming problem. I have a lady employee who is joining from tomorrow and I want to convey her a message that the bathroom facilities at the office are out of order. How do I tell her to relieve herself before arriving in the morning? So that's not really a programming question. And we just closed it. And it was obviously fortunately that I see here that was only viewed 48 times. So it didn't cause a lot of damage. Wow. Out of the 48 people that viewed that, 22 people voted it down. That's pretty bad. We have something that we call not constructive. The word not constructive itself is not constructive in the sense that nobody understands what it means or why we're closing your question is not constructive. What it really means is that we have discovered that questions that are highly opinion-based don't work well on Stack Overflow because they tend to generate, if it's highly opinion-based, it tends to generate conversation on both sides of the issue that doesn't really go anywhere and it sort of inquite and it doesn't teach anybody anything. It's just like how many debate points can you think of to say that VI is better than Emax or Cabs are better than Spaces or Web Forms are better to use than NBC Developer. And some of these things actually do have a lot of pros and cons. There are a lot of reasons to use Cabs and a lot of reasons to use Spaces. But the actual debate of that issue is something that generates a page on the Internet that first of all already exists in a million forms and secondly is a complete waste of time. And it's amusing for the participants but it doesn't create an artifact that's going to be useful for things going on later. So anything that's highly opinionated or highly based on subjective criteria we tend to close on Stack Overflow. We also have a thing called Not a Real Question. That's a little bizarre. This question was need ideas about mobile apps which have never been created before. So it's like, okay, for whatever reason we've just decided that this is sort of not a real thing. Now this particular closed reason is insulting saying, hey, that's not a real question. Like, yes it is. It has a question mark. And a lot of times it's not a real question because you bungled the explanation of your question. And we're going to change sort of the wording of this. This is really off topic. It's really just not a programming question. It's not within the scope of the kind of questions that the site was built for that we want to ask. We have something called too localized. Again, a confusing term because, but this is I'm missing a bracket somewhere. Here's my code. Where's the missing bracket? Unlikely to help anybody else. You know, one of the key observations of Stack Overflow is that every, for every question, it's asked by one person. It's answered by on average two people. Sometimes four, sometimes one. That's a lot more than that. But, you know, a few people answer it. But it is viewed by hundreds. Usually people coming in from Google who have landed there. And so we actually feel like the real community that we're trying to serve, the number one community we're trying to serve with Stack Overflow is the 99% of people who land on a question because they were searching for a problem. Not because they typed the question themselves or the even smaller group of people that typed answers who we love. But the people that we really want to serve are the 20 million people a month who land on our site because of the search engine query because they're having this problem and we already have the answer for them. And so when somebody asks a question that is unlikely to ever help anybody else, it's sort of a bad thing to be stuffing in Google search results because anybody that ever goes to this page is going to be sad for the rest of all time. And so the principle of two localized says, you know what? Your question is bad because it's selfish and it's unlikely to help anybody else. And that doesn't mean that you can't ask it. It just means that we're going to look at it kind of askew. And what's interesting about these two localized questions is that in almost every case, they can be cured in about 10 seconds and made much more applicable. So instead of asking, where is the bracket that I'm missing? Where is my close friend that I somehow forgot somewhere? You should ask, I have a bunch of code that looks like this, five lines of sample code. What is the best way to find a missing bracket? What debugging technique would you recommend so that I may find a missing bracket? And now you've taken something which is your personal problem and you've made it globally applicable to a large range of people and now all of a sudden it belongs on Stack Overflow. So two localized is sort of what we do as a society to punish people that are being selfish. Or asking a question that nobody's ever going to be able to answer because, you know, it only applies for a vanishingly small amount of time. So in conclusion, you know, Stack Overflow is like a big city. Stack Exchange is like a giant city. Stack Overflow, when it has about 20 million people visiting a month, that's the population of Seoul, South Korea, one of the biggest cities in the world. It's like a big city. And if you imagine Seoul, South Korea, you imagine everybody speaks the same language mostly. Some of them are fluent, some of them are new. Some of them are babies, some of them are children, some of them are new speakers, some of them are just learning the language. But mostly there's just one language and yet there are a lot of, there's a lot of mainstream culture, there's a lot of subcultures, but there are 20 million unique stories of the 20 million individuals that live there and that's where it really, really gets interesting. And so the techniques that you would think of to try to study a city are the same techniques that we use to study and to build and to design the Stack Exchange network. Again, the old days, computers were just a computational device and I think I sort of challenge you as you go through the next couple of days when you're in a session and somebody is giving you an example of object-oriented design in C-Sharp. And you think about sort of what are those design decisions that you're making merely to do a calculation or a computation. And then think about the fact that if you're building modern software, it's very likely that you're creating software for culture, for a culture and for humanity and for a large group of people and that your software and your C++ classes at some point possibly going to mediate between human beings and at the point that it mediates between human beings, it creates culture, creates society and you have to think about it like an anthropologist essentially. Thank you very much. Thank you.
 Thanks. Thank you. Let's see if, oh look, it came up. Good. I'm going to talk a little  bit about Stack Exchange, the cultural anthropology of Stack Exchange. Cultural anthropology is  a class that I took at university, which was the most boring thing I had to study. And  my university, Yale, had the option to change classes at the last minute. So there was a  period of three weeks when you could take any class you wanted, and then sort of at the  end of that period you had to choose five, I think, or four or five. And accidentally  I failed to withdraw from the cultural anthropology class in time and was stuck in this very boring  thing learning about the Trobriand Islanders and exchanging yams. And the, I can't remember  who, but there was a group of people in Canada that liked to trade blankets a lot. And I  thought it was really boring. And I forced myself to take the class, and I forced myself  to get a good grade in it in order to practice the surviving of very boring things. But the  punchline is that it turned out that that was one of the most important things I had  to learn because what I discovered is as soon as you're building systems for millions and  millions of people, anthropology is actually more important than programming and object-oriented  design and any of the other things that you're going to learn about in the next two days.  So that's what this talk is about, is about the anthropology of the system. Last time  I counted we had something around the order of 40 million monthly unique individual human  beings that visited one of our websites at Stack Exchange. Either Stack Overflow is about  half of the people, 20 million, and about 20 million visiting the rest of the network  at StackExchange.com. And if we were a country, we would be the 34th largest country. We would  be larger than Algeria and bigger than Canada, that's a good one, I guess, and some other  countries there. So, you know, we would be larger than every U.S. state. And cultural  anthropology is really the only tool for dealing with understanding and studying a community  that's this large. We're also, the other problem is that we're kind of utopian. And by utopian,  I mean that not only are we trying to study a country and understand, you know, how people  work and how they think and how they behave, but we're trying to rebuild it in our own  image and we're trying to make sort of a perfect utopian world on Stack Exchange for whatever  that means. And we have sort of very, very high ambitions about how that culture functions  and behaves. And this is, of course, radically different than anything I was taught to do  as a computer scientist, as a computer programmer. When computers first came out, we were sort  of lucky if we could get them to calculate things and to compute things. And indeed,  I think that most programmers still spend an awful lot of time imagining that what they're  doing is just trying to get some kind of a computation out of the machine in some way  and that that's their job. Nobody could even imagine, sort of in the early days of computers,  nobody could imagine that they could be used for communication at all and that therefore  computers would become societies and cultures. This is, I learned how to program on one of  these things. It was a deckwriter 3 which was connected at 300 bod or 300 bits per second  which means it could print about 30 characters per second to a mainframe computer. But it  wasn't really until, so sort of the early time sharing systems would print. The later  time sharing systems used these, you know, glass terminals, CRTs. This is a digital VT100  and it was called the smart terminal. Smart meant that it had the ability to move the  cursor. So, which meant that you could do an enormous number of interesting things like  have a full screen text editor, a full screen interface. And the interesting thing about  the arrival of the glass terminal or the CRT or whatever you want to call these things,  TTYs, I guess this is a TTY. The most interesting thing about when these things arrived is that  they could handle a lot more than 300 bits per second. In fact, they could go at the  incredible rate of 1200 bits per second because the print head didn't have to keep up and  printing technology had not been very fast in those days. And that meant that for the  first time you could actually print large strings of text, large blocks of text. And  that's when email was invented. And in fact, the general interface for email is what became  Usenet, which was sort of the precursor, I don't know if I would call the precursor  the web, but it's certainly the precursor to Stack Overflow and to sort of all online  discussion, all online discussion groups in question and answer forms. And if you look  at Usenet very closely, you'll see how many people actually in the audience, there's a  big audience here. Wow. Have any of you, did any of you use Usenet? I mean, it's mostly  obsolete but if you're a programmer, you probably use it at some point. So, a large group of  you who use it. And one of the things you might have noticed about Usenet is that if you  looked closely, the format of a message on Usenet was identical to an email message.  It had, you know, a from and a date and so forth up at the top in a subject line. And  it was originally a store and forward system that was built, wasn't really built on top  of email, but it was sort of built to work in the same way as email did except that you  were sending things out to groups and it replaced mailing lists as a good way to ask people  questions. One of the things I noticed about Usenet, and I used this extensively in college  in the 80s and this was again before the web, was that the form that Usenet conversations  tended to take and the culture that evolved on Usenet was directly caused by decisions  that were making, that were taken by the programmers that built Usenet. So, one of the decisions  that the original Usenet software was called RN and it was sort of half command line software  although it could launch you into an editor for typing. And it, the thing about RN is  that when you replied to somebody else's message, by default it would copy the entire message  that you were replying to into your editor and prepend every line with a little greater  than sign. And that made it very easy if you wanted to to reply to the previous person's  post on a point by point basis where you inserted your little pithy reply to every single sentence  within, you know, sort of interleaved within the body and use that to reply. And this was  a design decision that was taken because Usenet had no central server and there was no way  to know that the people that are reading your reply had seen the original message. And there  was no way for them to get the original message because there was no central server. And if  they happened to have stored a copy of it then they knew what they were replying to.  But most sites didn't have a lot of disk space and they stored about seven days worth of  archives. So, it's very likely that you were replying to somebody and the people reading  your reply would not have seen the original message and so you had to quote it. And so  this decision to use the greater than signs meant that there was this form of arguing  on Usenet that was very, very nitpicky where somebody would go in and insert a comment  on every single line and you would say something and they would say, this is nonsense and that's  clearly nonsense and this other thing is nonsense and the third thing you said is nonsense and  you spelled this wrong and your grammar is terrible and how can anybody with such bad  grammar be trusted to rule upon the correct interpretation of the treaty of whatever.  And so these debates were completely ridiculous and silly and they were, the culture of debate  was shaped by an accidental decision of the software developer that just thought, let's  make the default to quote. And what this made me realize is that every time we're building  computer software that's going to mediate between human beings that even the smallest  decisions that we make in the architecture of those computer systems and user interface  design decisions, you could, I mean, you know, by comparison, although Usenet, people would  be very argumentative, another system which evolved at the same time was CompuServe. And  on CompuServe, it was a central system and you could always find the original message  that you were replying to and therefore, because it was stored on the central server, and therefore  the reply by default did not copy the previous message and people were much more civilized.  They actually did not respond with long screeds that answered every single point and turn.  They responded in a far more general way. And I think what I realized then is that every  time you design a software that more than one person is going to use, the decisions  that you make are going to influence the society that's created on top of that software. And  so that's what this talk is really about. The same thing applies in architecture. When  you build a wall, it's going to influence where people stand and where they go. If you  build something by accident that happens to have a nice curve to it, then kids will show  up and start skateboarding there. If you build by mistake a table out of concrete and you  put a little 8x8 checkered pattern on the table and some chairs next to it, then old  men will show up and start playing chess. So what you build actually causes people to  come and start behaving in a certain way. Sometimes it's extraordinarily intentional.  It's very, you know, it's exactly what you would have expected and it's exactly what  you wanted to happen. Sometimes it's completely accidental. If you've ever been to the Spanish  steps in Rome, that's an example where there's sort of an accidental situation where you  have two roads, one of which is much higher than the other, and they can't be connected  by a road because it's too steep, so they're connected by a staircase. And that staircase  is right in the center of town and it overlooks a nice piazza. And so people come and sit  on the stairs, mostly backpackers and local Roman high school kids. And it's a fairly  convenient place also to braid your friend's hair because you can sit on the step above  them. And so all the behavior that's happening on this staircase all the time is an accidental  occurrence. You can go there and say, look at this amazing culture that's been established  of the backpackers and the high school kids and the people braiding each other's hair.  But it's an accident of an architectural feature. In Times Square in New York, they tried to  build the staircase, hoping to get the same thing to happen. The staircase doesn't go  anywhere. It just goes up into space and then it ends. And they don't have quite as much  of the people sitting on the staircase and braiding each other's hair as they do in Rome,  but they probably will. When the first discussion forms when the web came out, everybody said,  oh, we need a version of Usenet for the web. And the first discussion forms were created  online. And these discussion forms were all sort of universally bad copies of Usenet that  in most cases paid absolutely no attention whatsoever to the anthropology or the sociology  of what was going on on Usenet. So these forums actually copied a lot of the mistakes and  copied a lot of the bizarre accidents of the way that Usenet worked. Sometimes they even  copied the ability to quote the previous message, although that went away pretty quickly because  that was clearly not necessary. But a lot of times they copied the threaded model that  Usenet switched to or the original model of just sort of, you always have to see everything.  And the main point about this is one of the things that they copied was the fact that  things appear in chronological order. And so you're having a discussion and any time  you read the discussion, you're always reading it in chronological order. And this makes  sense for anything but questions and answers. So we were a little bit more utopian than  that in setting out to create stack exchange or stack overflow. We knew that the decisions  that we made as architects of the system would create, you know, a physical infrastructure  and then people would come live in that physical infrastructure and a culture and a society  would develop on that infrastructure. And we had a utopian vision of making this society  that meets certain kind of highfalutin goals. The goals that we had were just that people  get answers to their questions. It wasn't anything particularly fancy. But we made a  lot of design decisions that were based on that which sort of look like, again, anthropology.  So let me talk about some of those areas that we focused on a lot in building stack overflow.  And in many cases what we were doing was copied from somewhere else. And almost every case  it was copied from somewhere else, whether it was Reddit or Dig or Hacker News. Those  were some of the more recent ones. Stuff that we copied from Xbox, like achievements, stuff  that we copied from the world of gaming. We copied the frequent flyer miles feature  of airline loyalty programs. One of the things that we focused a great deal  upon is the first impression that you get when you come to stack overflow or any of  the 100 odd stack exchange sites that we now have. The impression that you get tells you  an awful lot about what's going on. So if I put this photograph up and you look at that,  I haven't told you what this is, but many of you will recognize this is the Occupy Wall  Street protests. And there's a whole bunch of signals going on there. Now these are protesters,  so they are intentionally sending you these signals. And we could find a whole bunch,  obviously, somebody holding a sign. And you can read the words on the sign. There's a  person there with a sign that says, I love the 99 percent. And that has meaning. She  also interestingly has very expensive headphones. But I won't blame her for not thinking about  that. There's a fellow there with a t-shirt that says a pada on it. He's got a, you know,  it's sort of like a Palestinian keffiye, but it's kind of too brightly colored. So it's  kind of, you know, funky and western. And the way his hair is organized and the way  everybody is sort of presenting themselves is sending a lot of messages. Everything  about this picture is telling you something about what this group of people believes in.  And you immediately make a judgment as to whether you agree with that and you want to  join or you disagree with that and you don't want to join. And there's all kinds of signals  that will tell you whether to join or not. Almost everything you will ever read about  web page design is attempting to tell you how to make the web pages friendly as possible  to all people so that every human being in the world will want to come to your website.  Which sounds like a great ideal, but it is not actually the ideal of Stack Overflow.  We focus mostly on how to get people to go away and leave us alone. We looked at, in  the early days of, and the reason it has to do with quality, of course. So when we looked  at other question and answer systems while building Stack Overflow, we found a bunch  that were out there. Here's one, answers.yahoo.com is absolutely enormous. And everybody thought  of this as the granddaddy of all question and answer sites. And some of the questions  that are on there, I suspect this is probably hard to read in this gigantic room, but I'll  read them for you. What do I use to clean out my coffee maker? What is your favorite  plant of all time? What are you listening to? What are you listening to? What kind of  a question is that? I mean, I guess it is technically a question. There is a question  mark there. What was the last thing you ate is on answers.yahoo.com on the home page?  Can I die from car carbon monoxide? No. The answer is no. It's fine. Don't worry about  it. Just sit there. Some of these questions, there's a clue at the bottom which is I keep  forgetting to do my homework question mark. I guess you're required to put a question  mark or maybe the system puts it in for you because it looks like the user put an explanation  point and somebody added a question mark. I keep forgetting to do my homework. The clue  is that these are children. These are kids. They're 12. And they came home from school  in the afternoon and they're using their computers to entertain themselves. They are not genuinely  asking questions. This is a chat room. It's not actually a Q&A site. And if you saw this  and you had an important question about, you know, sort of advanced thermonuclear reactions  or whatever, you would not think that this is the right place to ask it and you would  leave. So this site is already, anybody that's not a teenager is already going to leave.  It's already going to be pushed away by the site because it doesn't really meet their  needs. Here's another one. Answers.com was the number 12 site in the world in traffic  when we started. And here's some questions that are on there. What kind of attorney is  needed for advice on getting someone you know committed to a mental institution? I like  that question. It's useful because then you can look them up in the elevators. There was  a question here that I thought was telling, what are some examples of a welcome address  for JS Prom? Nobody I asked knew what a JS Prom is. This is obviously something that is  happening in one particular school. A Prom is a school dance in America. And JS apparently  means not JavaScript, but junior senior, which means the two oldest classes, the 16-year-old,  17-year-old, are having a dance at the school. And the interesting thing about this is here  is a person who is asking this question who still doesn't realize that the Internet is  larger than their high school. But they're on there asking this question. So once again,  a site for kids, Askville by Amazon was out there. They weren't that big. There are these  questions like how can I start making the right choices in my life? That's a good question.  What is the 21st largest states that seems like a ridiculous question? I don't know why  anybody would ask. What is the interval notation for 5x minus 4 is less than 3, 2, s? Ah! Finally  a real question. And the answer is this looks like homework. We're not going to answer your  homework questions. It's the only real question on the site with shutdown immediately. Meanwhile,  of course, if you've been to Stack Overflow and you've looked at the home page, you see  a whole bunch of programming questions. And if you don't know how to program, you have  no idea what is going on and you leave, which again is what we want. SQL indexing, none,  single column, multiple columns, all the keywords that you see there, Android, SQL indexing,  cake, PHP, interpolation, MATLAB, multigrid, et cetera. You start seeing a whole bunch  of words and if you're a programmer, you kind of get that this is a programming site and  it might be for you. But if you're not a programmer, you don't even understand what language it's  written in. To give you, you're all programmers so you probably think that all this kind of  stuff makes sense. But if you look at one of our other sites like the Jewish Life and  Learning site, which is very, very specifically for Orthodox Jews asking very specific questions  about Orthodox Jewish practice, you see questions like why is the idea of Saphirot, not Shtuf,  which you may not understand at all. I think probably very few of you in this room understand  what that means or is it possible to have Chomets on the Shabbos directly after Pesach  is an important question, but you probably don't know what Chomets or Shabbos or Pesach  are. So you might leave, which is fine because you don't have the answer. Here's a statistic  site, questions about GG Plot 2 and factor loadings after oblique rotation and so on  and so forth. Now to be fair, these sites that I'm showing you, this is our vertical  statistic site. This is our vertical Jewish site. Amazon's Askville also had a vertical  site for math. And the math questions they had are what is the size of a plot in the  Caribbean? I don't know what the size of a plot in the Caribbean is. Let's say 40. I  don't know. That's not a question that doesn't even make sense. Okay, so here's my problem.  I am 20 years old, didn't really attend high school and know only super basic math, meaning  plus. So that's not even a question that we really know how to answer and it's certainly  not appealing to a mathematician to answer that question. And then there's something  else here which says apply for apartments online. And if you look closely, it was asked  13 hours ago and that sends a message too, right? What is a message? It's spam. Nobody  cares. There's nobody here to remove spam. 13 hours have elapsed since somebody posted  spam and nobody has done anything about it. The other message, by the way, is that all  the avatars are just sort of like little blobs. Nobody has bothered to upload a custom avatar,  but that's a little more subtle. Meanwhile, we actually have two math sites, math overflow,  which is for research level math and math stack exchange, which is for just general  math, not research level. And again, the minute you go to that site, you realize that this  is very advanced mathematics and I don't understand any of it. And there's all kinds of formulas,  they're in equations and beautiful LaTeX formatting. But I can't make heads and tails  out of it. Math overflow is so advanced. I don't know if this is so advanced. But the  rule on math overflow is only research level mathematics are welcome, which means it's  a commu-, the general rule is if you could ask one of these questions to a math professor  at a university and they could answer it, then it's not research. And therefore, it  doesn't belong on math overflow. And that's sort of their guidance. And that sort of shows  you they're only asking questions that math professors can't answer. This is a pretty  sophisticated site for a pretty narrow range of, you know, in that case, about 12,000 people  that participate on something of a regular basis. And everything about the homepage sends  you that signal, so you would not ask a question about, you know, how to subtract on those  sites. So you see a group of people, you see a website, and it's going to have all kinds  of little signals going on. And you're going to decide, you know, here's a group of kids  and it's winter and they're wearing shorts, which means that this is an East Coast university  and they're from California because they're still wearing shorts. And they're wearing  these little caps that indicate that they're probably in a frat and they're playing Ultimate  Frisbee. And there's a whole bunch of signals there and they're obviously athletes, not  stud-, not studious, you know, they're jocks, not geeks. And as soon as you see that group  of people doing that thing, you immediately decide, that looks fun, I want to join them.  Or I don't even know what they're doing, I'm not going to join them. And everything about  the homepage is designed, again, to push away the wrong people that can't answer questions  for us and that are going to have questions that are going to interfere with sort of the  professional stuff that's going on on Stack Overflow.  So first impressions is the first thing I talked about. The second thing I want to talk  about is voting, of course, and you're a programmer so I can go through this pretty quickly. Voting,  you could vote on questions. They, there's a little up arrow and a down arrow. When you  like a question, you vote it up. When you don't like it, you vote it down. The most interesting  thing there is actually voting on answers and that is a fairly, fairly reliable way  to make sure that the good answers appear first in the, in the, in the list instead of last.  And that difference alone made a huge difference to sort of the quality of a page that Stack  Overflow shows you. Because every other forum was showing you the historical archive of  a discussion that took place, which you could read and that would take you a certain amount  of time and the answer might be towards the end. It might be buried in the middle. It might  not be anywhere and you had no way of judging other than careful reading and then trying  everything. Which of those answers was likely to solve your problem? But by sorting things,  by vote, by community peer, it's, it's very, very likely that the first answer or maybe  the second but most likely the first answer is the actual solution to the problem. And  so if you find a Stack Overflow question as a result of a Google search, which is over  90% of the people are doing that, then over 90% of the page views are results of Google  searches, then the, the first thing you read is likely to be the answer. So you're likely  to be happy that you got your answer right away. Instead of having to read a seven-page  discussion and click next and try all the things that the different people recommended  and see if they work for you, you can skip that, that whole stage. One of the more valuable  parts of the voting is that it leads to reputation. And every society has some kind of reputation  system. The, you know, the military always has this thing that we call fruit salad that  you wear, you know, all these colorful little ribbons to indicate, it's Colin Powell. A  complete history, those are called campaign ribbons. So it's a history of things that  you've done. And everything else is our sort of badges that you've earned. But these are  things that you've done, you know, battles that you've been in and so forth. And of  course we have the same thing on Stack Overflow. So here's our user page. And each user, mostly  when we show you their, their name, we'll put it next to an avatar that they choose  and then sort of a few more things like their reputation and so forth. So when you start  out, it's very simple. You get a little tag there, a little slug. It has nothing other  than your name on it and a one which indicates that you were able to successfully type your  name. You get one free reputation point just to, just so you don't feel like you should  recreate your account, I guess. And then you have a little picture which you control and  if you haven't learned yet how to change your avatar, then we give you a bunch of little  triangles which make you look like a newbie. Over time though, it starts to get a little  bit better. You might get a little bit of reputation. You figure out how to upload a  new picture of yourself that reflects you and you start to earn these little badges  which appear next to your name. Over time, when you get a lot of badges, this is something  not a lot of people have noticed, but I think 10,000, you get a little drop shadow that  appears beneath your avatar and if somebody mouses over, you get this much larger card  which appears which you control where you can put a description of yourself and so forth.  You know, some of our top users have an awful lot of reputation. There's John Skeet, still  our number one user. And the only thing that you can sort of go beyond just having a lot  of reputation on the system is you can run an election to become a moderator. And when  you're a moderator, you get that little diamond next to your name which means that there was  an election and everybody voted and you won and you became one of the moderators on the  site which gives you the ability to sort of remove things without anybody questioning  what you're doing to see things that have been removed and to try to help the community  run itself by itself. So all of this stuff, all of this flair is stuff that you wear if  it's your clothing when you're on Stack Exchange. And it sends a message as to who you are and  what you care about and what you like and why people should pay attention to you and  whether or not they should pay attention to you. And it's going to, even if it has no  effect on the people that are seeing it, it has an effect on you because you're always  thinking about what is the message that I'm portraying, that I'm conveying, that I'm sending  people. And it's something that sort of everybody thinks about just in the way they get dressed  every morning and what they put on and how they wear it. And I picked this picture of  a person because he's got about 30 things going on there in which he's trying to portray  something about himself to everybody that sees him. When he wakes up in the morning,  he thinks about how he's wearing that little hat that, flag, if you don't recognize it,  is the Confederate States of the United States. They tried to break off in the Civil War because  they wanted to keep slaves and they were defeated in the Civil War but he still got the flag.  And it's on a particular kind of truck or hat. He's got a particular kind of haircut.  He's got all kinds of tattoos which I won't even begin to start to interpret the tattoos.  Can't see them all that well. Anyway, he's got a cute little flip phone. He's got the  Harley Davidson motorcycle bike belt buckle. And that shirt that he's wearing is what we  call in American a wife beater. And not only is he wearing a wife beater t-shirt but he  has an emergency backup wife beater t-shirt in case something happens to the first one.  Stuck in his belt. So again, it's just he's sending 27 signals as to who he is and what  he wants you to think about him and how he wants to present himself. And that's something  that everybody does and you can be a peasant or a king and you still get to think about  what you wear, how you present to the world. And that's what reputation is. We have badges  as well which is sort of a part of your reputation on Stack Overflow. And one thing that people  don't recognize about badges is that people sort of look at them and say, well, I don't  really care about badges. I'm just answering questions and I'll earn those accidentally.  And most people actually don't. But just knowing that the badges are there is enough to send  signals to the community, to the world of people on Stack Overflow as to what behaviors  we want you to do. So for example, when Jeff Atwood and I designed Stack Overflow, we said,  should you be allowed to answer your own question? And we thought about this and we said, well,  there's pros and cons. If you can answer your own question, then your stealing reputation  from other people that might have come along later and answered it and gotten their reputation  sort of seems unfair for you to ask a question and then immediately answer it and get reputation.  On the other hand, we realized that the person most likely to be able to solve a problem  is the person who asked it because once they ask the question, you know, they don't give  up or go to sleep or take a nap. They actually go back to their compiler and continue to try  to solve that problem. And so they're very likely to discover the answer and if they  do, we want to encourage them to post it for everybody else to see. And indeed, the goal  of Stack Overflow is to make answers for those hundreds of people that are coming into each  question from Google searches to read. It's not necessarily to solve the problem of the  original asker. And so we decided that we definitely want to allow you to answer your  own question. In fact, we want to encourage it. And so there's a badge that you can earn  for answering your own question. And that is enough to send a message to the entire  community even if nobody works hard to try to earn that badge. And some people do. But  even if they don't, we've told the entire community, look, this is a site that values,  this community values you when you answer your own question. Plus about another hundred  odd things that we can show you through the badge system that we consider to be important.  All these things, these badges, these reputation, they are a part of your permanent record and  they feed into the fact that you can get a job on Stack Overflow and that we have this  career system in the background where you can sort of advertise what you know and what  you're good at. And thousands of employers will have access to that and be able to come  along and find you based on your skills. Government is something that every society  has. Every society of two or more people has some system of governance. We built some of  the government system into Stack Overflow from the beginning. The most important thing  that we built in is the reputation system is we realized that as people gain more experience  with Stack Overflow, as they spend more time using Stack Overflow, they'll earn more reputation  and they can be trusted to make more and more decisions within the system. So they can be  trusted more and more to indicate to us what should be closed, what kind of questions should  be closed, to vote things up, to vote things down. As you earn reputation, we realize that  you're spending more time on our site and we could show you less advertising because  you've already seen that same ad 50 times. We can show it to you fewer. And in fact, almost  all of the daily community moderation is sort of done by people that have just earned enough  moderation to do it, earned enough reputation to do that moderation. We have another site  which a lot of people don't know about called Metastack Overflow. It's the site about Stack  Overflow and that's where conversations take place about what's going on on the site. Why  was this question closed? Should we allow questions like this? Should we have a feature  that does so and so? This is sort of the equivalent of the parliament or the Congress of Stack  Overflow or maybe it's sort of like a town hall where conversations take place. And we  have a chat system which almost nobody has found yet, but it's there. Keep digging. You'll  find it. There's a link. And this is 24-7 online sort of IRC style chat where sort of  more immediate decisions are taken. There's one room, one chat room that we give all the  moderators access to. There are about 300 moderators on Stack Exchange and they have  access to a room called Teacher's Lounge. And Teacher's Lounge is almost like real-time  police radio where literally in real-time people are responding to the needs of the  community. We have a blog which is sort of like a newspaper and all of these things are  sort of parts of our culture, parts of our society. The blog is where we sort of announce  things, big news, big changes, et cetera. We'll show up on the blog. And all of that  society, all of those governmental institutions, whether it's the real-time ones like Teacher's  Lounge or mostly the ones like Metta, the chat and a very limited number of internal conversations  that we have, lead to law, creating a system of law. And every successful society eventually  has a bunch of laws. Our primary overruling law is We Hate Fun. This is the symbol of  the logo of We Hate Fun as a clown throwing up. And essentially, we take ourselves way  too seriously. When we first created Stack Overflow, we detected that people were every  once in a while asking something that was funny or somebody would write a response that  was very funny. And the thing that would happen is somebody would write something funny and  everybody would look at it and they would vote it out because it was funny. And that  was already interfering, immediately interfering with this system that we tried to build, which  is a system that gets you the correct answer to your question. And then these things that  were funny and that got upvotes would attract eyeballs from all over the place. So they  get posted to Reddit and Hacker News and Slash. If you go back far enough in time. And millions  of eyeballs would land on these things. And we could tell because we would see these pages  that instead of having 200 page views or 500 page views, would have 50,000 page views.  Now a normal website developer would say, yay, I win because they're getting all the page  views. But these pages were completely useless. They were bad answers. And if you were searching  for a particular question or searching to solve a programming problem, which is what  we built our site for, then these pages would get in your way. Thus, our rule about hating  fun and the way that we show that we hate fun is that we close questions all the time.  And we close questions that for various reasons, possibly because they're fun, but more likely  just because they just don't fit on our site for various reasons. And we have about five  of them. And those are sort of the laws. That's kind of how we enforce things. We have, when  we close things, by the way, we don't immediately delete them. If we just deleted them, then  you wouldn't know we closed them. And you might continue to practice that bad behavior.  So what we do is we sort of close them and we leave them around on the homepage for a  while with the word closed next to it and a big banner over it saying, this question  is bad. The person who asked it is evil and should be, doesn't really say that. But we  leave that out sort of as a signal to everybody else, don't do this. This is not what we do  here. Please stop doing this. Somebody did this. And we had to close their question.  And then we're not allowing anybody to answer it because you did this thing. The five things  that we did that we have as closed reasons that are constantly evolving, constantly  changing, and sort of with, as we learn from the community, we change what those things  are that we close and why we close them. One of the reasons, these are the current reasons,  but they're in the process of being changed. One of them is a duplicate. We used to refer  to this as a duplicate question. Now we don't really think of it so much as this is a duplicate  question. We think of it as this question has already been answered, just slightly different  by about 5%. If somebody tells you, if you ask a question and somebody tells you, somebody  already asked that question, then you say, good. Well, that's probably because this is  a good question. It's like, what's wrong with that? If you ask a question and we tell you,  oh, by the way, somebody already answered that question, then you say, oh, terrific. I'll  just go read that answer. I can undo my asking over here. So duplicates, the reason we close  duplicates instead of letting you ask them all over the time is again and again and again  is that we are in some ways a wiki because our answers are editable. And we would rather  have one amazing answer to each question rather than having that a lot of people edit and  maintain and modify and keep up to date rather than having a bunch of people answering the  questions again and again and again, especially for common things like what is a monad?  We have a reason for closing questions called off topic. Obviously people will come in and  ask things that are completely unrelated to the topic of programming. This one was a toilet  issue. This is not strictly a programming problem. I have a lady employee who is joining  from tomorrow and I want to convey her a message that the bathroom facilities at the office  are out of order. How do I tell her to relieve herself before arriving in the morning? So  that's not really a programming question. And we just closed it. And it was obviously  fortunately that I see here that was only viewed 48 times. So it didn't cause a lot  of damage. Wow. Out of the 48 people that viewed that, 22 people voted it down. That's  pretty bad. We have something that we call not constructive. The word not constructive  itself is not constructive in the sense that nobody understands what it means or why we're  closing your question is not constructive. What it really means is that we have discovered  that questions that are highly opinion-based don't work well on Stack Overflow because  they tend to generate, if it's highly opinion-based, it tends to generate conversation on both sides  of the issue that doesn't really go anywhere and it sort of inquite and it doesn't teach  anybody anything. It's just like how many debate points can you think of to say that  VI is better than Emax or Cabs are better than Spaces or Web Forms are better to use  than NBC Developer. And some of these things actually do have a lot of pros and cons. There  are a lot of reasons to use Cabs and a lot of reasons to use Spaces. But the actual  debate of that issue is something that generates a page on the Internet that first of all already  exists in a million forms and secondly is a complete waste of time. And it's amusing  for the participants but it doesn't create an artifact that's going to be useful for  things going on later. So anything that's highly opinionated or highly based on subjective  criteria we tend to close on Stack Overflow.  We also have a thing called Not a Real Question. That's a little bizarre. This question was  need ideas about mobile apps which have never been created before. So it's like, okay, for  whatever reason we've just decided that this is sort of not a real thing. Now this particular  closed reason is insulting saying, hey, that's not a real question. Like, yes it is. It has  a question mark. And a lot of times it's not a real question because you bungled the explanation  of your question. And we're going to change sort of the wording of this. This is really  off topic. It's really just not a programming question. It's not within the scope of the  kind of questions that the site was built for that we want to ask. We have something called  too localized. Again, a confusing term because, but this is I'm missing a bracket somewhere.  Here's my code. Where's the missing bracket? Unlikely to help anybody else. You know, one  of the key observations of Stack Overflow is that every, for every question, it's asked  by one person. It's answered by on average two people. Sometimes four, sometimes one.  That's a lot more than that. But, you know, a few people answer it. But it is viewed by  hundreds. Usually people coming in from Google who have landed there. And so we actually  feel like the real community that we're trying to serve, the number one community we're trying  to serve with Stack Overflow is the 99% of people who land on a question because they  were searching for a problem. Not because they typed the question themselves or the  even smaller group of people that typed answers who we love. But the people that we really  want to serve are the 20 million people a month who land on our site because of the  search engine query because they're having this problem and we already have the answer  for them. And so when somebody asks a question that is unlikely to ever help anybody else,  it's sort of a bad thing to be stuffing in Google search results because anybody that  ever goes to this page is going to be sad for the rest of all time. And so the principle  of two localized says, you know what? Your question is bad because it's selfish and it's  unlikely to help anybody else. And that doesn't mean that you can't ask it. It just means  that we're going to look at it kind of askew. And what's interesting about these two localized  questions is that in almost every case, they can be cured in about 10 seconds and made  much more applicable. So instead of asking, where is the bracket that I'm missing? Where  is my close friend that I somehow forgot somewhere? You should ask, I have a bunch of code that  looks like this, five lines of sample code. What is the best way to find a missing bracket?  What debugging technique would you recommend so that I may find a missing bracket? And  now you've taken something which is your personal problem and you've made it globally applicable  to a large range of people and now all of a sudden it belongs on Stack Overflow. So two  localized is sort of what we do as a society to punish people that are being selfish. Or  asking a question that nobody's ever going to be able to answer because, you know, it  only applies for a vanishingly small amount of time.  So in conclusion, you know, Stack Overflow is like a big city. Stack Exchange is like  a giant city. Stack Overflow, when it has about 20 million people visiting a month, that's  the population of Seoul, South Korea, one of the biggest cities in the world. It's like  a big city. And if you imagine Seoul, South Korea, you imagine everybody speaks the same  language mostly. Some of them are fluent, some of them are new. Some of them are babies,  some of them are children, some of them are new speakers, some of them are just learning  the language. But mostly there's just one language and yet there are a lot of, there's  a lot of mainstream culture, there's a lot of subcultures, but there are 20 million unique  stories of the 20 million individuals that live there and that's where it really, really  gets interesting. And so the techniques that you would think of to try to study a city are  the same techniques that we use to study and to build and to design the Stack Exchange network.  Again, the old days, computers were just a computational device and I think I sort of  challenge you as you go through the next couple of days when you're in a session and somebody  is giving you an example of object-oriented design in C-Sharp. And you think about sort  of what are those design decisions that you're making merely to do a calculation or a computation.  And then think about the fact that if you're building modern software, it's very likely  that you're creating software for culture, for a culture and for humanity and for a large  group of people and that your software and your C++ classes at some point possibly going  to mediate between human beings and at the point that it mediates between human beings,  it creates culture, creates society and you have to think about it like an anthropologist  essentially. Thank you very much.  Thank you.
Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_0_59.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_60_107.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_108_155.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_156_203.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_204_2051.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_2052_2951.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_2952_3323.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_3324_3539.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_3540_4355.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_4356_5243.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_5244_5843.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_5844_5963.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_5964_6011.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_6012_6707.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_6708_7403.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_7404_8999.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_9000_12431.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_12432_12851.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_12852_14087.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_14088_14255.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_14256_14471.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_14472_15059.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_15060_16427.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_16428_16883.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_16884_18659.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_18660_20471.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_20472_23147.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_23148_25895.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_25896_27407.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_27408_28235.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_28236_30047.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_30048_30227.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_30228_30323.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_30324_30395.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_30396_32063.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_32064_33863.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_33864_35207.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_35208_35339.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_35340_35435.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_35436_35579.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_35580_37799.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_37800_38471.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_38472_38759.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_38760_40163.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_40164_40355.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_40356_42167.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_42168_43775.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_43776_44183.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_44184_46955.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_46956_47495.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_47496_47903.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_47904_48923.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_48924_49607.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_49608_50459.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_50460_50783.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_50784_51395.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_51396_53375.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_53376_59711.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_59712_60863.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_60864_64043.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_64044_65567.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_65568_66179.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_66180_66995.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_66996_67055.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_67056_67103.png Opening_and_Keynote_-_Joel_Spolsky_-_The_Science_of_Communities_Behind_Software-68200924_67104_67128.png