The Stack Overflow Podcast

What our engineers learned building Stack Overflow

Episode Summary

Charles “Cobih” Obih and Radek Markiewicz of the Stack Overflow platform team join Ben and Ryan to talk about changes to the inbox and what it’s like to build Stack Overflow’s public platform.

Episode Notes

The inbox improvements were Radek’s graduation project. Not bad for a newbie. 

Not everyone likes change, and the inbox change was no exception. So we looked into fixing that.

Read about what our engineering team learned building and scaling Stack Overflow to support millions of users.

Connect with Radek on LinkedIn. 

Find Cobih on LinkedIn and Twitter.

Longtime Stacker Yaakov Ellis is also on LinkedIn.

Congrats to user HelloCW on receiving a Socratic Badge for asking a well-received question on 100 separate days and maintaining a positive question record.

Episode Transcription

[intro music plays]

Ben Popper All right, everybody. Today's episode is brought to you by ReleaseHub. Release automates production-like ephemeral environments in your AWS or GCP accounts that are flexible to your architecture, allowing developers to spin up, update, and spin down ephemeral environments at will. Get started for free at t.ly/k00y. 

BP Hello, everybody. Welcome back to the Stack Overflow Podcast, a place to talk all things software and technology. I am your host, Ben Popper, Director of Content here at Stack Overflow, certified worst coder in the world. I am joined as I often am by my colleague, Ryan Donovan, who heads up our blog and our newsletter. And today, Ryan, what are we going to be chatting about? Internal stuff, right? We're going to chat with some folks from the company. 

Ryan Donovan Yeah, we're going to be talking with a couple folks from our Platform Team and we're going to be talking about changes to the inbox and what it's like building our public platform.

BP Very cool, all right. This is what it's like at Stack Overflow. This is where all the genius and the magic happens. So without further ado, please welcome to the show, Radek and Cobih. Both of you, welcome to the show, and thanks for being here. 

Cobih Obih Thanks for having us. 

BP So Cobih, let me start with you because initially I had reached out to you. Tell folks who are listening a little bit about who you are, how you kind of got into the world of software and technology, and what it is you do now at Stack Overflow day to day. 

CO Thanks, Ben. Yeah, my name is Cobih. Born in Nigeria, grew up in Texas, but I've been living in Dublin, Ireland for the past six years. And I've done literally everything under the sun before I got into tech. I've been a waiter, worked in a hospital, a cable guy. My family wanted me to be a doctor, but luckily I found technology and I started my career at Samsung as a Process Engineer in Austin, Texas. Then I found Facebook where I was a software developer for about a year before moving to Dublin and joined as a project manager. While I was there I found product management and got into product. After that I moved on from Facebook and I joined a startup in Nairobi, Kenya. The pandemic happened in 2020 and I was one of the casualties. I lost my job, moved back to Dublin and I joined Google as a Product Support Manager. And while I was there I got recruited by Microsoft as a Senior PM. I spent about 18 months there and joined Stack. Now I'm Senior PM at Stack on the Community Products team working with Radek. We're trying to build features that add value to the community. We’ve worked on the Q&A workflow for the people asking questions, people answering the questions, the moderators, the curators. So I've been here for about four months and so far it's been fun. I hope that answers the question. 

BP Yeah, that's a whirlwind tour through the fan mag tech titans you took and it sounds like you had a lot of interesting stops along the way, so very cool. Radek, how about yourself? Give folks a quick flyover of how you got into this world, what you've done, and what you are doing today at Stack Overflow.

Radek Markiewicz Yeah, my story's quite more straightforward. I was into math and programming since I was tiny, and I picked up programming as soon as I could. Afterwards I've been working in different software companies in Poland. After that, I moved to Austria and now I'm working from Austria with Stack Overflow. Over the years I grew to specialize myself and to love those areas, like test driven development, behavior driven development, and demand driven design. I'm super happy to be able to follow those, especially in a place like Stack Overflow. So for me, when I heard that I can join Stack Overflow that was something really great because I was using this product since basically years, and to be able to work with those people and affect literally every programmer in the world, that's something huge. 

BP So why don't we talk a little bit about the sort of new feature that you pushed out. There was an announcement in all hands. That's what kind of caught my attention. I reached out to Cobih and he said, “Yeah, we'd love to talk about it, but you’ve got to have Radek on. He played a big part in this.” What was the feature that you pushed, and then we can sort of dive a little bit into, “Why did we decide to build this in the first place, and what did it take to really make it happen?”

RM Yeah, so what we focused on was to give the users more control over the inbox. So we had the feeling of, “Okay, the inbox is part of the critical communication with our users.” Basically if something happens on your post or someone wants to react to your stuff on Stack Overflow, then basically almost always you get the inbox notification. Yet whenever you open the inbox, everything is marked as read and you lose that information. That was a huge pain for users for long years. We are lucky to have Yaakov on our team who is an expert in the Stack community, and basically he pointed out that that's a big pain, especially for our most active users. And we used the opportunity that we as developers have the freedom to pursue some of such projects, community driven projects. So that was something that was driven bottom-up, mostly by Yaakov. I took a big part in the implementation, but really big thanks to Yaakov, to Brendon, to everyone on our team who really recognized the need and drove that project, business-wise.

BP For folks who don't know, Yaakov has been on the podcast before and I think maybe has blogged for us, but he is an OG Stacker. I think at this point he might be in the top 10 of people who've been working here, so he knows where all the bodies are buried and how to get around the monolith and is certainly the right person if you want to fix up something that's been painful for the community for a long time. Go ahead, Ryan. 

RD Yeah, I wanted to ask Cobih how you thought about actually changing this feature. Anything else that has notifications, if I have five of them and I click on it and it would erase everything, that would be a huge pain. 

CO Yeah. I just joined when this was going on. That was my first or second week there. And we have this thing at Stack that we call grad projects. So when you join we tell you to go work on something you want to fix. It's not usually supposed to be shipped to prod, but in this situation with the support of Yaakov and Brendon and the previous PM, this need has been there for 10+ years. If you go on Meta where our most active users are, they've been asking for such features for a while. And Yaakov pointed Radek in that direction and I saw the designs, everything looked great, and I'm like, “Why are we not shipping this? I know this is not supposed to leave the walls of Stack, but this is production ready. We should definitely push it through.” So all I had to do was just be a support and do some influence in the back end with the senior leadership team, but all credit goes to Yaakov, Radek, and Brendon because I was literally two weeks in at Stack when I launched this feature so for me it was just a quick win. As someone joining the team, you want to get some wins under your belt so to me that's really what it was, so I'm grateful to have that opportunity to just push it through across the finish line. 

BP This is what a true product manager does. They come in and say, “Oh, this product's already finished. Now I'm just going to take credit for it.” I like it.

CO Yeah. 

RD So Radek, was this your grad project?

RM Yes, that was my grad project. I basically spent a few weeks developing the grad project, like, “Is this idea viable at all?” And then we spent a little bit more time to have something halfway ready and we immediately went on and got the feedback from the community. So that's also something that I really, really liked, that basically immediately when we had something, it wasn't production but anything where we can get feedback already to involve the community. 

RD About that feedback from the community, I know they are free and generous with their feedback. How has it been getting the sort of hits on Meta from everything you do? 

CO We appreciate the community a lot. We’re basically a community organization, so getting all that feedback is very helpful for the work that we do internally. It helps us prioritize where the pains are and how to decide what comes next in our roadmap. And in this situation, the minute we launched it, the community went crazy. They're like, “Wow! Sounds like Stack is actually listening to us. Thank you, we've been asking for this forever.” So it was incredible to see the reception we got from the community. But again, Radek can add more to that.

RM Yeah, I just wanted to add my personal feelings about it because I'm really appreciative and I'm really happy about the feedback. We got a lot of not only thanks and help, but also really important input that helped us improve the final version. So that was really great that people were so eager and so active in helping us. Since then, I see it on all the projects we do. That was just the first experience and I’ve seen such a good engagement from the community.

BP So I know we have to be a little bit careful about what we say, but can y'all walk us a little bit through the ins and outs of how a feature like this gets built? How does it interact with the old Stack Overflow monolith or with some of the new stuff that we've been trying to move towards? And as you went along, was this something that from the beginning was clear how to do it, or were there twists and turns trying to figure out the right way to make this change and benefit the community?

CO Stack's been around for almost 15 years. There's nothing you build that's just simple. Sometimes it looks simple on the face of it, but the devil’s in the details. And this one for example, like I said, I was new so I'd never heard of Area 51. So someone's like, “Hey, this is not going to work on Area 51 and it's breaking Area 51.” I'm like, “What's that? Isn't that some myth people talk about online?” Apparently there's a page on Stack where it’s Area 51 and Yaakov takes me there and he's like, “God, this is what it looks like. It's like a time capsule.” So what I had to do as the product person was like, “All right, we have to change the content and say, ‘This does not apply to Area 51.’” And also Teams is a brand new section of Stack. I was like, “Well, we can't launch it on Teams, so okay, this does not apply to that.” So we need to check all these edge cases and all these sites and the Stack Exchange platform that this can actually work on and then we have to make sure there's no regressions. So there was a lot of testing even after the code was complete. It took maybe a month of testing internally trying to break it, trying to find these edge cases. And even after all of that, when you launch something people are like, “Well, I want the old feature back.” I'm like, “You’ve been asking about this for 10 years.” So there's never any easy way to launch anything, but we do our best after code completion to try our best to check that it works in all the Stack Exchange sites, or start one way and then scale it out over time. But that's from the product and user experience side of things. 

BP Things could have been worse. You actually could have broken the alien containment site run by the US government. That would've been really bad.

CO I think that's been broken recently. With all the balloons we've seen lately, who knows where that's coming from. 

BP It's true. If you check out the Stack Exchange about skeptics you'll find some interesting information there. Radek, from your side, what did this look like? What kind of work had to be done? Was there anything interesting you'd like to touch on, or stuff that made it possible to do, as Cobih said, without breaking things, and also hopefully easy to maintain or improve in the future?

RM Yeah, let's start this way. After I started this project, I realized there are reasons why this functionality was not touched in so many years. This is a really old code which is not up to our current standards, and that's also something that we investigated here. For now, we focused on really shipping the functionality to the customer. So for example, the things like migrating the code from JavaScript to TypeScript, modernizing it. That's something that we strive to do now at Stack Overflow to keep our UI modern or modernized, the older parts. But for now, that was really challenging to get around the old parts of the code, and also what was a big challenge is keeping it compatible between all the sites. Because basically, inbox is a global feature, it's displayed on Stack Overflow, Stack Exchange, chat, Area 51, and all those sites are slightly different. Even if they use the same stack, which is not always the case, they have their own quirks and we need to adjust and adapt to be able to ship it. Because it's great if we improve the inbox on Stack Overflow, but it won't work if we break it at the same time on Stack Exchange or on chat. So that was one of the big challenges. 

RD Yeah, we've done a couple posts sort of talking about our legacy code and modernizing it. We did a lot of static variables and really optimized for speed at the expense of some best practices. We did a blog post with Roberta about it. Can you talk about some of the challenging pieces that we're looking to modernize at some point? 

RM Yeah. One of the things is what you said, also inbox has a lot of static variables. And not only that, they have to be separately maintained in each of the products. So for example, there are static variables in Stack Overflow, but we also need to handle the same parameters on Stack Exchange or chat. And what’s even more is sometimes they're only available on Stack Overflow, which means that for example on Stack Exchange, we need to adjust to the fact that something is not available and just assume a default value. Another thing is a challenge with Stack. So there was a lot of work put in recent years into putting Stack’s library of UI components, which are available just out of the box to use in our products, but for example, they are not available on Stack Exchange or chat, which means that we need to introduce this new functionality on Stack Overflow but make it backwards compatible with Stack Exchange and chat. Those are the things that we’ll be looking over time at. But at the moment, those were the challenges that we just needed to go through. We made it compatible, but for example, it's not exactly the same functionality which we offer on chat or Stack Exchange or Stack Overflow at the moment. 

RD Yeah, I think some of that front end variable work you're talking about led to or came from that our April Fools’ filter from last year let us be very modular with the front end. 

BP Yes. That's always our plan, to start with an April Fools’ joke, but turn it into something that pays big dividends for product and engineering down the road. So what's the feedback been like from the community? Are there things that you had to sort of adapt quickly to, or things that you've heard from the community that you plan to put into sort of future iterations or evolutions of this?

CO Yeah, immediately after the launch we got a lot of feedback on Meta. Radek did a great job of getting the colleagues enough feedback, categorizing it, did a design thinking workshop on how we want to prioritize the fixes or the suggestions. And me as a PM, since we have to balance that with all the initiatives we have going on, we had to prioritize lower regressions and try to fix that right away. For example, some people wanted the old functionality back. They've been using it that way for so long that they're like, “No, we want it back. We're used to it being that way. We don't mind that.” So that was something that we had to go back and try to fix. And there was some slight changes and there was some improvements that the community suggested that we had to go look through how to fit it in within our roadmap. So we did get quite a lot of feedback qualitatively that we'll be using to prioritize new features there. Quantitatively, we saw a boost. We saw about 30% more inbox opens since when we launched the product, so to us, that was a sign of success. If we get anything like 5 or 10% improvements, that's really good, but we saw 30%. So it was well received by the community based on the quantitative and qualitative feedback that we received. 

RD Now that this is out the door, what are you excited to dig in to from here? 

CO We have a lot going on. Inbox, like I said, started as a grad project. We want to keep investing in that space but we have to balance it with all the big initiatives that we have going on like staging grounds which we’re about to launch our beta to tomorrow actually. And after that we'll be looking into launching the MVP, and then we're also doing discovery on what new stuff to launch. We just finished a design thinking workshop over the last couple of weeks so there's going to be some initiatives that come out of that that we're going to be focusing on. I'm trying to build the roadmap in a way where we can do multiple initiatives concurrently. Inbox improvements would just be one of those things. We're going to keep improving as we get feedback and integrating on it, but there are bigger things that would need to drive more value for more people. Inbox is used by a very small subset of our users, where our staging ground touches a lion’s share of our users which are the new first time askers asking questions. So we’ve still got to look at other opportunities of other personas on the platform that we need to listen to that have a lot of needs for us to fix. 

RM One thing that I think shouldn't be underestimated, it's often seen as part of staging ground, is threaded comments. So that's also something that we invested in, and we'll try it out in staging grounds first, but later on, if it works well, then we'll think about putting it on the main site. So the concept is quite simple. I know on Facebook or on Reddit, basically you will have an option to reply to a concrete comment. There will be also a style like that. So we have quite some initiatives, mostly attached at the moment to staging ground, but there is a lot of exciting stuff coming in. 

BP All right, y'all. Well, we are excited to see what comes next. And for folks who are listening, if there's some little thing that's been bothering you, you've been a Stack Overflow user for a while and you just need a fix, now you know who to pester. We'll get it done.

[music plays]

BP All right, everybody. It is that time of the show. I want to shout out someone who came on Stack Overflow and helped to spread a little knowledge and saved some information from the dustbin of history. Let's shout out a Socratic Badge: given to someone who asks a well received question on a hundred separate days and maintains a positive question record. Hello, CW. Thanks for asking so many great questions and contributing so much to the Stack Overflow community. I am Ben Popper. I'm the Director of Content here at Stack Overflow. You can always find me on Twitter @BenPopper. If you want to give us some questions or suggestions about what we should have on the show, shoot us an email, podcast@stackoverflow.com. And if you like what you hear, why don't you leave us a rating and a review. It really helps. 

RD I'm Ryan Donovan. I edit the blog and the newsletter here at Stack Overflow. Find the blog at stackoverflow.blog, our comments are open. And if you want to find me on Twitter if it's still working at this point, I'm @RThorDonovan.

CO My name is Cobih. You can find me on Twitter @Cobih, or you can find me on LinkedIn at Cobih Obih. Senior PM here at Stack Overflow 

RM I’m Radek Markiewicz. I'm a Senior Software Developer at Stack, been here for half a year. If you want to find me online, I guess either on Stack Overflow or Radosław Markiewicz on Linkedin. 

BP Very cool. And we'll include all those in the show notes for folks who are listening. All right, everybody. Thanks for tuning in and we will talk to you soon.

[outro music plays]