Rebuilding Reddit - Christopher Slowe, Reddit

Reddit's CTO Chris Slowe walks through the company's multi-year redesign and rewrite. They moved from jQuery to React to improve brand perception and developer speed, ran design sprints and user research, and staged the rollout carefully to handle performance and scaling challenges while keeping moderators in the loop.
Questions this video answers
About 350 million monthly active users.
Around 1 million communities.
~10 million posts per month; ~3 million comments per day; ~58 million votes (timeframe unspecified).
He later referenced 330 million users and ~150,000 hours of work invested so far.
About 50 people on the redesign effort across four dedicated teams.
Chapters
Oh, man, with that intro, I can only possibly let you down. Thanks for coming out here and not having your post lunch nap. I really appreciate that. Yeah. Hey, I'm Chris. I'm the CTO at Reddit. Start up with a kind of brief history of me. So actually I got my start doing experimental physics. I use it every day in that gravity still seems to operate on me. And I got started actually as founding engineer at Reddit in 2005. For those who don't know what a founding engineer is, it's a fancy way of describing somebody who at one point worked entirely for pizza and kind of moved on from there. Or as my mom described it, what are you doing with your life? It worked out actually, in the long term, mostly the time I was doing kind of platform and infrastructure work. And the redesign I'm going to talk about here is actually also almost entirely my fault. The original stack, now that I'm the cto, it means that the redesign is also probably entirely my fault. So really I'm to blame for everything. So first off, you know, got to do the standard intro to what is Reddit? Just curious how many people here use Reddit? How many people here consider themselves a Reddit user? Hmm, different groups. Well, thank you for coming back and thank you to all the lurkers. Lurkers are people too, just to kind of do the stereo intro. Reddit, we've traditionally called ourselves the front page of the Internet. That notion has had some staying power, but what it's actually kind of evolved into is we're kind of a social network where we have thousands of communities where people can talk about their interests and passions. And we really put the conversation part first. We're kind of like the real last place online where you have long form conversations happening. And we're also kind of a big deal. We do actually have a fair amount of traffic. We're like the biggest little site that no one's ever heard of. We're usually somewhere between four and six on Alexa. I'm glad to see after all these years they finally fixed their algorithm. And we have about 350 million monthly active users, kind of around a million communities. 10 million posts per month, 3 million comments per day, and about 58 million votes. So it's actually a lot to deal with. The graph over on the side is actually showing kind of live or when we took the live post and comment submissions. The blue is posts and the red is comments. So lots of things happening. And our purpose is to bring community and belonging to, to everyone in the world. And so, with that notion in mind, the way to think about this kind of redesign is that we have to build an experience that appeals to everybody. It's so simple. Everyone loves the same things. And one part of this is that change is actually really hard in general, and it's especially hard on Reddit. And here's why. Here is, back in the day, this is the first version of Reddit 2005, which happens to be, in terms of timelines. Facebook was 2004, Twitter was 2006. So this is really pretty far back there. And you'll notice this strong affinity to the current version of Reddit. In fact, here's kind of speeding through the time 2009, adding some more cruft and just kind of, oh, look, we had an ad unit finally in 2013. Great. And 2017, not really drastic changes here. So, you know, especially for Redditors, we're talking about taking an experience which they've kind of come to rely on, and, you know, doing something with it, which, of course, is absolutely terrifying. You know, one of the primary reasons that Reddit exists is it's a platform for Redditors to criticize Reddit. And so with that in mind, we're kind of set up in this state of trying to make it more welcoming, but at the same time having to listen to everybody telling us that we're destroying the site. And so the why for the redesign should be pretty clear here. I mean, the why is, to start with, it's about perception, right? We don't want to look like. My favorite description of Reddit's aesthetic was we look like a dystopian Craigslist, which I think is a really high bar to hit. I'm really actually proud of that one. And what we want to do is make it welcoming. So I think to us, brand perception and making the experience welcoming are basically the same thing. And on top of it all part of having a stack that is about 8 to 10 years old. Developer Velocity is a very important thing. We're growing as a company as well as a site. The stack is old. The current production version, prior to the redesign was using jQuery. For those people who remember it pre react pre angular, it actually works fairly well. But of course, it's accumulated a lot of cruft over the years. The first step here is to really start thinking about building a foundation. What's the new stack going to look like? And with any kind of redesign, you have to deal with this. Right. Second system syndrome. For those of you who don't know it. The way I like to describe it is that for any sufficiently complicated product change or project change, there's this natural conversation that kind of happens all the time, which is while we're in there and then you start to rebuild things and before you know it you've taken your simple we should do a front page redesign. And now your stack is entirely in a combination of Scala and Elm and for some reason you can only support fonts with serifs. So you kind of have to deal with that as the feature creep and kind of make sure it doesn't actually happen or at least mitigate it as much as possible. So what we kind of did to try to stop this was to break up the rewrite from the redesign bits and the rewrite was going to have to happen anyway. So we actually had a chance to actually go through, start rebuilding the stack. In our cases, we actually started using react pretty early on and separately break off. A design team's entire job, it is, is to try to figure out what should the new, the new stack look like. We also had a big advantage here in that in 2016 we didn't have our own first party mobile apps. We've had a giant ecosystem of third party apps, which we still have, and we love them. They're a great engine for innovation. And so we were able to actually build a new experience for Reddit without having a prior art to compare to, which makes it a lot more straightforward to kind of iterate and design and build and build something that looks a lot more like a modern experience. The counterpoint to that is that the users noticed pretty quickly that there was a slight difference between the two stacks. And this was a good motivation. This is actually, this is a good motivation to say, hey, maybe this whole redesign thing is a good idea. So the next phase really is to get into the design side. I am an engineer by training. I know enough about design to know that designers are to see designers very good at their job and feel really good about it, because I know I couldn't do that, as evidenced by the early versions of Reddit. And one of the things we added was a redesigned war room. So we basically let these designers go off and be creative, which is a very hard thing to do. You don't just say to somebody, okay, it's time to be creative. Please start being creative now. We need to get this out. And so this included going full bore design sprints. We established a war room. I managed to. They had an entire conference room dedicated to redesigns with as you can see on this, these lovely printouts of what the new site could look like. I managed to not get a big ball of string and beautiful mind it all into a spiral, but it was actually lovely. And also they dedicated an entire day to crazy ideas. The intention here was to not say we're going to do something radically different, but what would something radically different look like? That at least got us a chance to get out of our box. So once you've got these initial set of new designs, the new question is, could we actually even live here? One of the advantages is that of course people who work at Reddit also use Reddit. One of the problems is people who work at Reddit also use Reddit. And so we actually had a chance to basically dog food this ourselves. Like actually ask employees, hey, would you actually use this? Because we had the full gambit of very core engaged users, this guy, and much more casual kind of newer users. And so we did concept interviews. We actually had people try out. InVision is a magical thing. I love it. I'm amazed that if it existed back in the day, the site might look a little better today. And we had a chance to actually check and see. Is this something that before we actually expose anyone in the outside world who might decide to blog about it and say that we are incompetent, which they would do anyway, would this actually help us achieve our goals? And will this actually look like look good? So next up, once we kind of hit that, not a small milestone, but definitely an important one, we actually spun up an entire user research team from scratch to start to interview users. And with that it was actually getting full blown working mockups. At this point, the stack was actually advanced enough that we could actually build some of these early mockups into it. Here's an example of a video call was actually going on between our head of user research and a user. And it was great because it gave us a chance to actually talk to somebody and help to find out not only what their problems were, but what their concerns were. And the issue we run up against is that the people who are most engaged and most into Reddit have no problem expressing their concerns on platform. You're not going to get that from a new user. A user's going to come along and say eh and just bounce. And so it gave us an opportunity to hear the full gauntlet of I don't know what I'm looking at for the new user to why are you trying to destroy Reddit from the engaged users and all the variables in between. And actually, honestly, just over a video call, you get much more real understanding of where the user's coming from. And they can actually point at things and say, I don't like this, or I don't know what I'm looking at in those cases. One of the little bits that we incorporated in the first design was we made some jokes about a hamburger button and we actually made it shaped like a real hamburger, which I really liked a lot. Stuck around for a while, we gradually switched into a real looking one, but it's gone through some stylized versions. This also gives us a chance to try Reddit out with a real user base with actual content, and then start the iteration loop of trying to fix the most fundamental issues. And with a new stack, one of them is always going to be things like performance that's been an ongoing problem, but just actual product issues like rough spots, unclear ui. There's always a tendency to want to create mystery, meet ui. It just kind of happens as a result of a redesign. So that kind of comes back to the at the end of the day, the purpose here is not to do something drastically, radically different and to alienate our existing user base, but to find a compromise where we take our current, functional and very engaging stack and start to make it look a little bit more modern and a little bit more polished and a little bit more welcoming to more users. And so, you know, fundamentally that means we can't really change how Reddit works. You know, there should still be voting arrows. Voting arrows are the most important thing on Reddit. They're actually more fundamental than commenting. We only had commenting six months in. We also have to be cognizant of the fact that users will be change averse. And that means that we're not going to be able to do something that is too subtle, but definitely should be amenable to thinking about the current stack and looking at it in a way that isn't too different. The last big thing here is that the fundamental unit on Reddit isn't so much the user, it's the community. As part of this redesign, we have to basically make sure that the very mechanics that have helped to foster communities on Reddit so still function. And that really means putting communities first in this redesign and thinking about what are they going to need, what are moderators who are. At the end of the day, the reason why Reddit works is because we have a giant base of moderators who mostly through the goodness of their heart, are willing to put time and energy into making sure communities function and so early on in our rollout process, we started engaging with moderators very, very early to make sure that we addressed their concerns. And so that means also that we have to be able to understand what moderators need and what communities need. And those should be hopefully the same thing. And also to make the design and iteration process part of their journey. So it feels like they're actually working with us rather than it being a very confrontational, you know, you're changing everything up from under us. And, you know, one of the early things that came on was actually css. So a very old, very important feature of Reddit, we actually, I think what really helped get communities off the ground is we actually allow arbitrary styling of communities with css. And that's great. You get experiences like this one, which, I mean, I don't think anyone here would think that's Reddit unless you actually knew it. And the side effect, though is, of course, you know, CSS is a very. It's a very powerful tool. It also means the DOM effectively gets locked in. It meant there was no way to actually start to do subtle iterations. Like, once we had enough CSS usage from third parties, we can't change anything. We had a div in this and it breaks the layout on half of the site and we can actually fix it very easily. So the solution we kind of went towards was, well, it turns out that there is a set of the first 90% of features that all communities were actually using as part of their styling. We started building out a toolkit for actually doing customization with this control panel. So you have here kind of the most basic functionality. We still allow for some CSS here and there, but in a much more restricted scope. We've been kind of going back and forth on how much there. And the intention is to allow for personalization, but to make sure that we can still actually move the entire product and not break anything. Another nice feature of having it this way is that if you think about, for apps, apps are not going to run css. So we already have a problem where, since our mobile traffic is going up, users aren't necessarily seeing this customization. And so providing a means of actually configuring it via checkboxes and via uploading individual images made a big difference. And so here's some examples of, with structured styles where you can go, here's the slightly more stylized hamburger button. And it's starting to feel very similar to the old stack in that way. Okay, so next thing up, listen to users. I've already Made the joke several times, but our users don't have a problem being listened to because they complain, right? On platform. And, you know, there's an old joke, of course, about that users don't actually know what they want, or they actually. They know what they want, they don't know what they need. And so being able to tease out those two things, it can be very tricky. But the important part about there is evolving, right? So the cornerstone of the way we operate is the assumption that our users are going to be more creative than us. At the very least, they outnumber us by about a million to one. So just from sheer statistics, there should be a couple people in there who are pretty creative, but just even with structured styles or just some of the basic things that we provided as tools, there's an entire flare system on Reddit which is built off of structured styles or off of css. I'm sorry, and we would have never thought of that. There's a whole bunch of creativity there that we want to unleash. And so this means doing things like actually using the platform to have the conversation. We built a dedicated community called our redesign that is all about making sure that users have a place to talk about the redesign and they're able to kind of complain, right? Live in a place that's actually constructive, where we can actually pay attention and engage, and that's important to us. And most importantly, we do actually listen and take action. We don't accept everything. We. We try to make sure people feel like they're at least heard. And we do actually build what most users want. This is my favorite quizzing from the Onion. This will likely be a smooth rollout and no one will have any complaints, as everything that happens on Reddit didn't go quite that well, but it went pretty well. And we did actually see people wanting to be part of it. So when we announced that we were going to actually move from the this very closed alpha into an open beta, we had a call to action saying, hey, if you want to join. Oops, back up. If you want to join, just reply here. And we had 2,000 comments in almost no time at all. And there were some conversations that were a little bit less pleasant, but we also mint pitchforks. That's part of the process. And the users. I think the takeaway from all of this for us is that it's a luxury to have users that are so engaged in your platform that they passionately care about every pixel you change. Right? The fact they're complaining means they love it. And the fact that they're complaining means that they're afraid you're going to break the very fragile, beautiful thing that they see in your platform. And so that's the part that we have to kind of remind ourselves of. Constantly having a community around this and having a way to converse directly with your users as they were going through the process of the redesign meant that we also had a chance for PMs and designers to talk directly to users and actually get their knocks when they actually deserve them or actually be able to explain what we're thinking when we make changes. And this also gave us an opportunity to have advocates on platform. Not everyone on platform is seeing everything that's happening live. And so we had a chance for users who were actually paying attention to say, hey, stupid, look, their blog post was yesterday. Take a look, here's a link. Because we can't call them stupid. So it's good to have users do that for us. And, you know, so this meant we could do things like launch early adopters. And actually we started doing badges for users who actually were helpful or, you know, assisting with styling, assisting with alpha. And we made sure that as part of the first rollout, the first groups that got access to it were mods. Any existing beta users got access to it pretty quickly. We made sure to stay out of their way and let them use the platform and tell us what they thought. And we also gave them some things to focus on, like what's going on here. We actually had users actually building wiki pages up for us of the goodness of their heart on how to do structured styling, how to actually use the new tools before we even had a chance to finish them, which was actually really delightful. Okay, metrics, most important thing here, with all the talk about talk at the end of the day, if the redesign doesn't actually work and you find out that people can't comment, that's probably a bad thing. The tricky part, of course, is that with a redesign, we're talking about changing. It's a really apples to oranges comparison. We don't really know necessarily what, what magical thing is broken until we've broken it. And so we just measured everything we put in. We actually had 10 times more metric coming out of our redesign than we did out of the primary stack, which, as you can imagine, also meant for some interesting scaling issues in our event pipeline when we started rolling out to the majority of our traffic. We also defined our metrics early on. So we wanted to make sure that overall engagement, like, are people voting? Are People submitting? Are people actually using the redesign for the early versions? It's really how long do they use it until they opt back out and go back to the old stack and then just continue iterating. The intention here really is to learn, debug, iterate over the course of several months with all this. Finally last April we went, I wouldn't say full bore, but at least to partial bore about 10% with a gradual increasing rollout. And you know, our job here has been over this time to basically continue to maintain sentiment and feel like users are being heard. Also scale up. There's a whole bunch of new technologies here that we didn't have much familiarity with. People convinced me that it was an okay idea to have Node in the stack, which me being a Python chauvinist, took a little bit of work. And you know, the whole purpose is to kind of, you know, keep track of the benefits, make sure things are predictable, make sure the users feel like they're hurt and listen and iterate continue down this path of improvement. And so this is. I forgot to update this slide. I originally gave this Talk closer to Q2. So as you can imagine, this has still been an ongoing process. One of my favorite rules of engineering is that for any sufficiently complicated project, the first 90% of the time on the project goes to the first 90% of the project. The other 10% of the project takes the other 90% of the time. We are deep into that right now, continuing to iterate. Responsiveness and accessibility are very important. Performance is very important. One does not simply overturn an entire battle hardened stack and assume everything is going to work. Getting it to a point though, where every team in the company that isn't dedicated to redesign can start to build product on it has been the real focus. Now we do want the redesign to be the stack, but we have to make sure that it has a good reason to have equal footing with our battle hardened 10 year old stack. And so with that in mind, 330 million users, about 150,000 hours of work so far going into this, 50 people on the team, four dedicated teams, all for one giant redesign, which of course, you know, Reddit, we dig it for the OGs in the room. And I just want to shout out to the team, this is our redesign team. This was all kicked off originally by the gentleman in the hat here, Niranjan. He actually built the first version of the redesign over his Christmas holiday because he was, we were kind of hemming and hawing about when to do it and he just built a version of Reddit and React in about two weeks just for fun, and we've since managed to build an entire team around that. Anand, our director on this team, we wooed from Microsoft. It was a harrowing process to convince his wife that he should leave his cushy job at Microsoft and come and work with a bunch of clowns like us. And I just want to say thanks. I will make the obligatory we're hiring plug and open up with time for questions. Excellent. Thank you very much.
More from Chris

Reddit CTO Chris Slowe: The Engineering Decisions That Built the Front Page of the Internet

Chris Slowe (CTO at Reddit) Fireside Chat at Startup World Cup Grand Finale 2023

How We Are Building External and Internal Communities at Reddit - Chris Slowe, CTO at Reddit

How Reddit CTO Chris Slowe Started His Career | How to Run a Tech Company ft. Reddit CTO






