Jeff Atwood – Opening Keynote, Iterate 2018
Alex Salazar: So, with that, up next I wanted to introduce to you our keynote speaker, Jeff Atwood. So, I really thought hard about how to introduce Jeff, and I had a hard time. So, I posted a question on Stack Overflow, and I copy and pasted the answer that had the highest votes.
So, if you don't know who Jeff is, Jeff is the Co-founder of Stack Overflow, and of Discourse. If you don't know what Stack Overflow is, Stack Overflow changed everything. What open source did for the sharing of code, Stack Overflow did for the share of expertise and knowledge. And more than that, it really influenced a whole new generation of developers in how they solve problems, and how they build applications.
But I think the thing that makes Jeff so exciting is, that he is more than just a successful entrepreneur. He's a prolific writer. He's written two books, and one of them is Effective Programming, which all of you should have at your seats. But he also has a great blog called, Coding Horror. And his writings have been inspirational to our team, in what makes a great developer.
And really, the premise of this very conference, that it takes more than just having great technical skills to be a great developer. So, for us, there is really no better speaker to keynote the very first Iterate. So, with that, I hope all of you will join me in welcoming Jeff Atwood to the stage.
Jeff Atwood: Thank you, and thanks for coming. This is a really cool venue. It's like, I feel like I'm the DJ at the nerdiest party ever.
So, if you know I'm a ... he mentioned my blog. I've been writing since 2004. If you need to place that in time, that's the wardrobe malfunction Super Bowl. And what happened with my blog was really interesting, where I had this job, and I loved programming, and I loved writing about programming, so I started doing that on my blog. And eventually my blog got so much attention, I had this big ball of energy of like, 40,000 people, at the time, were seeing what I was reading. And I was like, "Wow, that's kind of a lot of responsibility," it made my day job seem kind of quaint. It's like, "Well, what can I do with this ball of energy that would be useful?"
And that led me to contacting Joel Spolsky, my Co-founder of Stack Overflow. And we came up with this idea of a site where programmers could exchange information that was like, Creative Commons. It wasn't behind a paywall. There was nothing weird and used car sales about it. It was just programmers helping other programmers learn. And we were combining all of these concepts of internet sites that we knew to be working. And we kind of put together this Frankenstein monster of like, "Let's see how this thing does."
And this is Stack Overflow.
They actually put together a really neat tutorial for people that don't understand Stack Overflow, after I left, that's really well-made. And this, is the first page of it. So, it describes the Q&A format, how it works. And the relevant part, it's at the top of that page, is that we learned early on that what we didn't wanna do is build another place for programmers to argue about Java versus C#, or Python versus Ruby. I wanted people to really solve problems together. And we found that we had to have rules about just being really strict about okay, here's the question. And then, with all due respect, come answer the question. And there's reputation in this system. And the key thing about this reputation is it comes from your peers. It doesn't come from the system, it comes from other people seeing what you wrote, and saying, "Hey, that makes sense. That's a really good answer."
And I found that programmers always worked with this system of sort of, pure acceptance. The best way to motivate a programmer is to tell him or her that your code isn't very good. And then, they'll be highly motivated to go fix it. So, it's a peer-based system.
There's also badges in this system. And the badges are about learning the system, rather than having a FAQ, although they do have that now. It was like, "Go explore. Go earn these badges if you want to, that can teach you about how the system works, and all the different things that the system does." 'Cause again, we were making this Frankenstein monster, and that was a part that I saw working on the Xbox 360.
So, this is the user page for Stack Overflow, and we're kind of showing off your best work. "Wow, here's your best answers. Here's your best questions. Here's the tags where you're most active, and look, here's the reputation you're earning from other people seeing your stuff and going, "Wow, that makes sense." Or, maybe it doesn't make sense, as the case may be. So, that's your user page.
Now, there's also a part of the user page, which is what I call The Advanced Game, which is, you can play the Stack Overflow game on other subjects. This called Stack Exchange Network. Stack Overflow is the biggest, but you can play this game with other topics, and that's what's shown here. You can also earn bounties, which is a way of getting past the reputation cap. And of course, the badges.
So, it's like this really complicated game that we put together, but I was okay with that, because to me, programming is the world's most complicated board game. It's got a very strict set of rules. You've gotta follow those rules, play the game with other people and follow those rules, and this is something that's very native to me, as a programmer. Like, I started my career by typing these silly little basic games in on my computer, and learning how the game works, and changing the game, modifying the game.
And all of that feeds into the design of Stack Overflow, where we're fundamentally saying, "Hey, it's fun to learn stuff." Because if you can quantify one thing that a developer is, it's a person who's constantly learning new stuff. And constantly exploring the borders of what they actually know, 'cause there's so much to know. And the game is a learning aid. It helps people work together towards a common goal, without social awkwardness. It's like, "Oh, we're hanging out at a party, oh, what do we talk about?" It's like, "No, no, no, we're playing this game." Right? So, all you gotta do is follow the rules of the game, have fun and learn stuff.
One of the side effects of the game is the game can get very addictive, which wasn't the design goal, right? I didn't design Stack Overflow to say, "I want you to spend all your time here." No, you're supposed to be writing code and building things that work. Right? You're not supposed to be hanging out on Stack Overflow all day long. So, we have a reputation cap of 200 reputation per day, that we added to the system, so I wanted to encourage people to step away from Stack Overflow. It's like, "Well go do your job," basically, right? Like, Stack Overflow isn't your job. I mean, it was kinda my job, but it's not your job.
And that's still controversial, actually. Some people really dislike this limit, but you can earn bounties, which are immune from that daily limit, in case you're curious. So yeah, Stack Overflow is kind of a game. And it's a very focused game, as I mentioned, where it's all about the question and the answer. And that's all we do there. We don't do anything else. And we're very strict about that. And people don't like that, but that's why this system works, is because we're very strict about what we allow in, and what the rules are of the system.
And the cool thing about the game is, it works on three different levels. It works on, "Hey, I have a problem, I type my problem into Google, I search, and oh, there's the answer. There's three really good answers. Now, yay, I'm saved," right? The most selfish reason. But it also works in terms of advancing yourself professionally. Like, you could learn stuff there by answering, and exploring the other answers. You can type in an answer. Edit an answer to make it better, like Wikipedia.
At a third level, we're advancing the entire craft of programming. I want there to be better programmers. I don't want bad code to be out there. I want everyone to have access to really great code, and really great advice.
So that's what I do. If I had to put on my cards, "I'm Jeff Atwood and this is what I do," it'd be, "I build these massively multiplayer text-based games." That's essentially what I do. Which leads me to the next game that I went on to build. I left Stack Overflow in 2012, 'cause some things happened to me while I was building Stack Overflow. That started in 2008. So, then this happened to me in 2009. I was like, "Okay, I'm dealing." Then this happened to me in 2012. And I was also told if you put pictures of cute babies in presentations it gets reviewed better. So remember that when it comes time to evaluate this presentation. Look at these cute humans that I made.
So, I wanna warn you, though. Two babies is a lot of baby. Okay? This is a Mark Twain quote. It's great. It's from this speech called The Baby Speech. And man, that's a lot of baby, right? Nobody is really ready for this amount of small child in their life. So, it was really challenging as a parent. Like, what do I do? How do I deal with this? I had left Stack Overflow, and I'm trying to figure out what I wanna do with my life, right? What do I wanna do after Stack Overflow?
And I found this book. Now, there's all kinds of books giving you advice as a parent. And this book is amazing. It's the one book I recommend. It's the one book that helped me the most. And the key thing to look at here is, essentially, there's not that much difference between a three year old and a 30 year old. If that's shocking to you, then you'll find out when you have your own three year old. Because nobody tells you, when you have kids, your kids are gonna be freaking the hell out a lot, about stuff that doesn't make any sense. Right? And I'm a programmer, I'm like, "Well, stuff makes sense." Well no, actually stuff doesn't make sense.
So, things like, "My nose is smelly." What do I do to fix that problem? Right? So one thing you learn is you can't actually fix their problems. That's not the goal. You might think as a parent, it's like, "I smooth the way for my children. I remove all the roadblocks, make sure nothing bad happens, and everything is easy for them," and you'll find out that's not the job. The job is actually empathy. The job is listening to them and hearing what they're saying.
So, I'm gonna cue up a very short video, it's like two minutes, just to illustrate this concept.
Male Video Speaker: Yeah. Well, you do have a nail in your head.
Female Video Speaker: It is not about the nail.
Male Video Speaker: Are you sure? Because I mean, I'll bet if we got that out of there-
Female Video Speaker: Stop trying to fix it.
Male Video Speaker: No, I'm not trying to fix it. I'm just pointing out that maybe the nail is causing-
Female Video Speaker: You always do this. You always try to fix things, when what I really need is for you to just listen.
Male Video Speaker: See, I don't think that is what you need. I think what you need is to get the nail out-
Female Video Speaker: See? You're not even listening now.
Male Video Speaker: Okay, fine. I will listen. Fine.
Female Video Speaker: t's just sometimes it's like there's this achy ... I don't know what it is. And I'm not sleeping very well at all. And all my sweaters are snagged. I mean, all of them.
Male Video Speaker: Yeah, that sounds really hard.
Female Video Speaker: It is. Thank you. Ow.
Male Video Speaker: Oh, come on. If you would just-
Female Video Speaker: Don't.
Jeff Atwood: Okay, so the central lesson of the video is that trying to fix the problem actually makes things worse. This is so hard to understand as an engineer. Also as a man, we're very problem focused, right? But it's so central to what we're trying to do. And that was the key lesson, because there's problems in life that I can't fix for you.
I mean, if you're a woman and people don't listen to you in a meeting because they view men as more authoritative, I can't fix that for you. I mean, I can think about it and try to help, but I can't fix it. If you're a person of color, and you go to a store, and people follow you around, 'cause they think you're gonna steal something, I can't fix that for you. These are really difficult problems, and all you can do is listen, and hear the stories that they're telling you, and try to understand the problem, right?
Because as engineers, we think everything's a problem to be solved. And it's just weird how that works against you and actually backfires if you don't understand that not all problems can be fixed. And not all problems should be fixed. Even with your kids, like, they break a toy, you get 'em a new toy. "Here, problem solved." And they're like screaming because they loved that old toy. It wasn't about replacing it, it wasn't about fixing it. It was about the sense of loss.
So, coming back to games. Games, I think, to me, are such a central part of my experience as a programmer. Going back to ancient times when TechSpace was all you had. And I also play a lot of video games, right? And one thing I learned, that was interesting to me was, I would go onto forums about games, and talk about the game, and I realized that the actual talking about the games was more fun to me as a game, than the games themselves. 'Cause games come and go, right? I mean, some games are popular for while, and then they fall off. But actually talking to people, the games, and the experience that I had, was an awesome game that kept going, essentially, indefinitely, my whole life.
So that's what really brought me to Discourse. And when I thought about Discourse, I thought, "Okay, we wanna build and open source discussion software that's really good, unlike 99% of the software out there, which is really bad for discussion. But it's like debate club, right? We're gonna debate topics. And so we had this as a mock-up for the very first version of the site, but we didn't use it because I realized that's not how discussion works, because you're not really solving a problem, you've gotta have a reason for people to come there that's fundamentally entertaining. Just like in this talk, I need to be entertaining, or you're not gonna hear anything I'm saying anyway.
So, when you think about design of discussion software, you've gotta encourage fun. Not something we did on Stack Overflow. You know? It's about problem solving, it's about the satisfaction of solving problems. That's not present anymore. Here, it's like a really interesting dinner party. That's kinda the design goal. Or a really interesting dance party. Right? Depending on how much fun you wanna have.
So, you learn stuff in a discussion. You hear other people's stories, but only as a side effect of being there, and saying, "Hey, there's interesting people here. There's beer, there's food, this place is kinda fun. That's why I'm here." This is more difficult than it sounds. Because if you have a support community, where everybody's just going there, telling you about their problems, it's not really fun anymore. Like, if it's a party full of doctors, and the doctors are wanting to talk about being a doctor. And people are going around going, "Hey, I've got this mole on my arm. Can you take a look at that?" It's like, that's not really fun anymore. So, it's more difficult than it sounds.
If you look at a lot of Discourse instances, this is Discourse. You'll notice up here, there's a category called, Games. So, that's a sign of a healthy community. They're kind of there to enjoy each other's company, right? They're there, kind of explicitly, to have fun. So one of my favorite books, and I still highly recommend this book, it's a data based book about things that work for productivity based on science. Based on measured data, not just some person telling you the stuff. So, it's got a lot of really helpful advice. So, if you think about a negative experience you've had, and like, "How do I deal with bad things that are happening to me?" You can think, "Okay, well I could talk to a bunch of people about it," or, "I could write about it."
So, they actually ran an experiment. They had people who had a bad experience. One group wrote about it, one group talked about it. And what they found was, that the people who wrote about it, had much better outcomes from the negative story. They felt much better, because when you tell a story, you form a narrative around what's happening to you. "This bad thing happened to me, and that's a part of a story of things that are happening to me." It's not just, "The Universe hates me." It's, "Here's the narrative that I'm gonna build around this that helps me contextualize this bad thing that happened to me. What I'm gonna do about it, where I'm gonna go from here."
So this is as fundamental as it gets. The human experience is about storytelling.
It's about people sitting around the campfire, telling their stories. And that's what we're trying to capture in Discourse. So, this is a list of top topics on a particular community. And you'll notice each one of them is really kind of a story that someone is telling, about what's happening to them. And that's what's interesting about it. It's a story only they can tell. It's not regurgitated talking points. It's like, "This is what happened to me as a person."
So, here's a person, you don't need to read this. I realize the text is too small. This person has cancer. So that's serious, right? And he's telling this story about, you know, he got in a cab, and the cabbie wouldn't take his money because he found out he had cancer. And then later, this person posted an update months later. It's like, "I beat cancer." Right? And if you notice, the most important design element on this page as a software designer, is that heart that says, "Hey, I saw your story, and my heart goes out to you."
So that's actually what we're designing for in Discourse.
And we had, early on in Discourse, we were trying to build a product, right? So, we're trying to sell it. And we had certain customers that, they just really took to Discourse. We're like, "Well, why is it working so well for them?"
So, this one community called Choice of Games, I'm like, "What is this?" Right? And I looked into it, and you know what they build? Narrative stories. So, it's a community about storytelling, right? Which is what the product does. So, no wonder they were blowing past all their allocated limits and stuff, 'cause people were like, "Holy crap, this was built for us." Right? This Choice of Games forum is a place where we go to build interactive, narrative fiction. Where people are telling stories, and one of my favorite books as a kid was these Choose Your Own Adventure books. It's in my Twitter profile.
It's about the choices we make in life. The story we're telling about ourselves, as we make, if-then-else decisions like programmers do, about what we're going to do. And where that takes us, for good or bad. And I loved these as a kid. These were like programmer books to me, right? It's about how programmers think of the world, about the choices that you make, and the story that you're gonna tell about those choices.
So, in comparing the two, in Discourse, the design priorities are empathy, you've gotta have ... we're here to hear your story. I'm not here to necessarily solve your problem, because it may not even be a problem that I can actually solve. Or anyone could solve. You're gonna have fun. Otherwise, why would you be here? And then, we're gonna, again, tell those stories.
Whereas, in Stack Overflow it's about being civil, obviously, we're not gonna tolerate any rudeness or anything like that. Utility to the world. You're posting things that are useful, not just to you, but to other programmers who might have the same problem. Convince me that your problem is interesting. If it's interesting, then it's useful, and has utility to others. And it's also a practical problem. It's not just daydreaming. It's not like, "What's your favorite programming drink? What's your favorite programming food? What's the funniest programmer cartoon you've seen?" We had all of those topics early on in Stack Overflow, and realized, "Oh gosh, this isn't actually what we want it to be." So, we had to kinda outlaw that early on. So, it's about practical problems that can be solved.
So, where the guideline was on Stack Overflow, "Is this useful?" On Discourse, it might be, "Is this illegal to post?" And I mean that in the sense of, illegal in the broader sense of laws. But also, the rules that we set in our community about what we actually want here, right?
So, where at Stack Overflow was a system of kinda saying, "No," to people. It's like, "This is what we do, and you can do that here. But if you don't wanna do that, then with all due respect, you have to go somewhere else." But that's why it's a system of discipline. It produces really great artifacts if you are okay with the strict rule set. Discourse is a system where rule set can't be strict. Right? That's not the point of hanging out there. You know, it's like a restaurant.
Whereas Stack Overflow was a scalpel, a very precision tool for getting exactly the results you want, but you can hurt yourself with it. Like, this is not something you would give to a kid, right? Or even maybe some adults. But Discourse is like a table knife. It's not only safe, it's like, "I could use it to open a box. I could use it to screw in a screw." It's a really useful tool in a variety of circumstances. It's not designed to be this specialized tool.
When I started Discourse, I had all these grand dreams about what I wanted to build, and I always played these construction kit games as a kid, like pinball construction set, adventure construction set. And that's the name of the company, right? August 16, 2012. Civilized Discourse Construction Kit, INC. I actually want people to talk to each other without it degenerating into the howling of wolves, right? And that's what we try to reflect when you look at Discourse. It's like, it's whatever you want it to be. It's a flexible building block of community where people are kind of being nice to each other, at some level.
I would never say on Stack Overflow the goal is to be nice. The goal is to be useful, and civil, but not nice. But on Discourse, the goal is actually to be nice. So, I was very excited to get the Discourse domain name, because the word shows up wherever I think it should show up. Right? I'm always excited when I see the word Discourse come up in news articles. I'm like, "Yes, that's what we're trying to do." And it's so important now, because we're more divided than we have ever been. It's crazy, the things that are happening in politics, that nobody really understands why this is happening. But if you look at this graph of media and opinions, over time, we're just getting further and further apart. And kind of fighting each other.
And part of this problem is because we went from a world where Microsoft, in 1979 or whatever, would say, "Hey, I've got a radical idea for you. What if there was a computer on every desk?" Now, that seems ridiculous, because I guarantee every single one of you in this room has a computer in your pocket. And pretty much every human being at this point on, is gonna have a computer in their pocket. Microsoft's dream wasn't radical enough. It was not even close to radical enough.
So now, we're all connected, 24/7, whether you want to be or not. Right? So, that's kind of the good news. Also, kind of the bad news. Like, imagine if every day was Thanksgiving dinner with your family. Kind of a mixed blessing, right?
And what was frustrating to me, is that software that facilitated discussion had no advice on how to deal with other human beings. It would tell you, "Oh, here's how you make text bold. Here's how you archive a topic," but no advice about the actual problems. The people problems that you're gonna have when you get a bunch of people together talking about something that's kinda complex, and maybe contentious. So, what I was trying to get to is this, can software teach you to get along better with other people? Is that possible? So how do you do that? That's the next question. How do you do that?
I do think you can start with rules. This is a picture I took of our local McDonald's. They have rules at the drive-thru. And there's also what Joel called the No Elephants rule. Every rule you see here, is here because someone broke that rule at some point, and they were like, "This is a problem, therefore, we will add a rule." So, we have that in Discourse. We've spent a lot of time thinking about what is a good set of guidelines for civilized discussion with other people? And it's a great document. But good luck getting people to read it. And the type of people that read this, are the type of people that don't need to read it. Because they're like, the A students. They're sitting in the front row.
The people that you want to read this, trust me, are not going to read this. It's still useful, as an aspirational goal. And something to point to as a shining statue of, "This is what we stand for," because if you don't say what you stand for, then you don't stand for anything. And it's really unclear what people should do.
So, it's not the end-all, be-all. And one of the ways we try to reinforce this, we do have badges in Discourse that sort of encourage you to do the things that are healthy for a community. And we also encourage people to read it. We say, "Oh look, the FAQ, the guidelines are new, would you like to visit them? You can get a badge for reading the guidelines." So, you try to encourage it, but you should have no illusions about having a set of rules. You need them, but not for the reason you think you do.
One of the things that surprised me, I had to sign up again for Airbnb. They lost my account, or I got confused or something. And I was really surprised. At the beginning, when you sign up for Airbnb, they're like, "Hey, don't be a racist while you're using Airbnb." I was like, "No problem. I don't want to be a racist," right? But this is again, rule setting at the outset. Guidelines that you're setting as table stakes for even entering the room. You can't say that you didn't see it, right?
But here's the trick. It turns out, people are complicated, right? So, if you force someone to do something, they're gonna resist that, just to be contrary. Right? So, they have to feel like they wanted to do it. So, if you sort of show it to them, and lead them to it, and they do it themselves, then like, "Okay, this is cool. I can kinda be down with that." But if it's like, "You will now have forced training on X, and you will do X." It's like, you're not gonna get the results you think you're gonna get. You know? The whole lead the horse to water thing.
So how do you do that? How do you encourage people to do the right thing? Now, there's a great book. I love all of Dan Ariely's book. This one is essential. And essentially, what it teaches you, is the incredible power of telling people the right thing at exactly the right time. So, they did an experiment in this book. It was kind of an exercise where you would get paid based on the number of problems you completed on a piece of paper. Very arbitrary stuff. But the key thing is, you could self report. "Oh, I finished 10 problems. I finished 20 problems." Basically, you could lie.
So, they did two instances of this. In the first one, they said, "Before you start these problems, which we will pay you for, based on the number you completed, recall 10 books you read in high school." And for group B they said, "Before you start this problem set, recall the 10 Commandments." And what they found was, the group that recalled the 10 Commandments had radically lower levels of cheating, because they were being reminded at the time they started, it's like, "Hey, is this the person that you want to be? Do you wanna lie about this?" And a lot of people were like, "Well, you know, no. Not really. Now, that you've mentioned that. I don't wanna be that person."
So, this is what you're fighting, right? The idea that in discussions ... one of the things that's frustrating for me about discussion software design, the way most people do it, or at least, maybe, the way most men do it, you read the discussion til something pisses you off, and then click the reply button. Right? That's kinda the trigger. Or on Amazon, the reviews are gonna be skewed to like, "I hated this product. It killed my dog." Or, "This is the best product I've ever received in my life." Right? There's sort of those extremes you get of like, why people wanna interact. Something very bad, or something really good happened.
Another example of where this can work, they were trying to reduce bike theft. This is in the UK, or actually ... yeah, I think it's in the UK. All they did was put up a sign that says, "Cycle Thieves, we are watching you," with eyes. That's all they did. The places with that sign had like 60% lower instances of bike theft, because people were again, reminded that, "Oh geez, I could get in trouble for this. It's not really the right thing to do. What about this person who doesn't have a bike anymore?" It's like, this general reminder to, who do you wanna be in the morning, when you wake up?
So, we do this at Discourse. What we do is, when you start typing, we pop up a little reminder. At the time, you're saying, "Somebody is wrong on the Internet. I shall now start typing words into a little box." That's what we do on the Internet, right? Type words into little boxes. So, as you start typing, we're like, "Hey, cool. Just a gentle reminder. This is what we're here for." We also do other gentle reminders at the time the behavior is happening. So, in this case, one thing I observe in discussions is, people would just harp on other people. They would just reply to the same person over and over. This is what I call the Get a Room reminder. Of like, "Hey, why don't you reply to someone else in the conversation? Why are you replying to the same person over and over and over? Is there something going on between you and this person that you should think about before replying next?" So again, from a software design standpoint, we're saying, "Hey, zoom in to where the behavior is actually happening, and then do the reminder. Then, do the nudge."
Another thing that really bugged me about discussions is people going, "Plus one," or, "Yes," or, "I agree with that." It's like, "Well, did you really need to write a whole post that says, "I agree with that," you know? So, when somebody tries to post something really small, we could just say, "Nope, too small. Don't allow five character posts." But instead, we're like, "Hey, it's kinda small, but have you considered pressing that heart button?" Right? "'Cause that might be a good way to do this." Whereas, if I just told people, "You shall not post five character posts," it's like, "Well, screw you. Now, I'm gonna do everything I can to post really short posts, because you told me not to do that."
So, you can also think about other places in the software, from a design standpoint, where you say, "What are the behaviors that I'm observing that might be kinda weird, which would need nudges?" Another one that's my favorite is, somebody posts a link in a discussion, and it's like, five pages down. And of course, they didn't read the previous discussion. So, you might say, "Hey look, we've already posted that link. Joe posted that three days ago in the topic, are you sure you wanna post that link again? 'Cause we've probably seen it." So, I think there's a lot of utility here.
And not just in terms of good discussions, but if you look at ... this is a software ... the name of it is escaping me, but it's like Facebook for neighborhoods. And one of the things they had problems with ... what was the name of it?
Audience Member: Nextdoor?
Jeff Atwood: Nextdoor, thank you. Nextdoor. Thank you. Nextdoor. So, on Nextdoor, which my wife regularly participates in, they were kind of noticing that people were a little bit racist on Nextdoor. Because the thing is, how well do you know your neighbors? Do you really talk to your neighbors that much? I mean, I see 'em on the driveway, it's like, "Hey, how's it going?" Do you really know your neighbors? Well, on Nextdoor, you get to know your neighbors. And you may not like what you find out about your neighbors.
So, this is a software design problem. This isn't, "Oh well, people are racist. Nothing we can do about it." No. I love what they did here. What they found were the crime reports were the problem, because instead of a crime, what they were really reporting was, "Person of unusual skin color was seen in my neighborhood, and I think that's bad." Right? So they were like, "This is not a good crime report." Nothing happened, first of all. What actually happened? Right? So, this is sort of guidelines. And then, the really brilliant thing is like, okay, you're now describing a questionable person that was in your neighborhood. You can't have just a race. You have to describe, what was the person wearing? What was their height? What were they doing that was actually sort of questionable that bothered you? And you're, kind of, teaching people to be a little bit less racist. Right? And also, what's a good crime report? Right? Person of unknown color in neighborhood is not a good report. So, I love that they did this. And this is what software developers can do to again, help people make better choices about who they are as people.
There's a whole book about this. Fairly famous book. The classic example is, when you want people to do something, you make that easy. When you don't want people to do something, you make that hard. So here, with the kids, it's like, put all the healthy foods at the bottom, and put all the junk food at the top. Kinda the opposite of every grocery checkout lane you've ever seen. So, make the right thing easy to do, make the wrong thing ... not impossible. I mean, if you wanna have junk food, you can do that. But just, don't make it so easy.
Coming back to this, you remember this is the rules that we came into with Airbnb. So, what you could do on Airbnb, when you're dealing with people like renting out their house. Well, how can we make people not be racist when it comes to renting their house? What could you do? Well yeah, you can have an agreement that says, "Hey, don't be racist," okay, click, satisfied. But when it comes time to show, "This person wants to rent your lakefront home for a month," maybe don't show a picture of that person. Maybe even obscure their name. Because all you care about is that person’s history is like, do they pay? Do they tear up places where they stay? You shouldn't be caring about, "I don't know about the color of this person that's gonna be in my lake house," so you can actually do something as a developer to make this better. Right? Because a hotel ... if that behavior happened at a hotel, they would be sued into oblivion. Right? Probably. And rightfully so. But you can do that when you have a peer-to-peer marketplace where it's just one person renting to another person, right? You have to have the software help them, and remind them to make better decisions.
So, in Discourse, I showed you how in Stack Overflow there's a reputation system based on peer acceptance. Up votes, down votes. There are no down votes in Discourse. There's only the heart. The like. But we do have a trust system Discourse, but it's kind of hidden, because I didn't really want it to be this front and center thing that people are thinking about, like "Well, how much reputation do I have in the discussion?" That's not the point of the discussions. It's about sharing and empathy. It's not about how much do you know.
And one thing that I found is that reading is really fundamental. I want people to sit and listen to the stories that other people are saying, right? And writing, right? Reading is so fundamental. So, how do you fix this? Well first of all, in Discourse, I hate pagination. I think pagination is a scourge because it prevents you from reading. And what do we wanna do? Listen. You've gotta listen. To hear anything, you have to listen. Right? To be able to talk, you should first listen.
So, another example, Ars Technica did what they call, the Banana Experiment. They posted a gun control article, so you know where we're going with this. Controversial, right? And then, in the seventh paragraph, which is kinda here, they buried a statement, which is also, "Please mention bananas in any comment you leave on this article." Okay, let's see what happens. Here's the comments. There's some more comments. No. Still no mention of bananas in the comments. So, we're on page three, and finally, way, way down here in the discussion, somebody's like, "Hey, bananas! I read the article that we're all discussing now," right?
So, you might think, from a design perspective, how do you get people to read? Remove barriers to reading. Pagination. It's like, I just scroll and more keeps coming up. I don't have to do anything. Right? Another thing you could do, we haven't done this yet, but we're thinking about it. Steam does this thing where, if you're gonna comment about a game on Steam, it's gonna show how long you played the game. So, when someone says, "This game sucks. I would never play it, it's terrible." Played 10 minutes. Or, somebody who played for, I don't know 365 hours, you're like, "Whoa, okay, maybe you like it too much." Right? So that's something you could do.
Another thing that Civil Commons did is, before you can comment ... they don't tell you this, so you'll submit your comment, but before your comment is posted, you must rate other people's comments on civility and quality, and then, in a surprise twist at the end, which is brilliant, you rate your own comment by those same criteria. So I think, these are some really interesting ways of solving this problem, right? Of how do you get people to read? How do you get them to think about what they're saying, and actually listen?
So, you have really two strategies here. You have carrot and stick. Reward the positive behaviors that make things better for people, and then essentially ignore or suppress, and redirect the negative behaviors that you don't work. And you should be thinking about this in your software, right? Encouraging things that I want, discouraging the things I don't want, while still leaving flexibility. There might a time where people need to yell at each other for legitimate reasons. There might be a legit argument that you wanna have about something where the leash comes off. And if this sounds like dog training, it's kinda 'cause it is. Because one of the first things you will learn about animal training is, punishments don't work. It's been shown over and over again. You cannot punish people and expect dogs to learn anything from that. Right?
Now the other thing about this that's tricky is, you may think you're rewarding behavior A, but you're accidentally rewarding behavior B. Try to think about all of the things you're accidentally rewarding. Not through rule set, but just through, "Oh whoops, we didn't think about that," right? The other thing is, some of this can be really easy. Reading is fundamental. I mean, how can you talk if you're not listening. But also, showing up is 90% of the job. In parenting, my god, it's like you'll never do anything right. Probably the first rule of parenting is, you're gonna do a whole lot of things wrong. But if you're never there, you're a bad parent.
That's the one golden rule is, you have to be there for this to work. And it's also true of communities. People who show up regularly and participate, are some of your most valuable people in the community, even if they don't post a lot. Right?
So, in Discourse we measure read time, of how long everything is on the screen. Even if you've never posted one time, I can see that you read five days worth of material. And that's front and center in your user profile. We're trying to escalate reading as a metric people should care about, and showing up. And of course, reward people for content that gets liked a lot. Right?
The other tool you have in your toolbox that's underappreciated, I think, is the way you present information. Don't bury the lead. Put the most important things at the top. So, in Stack Overflow, if you go to the user page on Stack Overflow, you can do this today, we sort by, I think, time duration, which I think is like, a month or a week, so we're not showing all time, because then it would just be Jon Skeet forever. And it's ordered by reputation. We don't say, "You must earn reputation." But hey, the user list just happens to be ordered by reputation, make of that what you will.
So the goal is peer acceptance.
You want answers that people think are good, and right, and work. Not everything has to be correct, but your peers need to be favorably receiving what you're telling them. So, contrast that with Discourse. If you go to the user page in Discourse, we're not rewarding peer acceptance. We're rewarding empathy. Because I will show you, you have received 1,200 likes, but you have also given a certain amount. You should be giving as much as you get. And I ... you can look at my stats on Meta Discourse, but I think I do a pretty good job of this. But yeah, you can see, people are different. Some people do, some people don't. Some people give no, but you know, that's what this page is showing you. It's a user directory, ostensibly, but it's also a lesson about the system is designed for, without being preachy. I'm not saying, "You must go do this," but hey, look how this page looks. Right? Make of that what you will.
Going back to what we designed for. So on Stack Overflow, civility, utility to the world, and problems that can actually be solved, and have meaning. It's not a problem of ... that's only useful to you. It's useful to a lot of people. And then, in Discourse, empathy for others, listening, having fun. That's an explicit goal in a way that it isn't in Discourse. And telling stories. Right?
In the end, I have really four things to advise you as people who work on, and build software. Yes, you need aspirational guidelines. If you don't stand for anything, that's bad. You need to have a document that says, "This is what we stand for," this is why I'm a huge fan of code of conduct statements on projects. And I believe this to be deeply true: The people who complain that you have a code of conduct, are the first people you want to leave your project. Like, there's so many good code of conducts, and the people who complain about 'em, it's like the code of conduct is doing a service, by sort of telling you who theses people are early on, so that they can be gently moved away from your project. You'll need that, but mostly as an aspirational guideline.
The Just In Time nudges I talked about, as you design software, think, "When in time can I jump in and give the user good advice about what they should do next?" Not, "Let's go build a FAQ," not, "Let's go build documentation," but let me give you an example. The error message that tells you exactly what is wrong. That is gold. Right? "Oh, this is wrong. Here's some advice of things you might do to fix this." Brilliant. That's exactly what I'm talking about. Just In Time nudges of like, "Oh, you had a problem. I'm sorry. Maybe you could try these three things to fix it."
Make the right thing easy to do. Right? Think about what you want users to do, and build this golden, shining path with like, guardrails on each side, that herds towards the place that you want them to be. Make it easy for them to fall into the pit of success. Don't make other things impossible to do, but think about you can discourage things you don't want.
For example, on Stack Overflow, there's a commenting system. But that's not the focus of the system, right? We want it to be questions and answers. So, if you go into the comments, you might find, well first, "I can't even leave a comment," that's right, because you don't have enough reputation. You have to have a little bit of reputation to leave a comment, because I don't really want a bunch of comments on this stuff unless you kinda know what's going on here. And second, comments are limited in length, they're limited in formatting, we only show five of the maximum. Like, we'll just show a, "Click here to see more," if there's like 20 comments. All of that is telling you the purpose of this system is not to come in and leave comments. The purpose is to, sure, if you wanna do an edit on an answer, you don't have to login to do that on Stack Overflow. You can just click edit as an anonymous user and do that. But leaving a comment? No. We wanna discourage that. It's about questions and answers.
And of course, reward the things that people are doing that's working well. The Stack Overflow reputation system, liking in Discourse, all of the badging systems. You should always be thinking, "How can I reward users that are doing a great job?"
And I think that's it. That's all I have. Thank you very much.