QR code


  • Moscow, Russia
  • comments

@yegor256 · Shift-M/48: Jeff Atwood about knowledge management in software teams

Jeff Atwood was our special guest.

Video is here.


[00:00:00]Yegor: Hello everybody. This is our next episode of Shift-M Podcast. And we have a special guest, Jeff Atwood, who I believe for most of you, I don’t need to present, but I will do anyway… Jeff, if you allow me, I will do the presentation by myself because I think I would love to do that. So, Jeff is an exceptional personality in software development world and in internet world. So first of all, Jeff started blogging, software blogging, blogging about computers a long time ago, about 16 years ago or something like that, where most of us didn’t know anything about blogging and blogging was something which was very rare activity. And Jeff became the top blogger in the world.

His blog, I believe right now still is one of the top or maybe number one blog about software development and computers. And then after that, about four years after in 2008, Jeff, I believe together with his partner, I believe turned upside down the world of software development. Because before that, before StackOverflow was founded, that’s what Jeff did.

For us programmers, it was extremely difficult to find information for programming when you were writing something. And I was programming at that time, when I was writing Java code, it was a mess for me where I could find the information. There was some forums and internet. There were some newsletters, there was something where you have to find information, ask questions, it was so difficult to get answers. And then StackOverflow, turn the world upside down. It was just the platform where everything was so easy. And I became one of the first users of the platform. And up to date, the platform is extremely popular in the world. So these are, I believe two achievements, which Jeff did. And there’s also achievement number three Discourse, which we’ll like to talk about today as well. The product which Jeff founded after he stepped out from StackExchange platform, I think 10 years ago or something. And that is also very popular because it’s an open source product, which has almost, if I’m not mistaken, almost 30,000 stars on GitHub, which means it’s exceptionally popular GitHub product. And at the same time, it’s profitable business wise. So I believe Jeff is making money out of that according to the information he gave on one of the interviews before. So that is Jeff. Jeff, am I right about you?

[00:02:27]Jeff: Yes, that’s an accurate summary.

[00:02:30]Yegor: So my first question is, well, actually this whole podcast, I would love to talk about knowledge sharing, knowledge exchange, and software development teams. So my first question is about StackOverflow. What do you think? I mean, Stack Overflow is extremely popular, but most people, if you go to real world companies like teams, which develop software, not open source teams, but proprietor developers and go around the office and ask them who of them have Stack Overflow accounts, I believe one out of five, maybe out of 10 will say that, yes, they have an account. They have some reputation there. But others, they will have nothing and they will give you excuses, why they don’t have an account there. So what’s your take on that? Do programmers need accounts there? What do you think about programmers who don’t have accounts there and they still believe that they’re good programmers?

[00:03:17]Jeff: Well, I think the design of Stack Overflow, it’s kind of, it takes a lot of inspiration from Wikipedia. If you go back to sort of our first design vision for Stack Overflow, it was this Venn diagram of four overlapping circles. And one of those was Wikipedia. One of those circles was Wikipedia. One was blogs, one was forums and Wikipedia was a big source of inspiration for us that you had this idea that you have this collaborative encyclopedia that everybody’s editing and shouldn’t work, but does, like, I think if you go back to the early days, Wikipedia was considered this radical, there’s no way this can work. The how can this be as good as encyclopedia Britannica, which has been around for hundreds of years, it’s just a bunch of people typing stuff in on the internet and varying levels of skill. And that was very inspiring to us. That that system was clearly working. Wikipedia was a good system and produced great results. And that was the inspiration. But at the same time, let me ask you how many people here have a Wikipedia account and actively edit Wikipedia, right? How many people do that?

It’s not a huge list. Like I have occasionally edited Wikipedia articles every now and then it’s pretty rare, but you don’t have the expectation that everybody has to be editing all the time for people to benefit. You can get a tremendous amount of benefit from just passively consuming the information that’s on Wikipedia. And that’s the same system we have at Stack Overflow. You shouldn’t have to create an account to get all the benefit. And so I would say, if you don’t have any Stack Overflow account, that’s actually fine. It’s for people who really wanna engage and really wanna learn more and step up their game and participate more and be more of an editor versus a consumer. Then that’s when you sign up for Stack Overflow. Or if you have a really gnarly question that you can’t get answered and you’ve searched and searched and tried a bunch of stuff and can’t get it to work. That’s another reason to create a Stack Overflow account.

So either for professional growth or you have a unique question that hasn’t been asked before, and as Stack Overflow gets to be bigger and bigger and older and older, it’s difficult to come up with new questions that nobody has asked before with the exception of like new technology. When we launched deck overflow, iPhone development was very, very new. Steve jobs when he launched the iPhone, has everybody famously knows, didn’t allow any apps on it. So there was no way to build apps for iPhone, but by the time Stack Overflow launched in 2008, iPhone development was starting to become a thing.

So there was a lot of new information about, oh, here’s how you develop on iOS, here’s questions, here’s answers. Then there’s always some new area of computing or some language that’s something coming that needs questions answered. Versus say Java, which is very established. But even then Java have might have a new version with new functionality, a new whole new namespaces that are introduced. So it’s sort of a mixture, but I would say you don’t need to have a Stack Overflow account to benefit. I think what is important though, is if you go to Stack Overflow, please upvote the good stuff, and downvote the stuff that’s not working. ‘Cause that’s how we collectively tell if things are working and you can do that either as a logged in user or as a not logged in user. As a not logged in user, you get in a different feedback queue, but we still look at that. In fact, one of the most interesting things to look at in Stack Overflow is questions that have a high number of logged in votes, but a very poor number of positive, not logged in votes. That indicates there’s something wrong with that question or answer, it needs to be reviewed. That’s usually what that means is like, the answer is out of date basically. So that signal is hugely important.

So I would advise you don’t need to create an account, but please use those buttons, those up and down vote buttons as you can, ‘cause that really does help. And that is how you give back. That’s the most basic level of giving back is just feedback. Is this working? Is this not working? ‘Cause we do look at that at least when I was there, I remember I haven’t been in there since 2012, but one of the key data points was upvotes and downvotes from login users and upvotes, and downvotes from non logged in users. So that’s another way to give back, even if you don’t create an account. So yeah, that’s my philosophy and that’s kind of how it all works.

[00:07:51]Yegor: That’s interesting ‘cause I didn’t know that you count that it’s actually possible to vote if you’re not logged in. So that’s new information for me. So thanks for that.

[00:07:58]Jeff: Yeah, you totally can. Well, there’s a lot of stuff that people don’t and I think Stack Overflow doesn’t do a great job of really advertising this. You can actually edit posts to improve them, even if you’re not logged in. Now it goes into a review queue because other users need to review that edit and so forth. It’s not going to immediately take place. It has to be put into queue and then vetted by two other established users. But if you have something useful to add, definitely press that edit button and edit to make it better. And don’t be hesitant about that. I think probably if it’s a typo or something simple that’s just wrong or some useful piece of information that just emerged, that’s new. Those are really significant to add. And that really helps everyone. And that’s how the system is designed to work. As we all contribute a little bit of work to make it all better, it’s like curating you want to leave it better than you found it. And you don’t have to, you can just go on the page, get what you need and leave, but you could also go on the page, say, Oh, this could be a little bit better. And then improve it and then leave. And then everybody wins.

That’s how the system is designed to work. And it works really, really well. I mean, the results kind of speak for themselves, but it is the downside of that, is it is a very strict system. like we only allow certain types of interactions. It’s meant to be like a school room. It’s not meant to be a place where you have these long extended discussions about, is this better than this? Or have you done it the wrong way? There can be more than one way to do it, but it’s not the place to have arguments about, this is the best way to do it. And none of the other ways are any good. It’s like, well, there’s four ways to do it. Five ways, six ways, right? There’s always more than one way to do it. And it’s up to the reader to decide which method is the right method for me? It’s not the readers, the writers place to say, no, this is the best method. All the methods, other methods are terrible should never use them. ‘Cause it’s very situational, depending on what you’re doing, method A might be the best solution or method C might be the best solution or method D with some downsides might be an even better solution. So there’s always more than one way to do it. That’s how computing is. And then another thing we ran into is sometimes you’d have questions where there would be a hundred ways to do it. And we were like, “Hmm, that’s interesting.”

So there’s a computing problem where there’s a hundred different ways to solve the problem. That’s more of a discussion than a real technical solution. Any question where you start to see hundreds of answers of like, oh, these are all valid. It’s very opinion based. It’s not really based on engineering data. It’s all just, this is my opinion. Here it is, take it or leave it. So we kind of have to keep an eye on those questions that generate dozens to hundreds of answers. Those are usually not a good fit for Stack Overflow because we don’t really want opinion-based discussions. We want objective engineering solutions of which there can be five, six, seven, maybe even 10, right? But once you get to the starting into dozens to hundreds, that’s a big warning sign on Stack Overflow that things are going wrong. It’s a discussion question and it’s not the right fit. So, that’s something we learned later. We did not know that going in, but we noticed that pathology on some of the questions, they were just discussions. They weren’t really practical engineering solutions. They were just, here’s a hundred people offering a hundred different opinions and that’s not really what Stack Overflow is for. And unfortunately, a lot of people really love those discussions, (Jeff laughs) which is fine, but that’s not what Stack Overflow is for. So we kind of have to shut those down, which people hate, like people really want to have their little discussions about is this method better than this method? Here’s my opinion. but it’s just not the place for it. Stack Overflow is not the place for that kind of discussion. So anyway, these are all things we learned as we went.

[00:12:03]Yegor: And I know there is a place inside Stack Exchange where there discussions are actually possible. I’m not sure that works right now, but a few years ago, I remember I actually participated in some discussions like that. I don’t remember the name of that place.

[00:12:16]Jeff: Yeah, there were software engineering dot stack exchange. So that–

[00:12:20]Yegor: I mean, when you start talking to the comments, like you have post many, many comments under the question and the system suggests you to go into some other place where you can have like a chat and then you start talking there.

[00:12:30]Jeff: That’s right. Because it’s more like chat. It’s like, well, this is a chat. ‘Cause the idea with the, so you have two levels of responses, you have questions and answers, that’s the main one. And then for the answers and the questions you can attach little post-it notes to the questions like, “Oh, I don’t think your question is specific enough.” And the ideal goal for these comments on the questions and the comments on the answers is for them to be deleted. And then the post to be edited to include that information. It’s like a clarification. And the perfect case is the post gets clarified. The question gets clarified, the question gets better. And then the comment gets removed, right? Those are meant to be temporary little post-it notes that you put to improve the question and to improve the answer ‘cause nobody really wants to read 50 comments to figure out some essential thing that was forgotten in the question. You want somebody to go in, press the edit button, which you can do, even not logged in. You can do this right now today. Trust me, try it, go to Stack Overflow, find a question that needs improvement, press edit and just edit it. Trust me, you can do this. It works. And yeah, ‘cause again, who wants to read 50 comments? You want that stuff to be edited back into the question or answer so that it’s simpler, clearer. And it just gets to the point faster. It’s very efficient, right? But it does take some discipline around, I don’t want to read 50 back and forth comments. I wanna just read the post, which has the edits and is the best version of the question that it can be.

So these are all things that Stack Overflow needs to be teaching people. And does over time, it’s getting better, but early on, there were just a bunch of enlightened developers who really got it. They understood, oh, I get it. This is how it works. And these are like your elite developers that understand. But over time as Stack Overflow grew, you brought in a bunch of people that weren’t maybe expert developers and didn’t understand the rules. And it’s up to us and on Stack Overflow to guide those people and explain to them how the system works. And like, you get a lot of negative knee jerk reaction, like, “Oh, this place is terrible.” I posted a comment and I was told it was wrong. I shouldn’t have done that. Like, “And how dare you tell me what to do.” And I think that’s a failure of communication about, here’s why we’re so strict. We’re strict ‘cause it gets such fantastic results. We’re not strict because we hate you. We’re not strict because we wanna be rude to you and nobody should ever be rude to anyone on Stack Overflow. That’s just a rule. We’re strict because that’s how you get the very, very best information. And that’s what you want is just to land on the page, get a kick ass answer, that’s been edited a bunch of times. It’s got all the feedback, it’s really up-to-date and it’s awesome. And use all the information you need super fast. That’s the goal, that’s what we’re shooting for. And that’s what the system is designed to produce, but it takes some discipline to get there. And if we’re not explaining it, that’s on Stack Overflow. And I think they have gotten better about explaining it, teaching people like why it is strict, the way it is so that everybody gets these really amazing results really fast. And that’s a net benefit to humanity really, if you do it right. But it does take that strictness. So yeah.

[00:15:41]Yegor: Yeah, I know how it works. I mean, I was once a moderator of one of those tech exchange sites. So I remembered that strictness, which I had to impose myself. But look, I was a big advocate and I’m still a big advocate of Stack Overflow and our main software conferences. I was for the last, I think maybe five, four years. I was speaking always about Stack Overflow as a place where programmers in my opinion have to be actively. And I was saying that if you are serious about software development, if you consider yourself a senior programmer, somebody who is passionate about software development, that you have to have an account there and you have to have reputation there, some points there because you have to answer questions, you have to contribute to the society. Otherwise, if you don’t do that, then blah, blah, blah, probably you need to improve yourself. Something like that. So now I feel like you’re saying that some people are just contributors and some people are just readers and that’s the way it is and that’s okay. So was I really wrong about my speech that my passion?

[00:16:53]Jeff: No, I think it depends at what level you wanna participate. If you just want to get things done and learn a little bit, passively, if you wanna learn a lot and really get engaged, then you take that next step. It’s just a question of how engaged you want to be. ‘Cause I think you can learn a lot from Stack Overflow just by reading, but I think you can do even better. And I think as a reader, I would say your minimum level of interaction should be please, please upvote and downvote to let us know which answers are working, which answers aren’t working. And also if something’s not working or if there’s a correction, please leave a little note, like a comment about that. Now it does take a little bit of reputation to leave a comment, which some people object to, like we don’t let you leave comments as a brand new user. You takes a little bit of reputation to have the privilege to leave that comment. And you should try to work up to that level of reputation a little bit. So you can just participate and leave comments. I will say that, but upvoting, downvoting again, there’s two pools. There’s an upvote downvote pool for logged in users. And there’s an upvote downvote pool for not logged in users. And it is really interesting. And we look at that data all the time. It’s really helpful to see that a bunch of new users came in and said, this answer is bad. That basically means it’s out of date and needs editing. So it’s really helpful to have that level of information.

So please, I urge you, you don’t have to create an account, but please use those upvote, downvote buttons, even as a not logged in user. And it gets better for everyone. we’re all standing on the shoulders of giants. And this is the minimum fun unit of work that lets all that happen. It’s just pleased upvote downvote at that. That’s my main recommendation. And then if you’re really into it, yeah, please create an account, start asking questions, start editing. I mean, get as involved or not as involved as you want to be. I think it works at all levels. That’s another strength of the system. It’s not designed for the perfect developer who will create an account and go curate a bunch of stuff and do all this extra work. ‘Cause people are busy. Some people have time, some people don’t have time and you get a lot of like underemployed programmers who are on Stack Overflow ‘cause they’re having fun. Teaching, teaching is fun and teaching is one of the best ways to learn. If you want to get really good at your job, then you teach because teaching is how you demonstrate mastery. And that’s one of the lessons of Stack Overflow. Once you start teaching people, that’s when you really know your stuff and we all know different things, there’s plenty of things I’m expert on, that you may not be know anything about or vice versa. There’s just, I’m sure there’s a ton of things you are expert on that I know absolutely nothing about. So having us work together, we compliment each other. I know some things, some things and together, we all know all the things if we work together. So that was always the guiding vision behind Stack Overflow.

[00:19:54]Yegor: Let’s say you have two programmers who would like to join your team and they send you the resumes. And one of them is just a programmer, very good. You have all the details, let’s say Ruby developer and other one is also Ruby developer. But an extra information on the resume says that he’s got a hundred thousand reputation on Stack Overflow. Will it give some privilege to the second candidate in your eyes, or you will consider them as equal candidates for you?

[00:20:24]Jeff: I think it’s like any other extracurricular activity. So you’re looking at somebody applying for college, you look at their extracurricular activities, right? Well, how involved were they with student council? How many were they on the robotics team? Like did they go above and beyond? Sometimes you want people that go above and beyond, that are willing to put in a little bit of extra work than the average person, I think fair. I don’t think that if you don’t have a Stack Overflow account, you should be immediately discarded as an unsuitable candidate, I think that’s unfair. I think there’s a variety of ways to be a great developer, but you want some evidence that you you’re looking at someone who’s willing to put in extra work to better themselves to get better into learn and Stack Overflow is a great way to do that because the best way to learn is to teach. And I’m not talking about starting a class, I’m saying these little fun size units of work. Oh, I know about this rejects function. Let me show you exactly how this rejects operator works. Here you go, here’s how it works. Here’s how, where you’re getting the results you get. And there you go. It’s just a little tiny moment of teaching and it means the person was willing to do it. It means the person has the ability to communicate well with others and write a clear answer that makes sense. And also to, well, they were willing to do that. They took the time to help other people and write it up because writing is how we learn, if you have a developer, who’s completely quiet, never writes anything down. How is anyone gonna learn from that developer? You need those writing skills. You need those communication skills. So it’s a net great way to demonstrate, ‘Hey, I have writing and communication skills, “just check out my Stack Overflow answers. Look where I explained” this in a very clear way to this other person. And that they were willing to explain it in a friendly way and not yell at the other person for, “Oh, how can you not know this? Everybody knows this.” Or, “Oh, great. Let me teach you. This is really cool. Let me show you how this works.

[00:22:32]Yegor: Well, that’s exactly my reason for this in favor of this pro Stack Overflow politics, I was saying that more and more people right now, they work in remote teams and more and more people work, not in the office where you can talk to your friends and explain them how things work, but where you sit in a home and I sit at home and if you have, for example, you’re the programmer. And I’m trying to decide whether you will be suitable for my team. Then if you have a good experience on Stack Overflow, it tells me that you have enough communication skills to explain things remotely, not when we know each other, when we’re buddies and you can easily communicate with me. But when you have to explain to unknown people, to people who know nothing about you, who are not anyhow prepared for your style of communication, for example. So in Stack Overflow, you have to know how to explain properly to unknown people. And if you have this skill, just like you said, you have communication skills. So for me, if you have a hundred thousand, for example, a reputation of Stack Overflow is just an immediate indicator to me that you have enough communication skills for any remote work, does make sense?

[00:23:46]Jeff: Yes, it does. I think there’s a variety of ways to do that. But Stack Overflow is one of them. And I think GitHub is another one. And these are all positive things, but there’s a lot of different ways to be a good developer. I wouldn’t say unless you have a Stack Overflow account, we can’t hire you that’s way too strict. But as a broader consensus of, “Oh, here’s a bunch of things I’ve done. Sure, I mean, I think it totally makes sense, extracurriculars, just like in college.

[00:24:15]Yegor: And how do you, okay. Let’s now move out to software teams. Let’s say you have a team which, where people sit together. Some of them in the office, some of them remotely, and what I see in software teams, I see that people tend to discuss things in an informal way over chats, or sometimes they just talk to each other in the office face to face, I mean, technical things. And they’re not really into tickets or formal issues, Stack Overflow, style, questions and answers. So they communicate informally, which in my opinion, sort of troubles the project because information gets lost and what we discussed together, one-on-one we lose tomorrow and other people don’t know about that, but what can you do? First question, do you think it’s a problem? So we need people to be more into these technical, into this text and digital discussions. And the second question is how can we encourage them to be more into digital style of discussions instead of informal communications?

[00:25:15]Jeff: I’m sorry, repeat the question. I apologize.

[00:25:17]Yegor: The first question was, do you think it’s a problem that people usually don’t like to use questions and answers places for asking questions like Stack Overflow in a proprietor team, let’s say it’s a team which works locally. I mean, they sit together in the office, a few people and the inside this team, they don’t really discuss over tickets or issues or question and answer platforms. So do you think it’s a problem that is happening in these informal communications?

[00:25:46]Jeff: I think people do need to be willing to write things down. I mean, you have some people that are just like, Ah, it’s too much work” to write things down,” And again, fun size units of work. I’m not saying write a giant blog post, just write two paragraphs explaining what happened and why this went down. That’s useful, and that’s what we need. And you want people that are willing to write a little bit and consider themselves writers and communicators ‘cause without communication, how does anyone know what you’re doing? And you got to cultivate those communication skills somehow. And I think those little fun size units of work on stack overflow are a great way to exercise your communication skills in little ways that are attainable. You can take 10 to 15, 20 minutes, maybe half an hour, write it down, So yeah, if they aren’t willing to do that, that’s definitely a bad sign, especially on remote teams. Now, if you work in an office, maybe you can get away with that. But if you’re working remotely, no, it’s all written communication. It’s the only way you know things are getting done.

[00:00:00]Yegor: And how do you think it’s possible to solve those problems? If, for example, I am a manager of such a team and I have people who don’t like yourself, who don’t like to write anything down. They just like to talk. So how can I improve that, being a manager?

[00:28:19]Jeff: Well, one thing we do at Discourse as well, we use Discourse and in Discourse, there’s a topic called “My Weekly Activities for 2021”. And every week you write down and you got to take notes during the week. So it’s not painful ‘cause one thing we have to tell people is, look, if you wait until Friday at 4:00 p.m. to think about what you’re gonna write down what you did for the week, you are screwed. You need to, during the week, take little notes about what you did. Not like long, just like short, never whatever format makes sense to you, but make notes. So then when it comes time to write your Friday, here’s what I did during the week. So everybody knows you have a list of notes. Oh, I did this, I did this, I did this. And you just write it up, it’s easy. Whereas if you have a blank slate, you’re sitting there Friday thinking, “Oh God, what did I do Monday? What did I do Tuesday?””” What I do? I don’t even remember what I did. You’re going to be in trouble. So you need the discipline of taking a little bit of notes as you go during the week just to remind yourself, ‘Oh, yeah, that’s right, I did work on that.” And, “Oh yeah, “I worked with that customer for a little bit.” Just take some notes. That’s important. And then when it comes time to write your Friday summary, so everyone can tell, “Oh, this is what Joe works on. And this is what Joe struggling with.””” And this is what I anticipate, is anything blocking you. that’s an important question. And what do you feel good about, what don’t you feel good about? That’s a requirement of Discourse. every week we have a topic called “My 2021 Weekly Updates”. It’s just once a week, it’s not like we’re asking you to tell us, tell us every day what you did. It’s just give us the highlights. The good things, the bad things, and the basic summary. I don’t need to know every tiny thing that you did. I don’t wanna know that, that’s pointless. I just wanna know the highlights, the little lights, and then what you felt good about, what you felt bad about. And that’s a discipline that you need to have, so you can use Discourse for that works great. Obviously I’m very biased because that’s our tool, but it’s an essential tool. We had this weekly summary topic for everybody and they just posted it once a week.

[00:30:22]Yegor: So basically there are like weekly reports. Well, we don’t call them that way, but you call them weekly highlights. -

[00:30:28]Jeff: Yeah, yeah, basically the highlights. I don’t need to know every tiny detail you did, but just, yeah, I just went over what you did. What went well, what didn’t go well, what’s you’re planning to do for next week. And just it’s keep it short, simple. It doesn’t have to be complicated. We’re not looking for a 3000 word essay or anything, just simple, but that kind of discipline is definitely needed, especially on remote teams, ‘cause you need people that can kind of figure out what they should be working on next kind of by themselves. And part of being on a good remote team is you have agency. You get to decide, I would prefer to work on these three things, because I think those three things would have the most beneficial impact to the company. You get to choose, you have agency, you don’t have a manager sitting there saying, “You will do this, you will do this, you will do this.””” It’s more like here’s a menu of things that are kind of possibilities. What do you think we should work on? ‘Cause I don’t hire people to be mindless robots that just do what I tell them to do. I hire them because they’re talented and they can tell what we should be doing even if it’s not on the list. Sometimes they’ll see things like, wow, we’re really not doing X and we really should be. And I’m like, “Oh my God, that’s a great idea.” I don’t want anyone to feel like they’re being micromanaged. It’s more like you’re talented. That’s why we hired you. And you have agency to decide, these are the things that we should be working on that are important and would really help us. And these are our pain points that we need to address. You tell us, you’re the expert. That’s why we hired you.

[00:32:05]Yegor: So from the explanation you are giving, I take that this highlights, these weekly highlights are more even beneficial for employees than for the managers.

[00:32:14]Jeff: Yeah. Well, yeah. ‘Cause how do you know what Sarah’s working on? How do you know what Joe was working on? how do you know what Judy is working on? You don’t know unless they kind of give you a little summary of what’s going on and that can be helpful and you might see something in Judy’s up there. It’s like, “Oh wow, that’s really interesting. “I really liked that. I wanna help you with that.””” Or that helps me with another project that gives me an idea of something I could be working on. Without that written communication, you just don’t get that. And it’s so essential.

[00:32:47]Yegor: And your platform is open source Discourse.

[00:32:50]Jeff: Yeah. Totally open-source I mean, there’s some enterprisey secret sauce for stuff that you wouldn’t care about like eldap DAP and just other big company nonsense that you have to deal with. But the core of the product is absolutely unfettered open source. So yeah, it’s available to everyone and that’s one of the big intents is to build this a great remote work tool, not just forum software, but tool for getting things done because you can assign work to people, you can assign a topic to someone. You can track all your assignments. You can set of reminders that fire off at certain times, very, very easily. It’s really the really lightweight, what I call the Trello version of something like JIRA. It’s like a tool for getting things done, but very lightweight and very open-ended and doesn’t force you to any particular structure. It’s not this JIRA ticket monster. It’s more like, “Hey, here’s the story of what I’m working on. Here’s the story of what” our rails is working on.” And storytelling is the key basis of how things get done. It’s like, not just what you’re doing, but why, why are you doing that? What’s the purpose of this? Explain it to me, sell me on it. Why is this important? I wanna understand. And that’s what matters, ‘cause if you can explain why you’re working on something, then what’s the point? Why are you working on that? Is it really moving the needle? If you can’t explain why, you’re working on it. So it really matters. And it’s gotta be important to you too, not just to us. I want you to work on stuff that you think is important, not just me.

[00:34:24]Yegor: And you made the platform open source from the first day?

[00:34:29]Jeff: Yes. That was always the goal because Stack Overflow was very close source, but that makes sense for Stack Overflow because that overflow is like, it’s really a scalpel. It’s a very, very sharp knife. It’s very, very strict. It’s designed for experts and it has great results in the hands of a surgeon. But if you hand like the average person off the screed of scalpel and say start cutting stuff, they’re gonna hurt themselves and create some damage. It’s a very specialized expert level tool. Whereas Discourse is more like a table knife. You could use it to open a box. You could use it to eat dinner. You can use it to all these different uses. You can even screw in a screw with it if you really needed to. It’s a much more general purpose tool. Whereas Stack Overflow is this is scalpel, which is kind of dangerous, great in the hands of someone very experienced, but dangerous in the hands of someone who doesn’t have training who doesn’t really know what they’re doing. So it’s a much safer set of tools and a much more open-ended set of tools that fits a lot of different scenarios. Whereas overflow is really for experts. It’s for systems where there’s a body of knowledge that is more or less right or wrong. Like again, there can be five different ways to do it, but there’s not a hundred ways to do it. There’s like five or six that makes sense. so it’s kinda more of an expert level tool.

[00:35:58]Yegor: I’m sure it was not an easy decision when you made it about Discourse because it was long time ago. Now many companies do open source and they decide, many startups they decide right from the start that everything will be open source and we will make money on services somehow. But you started Discourse long time ago. So I think at that time that was a decision, which I would call not so popular as it is now. Am I right?

[00:36:21]Jeff: Yes, open-source has definitely become, we started around 2012, 2013 and open-source was more radical of a thing to have in an organization. And it’s certainly become way more common to have open-source tools in organizations. The only variable is whether it’s hosted internally for security reasons, ‘cause a lot of companies kind of freak out about external hosting depending on how the secrecy level of what they’re working on versus being able to host it internally on their own servers. We don’t do internal hosting. It’s just too complicated, but we do a ton of external hosting and to the extent that we can, we definitely enforce privacy. But as I said, it depends on the company. Some, they just want extreme secrecy, like Apple, for example, once extreme secrecy. So everything has to be internal.

[00:37:16]Yegor: And when people come to you, let’s say working as a program to work as a programmers, as programmers, then some of them may have experience in open source. Some of them may have no experience in open source. For you, does it matter this experience or you just look at their skills and their expertise?

[00:37:35]Jeff: I think having background in open sources is rather important. It’s kind of a different mindset. I think you can learn it, but it’s definitely something we look for versus being in a closed source code base because you gotta realize like a lot of people are going to be looking at your code, not just your team, but people on the outside may look at your code and say, Oh, this is really weird code. Like you’re gonna get criticism from people outside the company about why did you build it this crazy way? Whereas internal code is kind of shielded from that kind of criticism that kind of eyeballs, but it also helps with security. We have a “Hacker One” program, which is great and people can come in and look at our source code, look for vulnerabilities and help us address those vulnerabilities. And that program has been a huge success. It’s definitely identified gosh, dozens of things that could have been real problems for us and they get paid for it as well. These are exploit bounty programs. I was initially very down on programs like this thinking, Oh, this is it’s all about the money, but really it’s just nice to have a lot of eyes on your code and helping you identify potential security problems before they become news reports of this massive exploitation. And so it’s quite helpful to have staff–

[00:30:01]Yegor: How much did you pay the maximum amount?

[00:39:04]Jeff: Oh, well, I don’t know. I’d have to look. I don’t want to say like a thousand dollars right now. I’d have to look. If you go to hacker one and you search for Discourse, we’re in there with all the rules of the program and the levels of the exploit levels from high medium to low. But I will tell you the one thing that helped immensely was locking down external JavaScript. I’m blanking on the term for this, but there’s a way to lock down all the JavaScript so that you never do inline JavaScript. You only do JavaScript files. So injection stops working. That is huge. It’s difficult to get to for some projects, but it was well worth it for us ‘cause it reduced our exploit load by like half, but just really tightly controlling the way JavaScript can run in your app is significant. I need to write a blog post about this ‘cause it was one of the main outcomes of our bug bounty program was to lock down the way JavaScript is delivered in the app. So you don’t have Eval for example is not allowed. Yeah. So we’ve made tons of progress and have gotten much more resilient as a result of our hacker one bounty program, which requires everything to be open source. Everybody can look at the code.

[00:40:22]Yegor: And open source means that anyone can just take your Discourse source code and just make a copy of fork and then just change the name and use it for their own own purpose. So aren’t you afraid of that?

[00:40:36]Jeff: That’s more of a sales tool because really when you go into a large org, you can say, look here, you’re paying us this amount a month for hosting. But if at any point you don’t like our hosting. You can say, “You know what? “You guys aren’t doing this, right. We’re just going to host it internally” and you don’t need to pay us. So we need to be doing a really good job on hosting. Otherwise you can switch at any time and we can’t steal the code from you. We can’t get into a situation like Oracle could, for example, where you’re using Oracle databases and you decide, you know what? I don’t really like these Oracle licensing fees. These are really, really high. And then I don’t wanna pay this. Well, you’re kind of screwed because you don’t really have a choice. All your systems are tied to Oracle databases and unless you rewrite them. So they aren’t. So you pretty much pay whatever Oracle tells you to pay, because what are your options? What are you gonna do, quit? What are you gonna do to stop using Oracle? I mean, how? So with us, you can decide, you know what, the Discourse team isn’t doing a great job supporting their software.

So we’ll just run the open-source version and hosted ourselves. So it keeps you on your toes. It’s also an insurance policy for the company. It’s like, we can never take this away from you. If you build significant parts of your business on the Discourse code base, it will always belong to you because you can at any point say, I’m gonna fork this and now it’s mine and that’s completely fair, right? We need to demonstrate value such that our customers don’t feel the need to fork Discourse and come off our hosting, right? Because we’re giving them a good experience. We’re friendly to work with. We update the software regularly. We stay on top of exploits. We stay on top of customer feedback and we’re evolving the product very rapidly in response to what our customers are asking us for. And if you did that yourself, you’d have to allocate an engineering team, right? You need an engineering team, familiar with Discourse that can actually build new features, handle security, all that stuff. It’s like, is that worth it? Because it’s gonna be quite a lot of money for you to have three or four engineers on staff that know Discourse really well to the point that they can troubleshoot it, deploy it, build security patches for it, all that stuff. So we have to demonstrate value all the time. And the companies that buy from us get a great insurance policy. Like if at any point, if we don’t like it, we can just run it ourselves. That’s an option. Nobody can take it away from us. That’s the contractual guarantee that open-source gives you. You can always have it. No one can take it away from you.

[00:43:16]Yegor: But I meant something in an opposite direction. Let’s say I take your Discourse code. And I make another company, which I call Discourse too, where the source code is yours, but I just rename it, I just changed the logo. And then I start selling this platform just without any investment because you invested 10 years of work into it, but I will have just from already.

[00:43:37]Jeff: Well, we’re moving at a pretty fast velocity in terms of product velocity. So it would take a while. You’d have to really keep up with a lot of the changes that we’re making and fold them in constantly and stay on top of all the changes. And part of that is just velocity. Yeah, if we didn’t make any changes to Discourse for two years, we just sat idle and did literally nothing. Like there are no improvements, no bug fixes, nothing for two years. Then I think people would start doing that. They would say, okay, look, you’re not making this any better. It’s just stagnating. So we have to step in and fork it and make it better. And if you’re moving at a nice high clip of velocity, which I’m a big believer in, I’m a big believer in you’re either growing or you’re dying. Those were the two choices and you want to constantly be growing and evolving your product in very like fast ways. And if you’re not, that’s when you’re at risk of someone saying, Oh, I have Discourse two, and it’s a fork of Discourse, but it’s gonna start missing all these other features that we’re building unless you pull them over really rapidly and integrate them yourself. So you gotta be moving with a nice fast cadence and velocity. And I’m okay with that because to me again, you’re either growing or you’re dying and I really enjoy moving fast, changing the product, evolving it really rapidly is something that I just enjoy. I think that’s the nature of software is that it’s malleable and you can change it. And not doing that is kind of defeating the purpose. So we have been very good at evolving Discourse and moving it forward very rapidly over a period of months, even there’s tons of stuff that we do in three months, features, bug fixes, security stuff.

[00:45:38]Yegor: It sounds like a very brave attitude, which is definitely well, it is very respectful, but I think many companies will just say, “We’re scared about that. We don’t want anyone to compete with us” even if we stay quiet for two years, just like you explained. So most companies just try to keep their code proprietary in order to protect themselves against this kind of a threat when they stay quiet for some time. And then somebody, some competitor just takes the code and run faster. So you not afraid of that, but what do you think the world will move towards this direction? Many more companies will follow your strategy or we’re gonna stay with the proprietary products for the next, I don’t know, 50 years? [00:46:25]Jeff: I think the proof is kind of in the pudding. I mean, if you look at the evolution of Discourse, how rapidly we introduced new features, I think you can find other projects where they essentially abandoned the open-source side, but usually that’s in preparation for going close source. Anytime you see that, it’s almost certainly in the ones that I’ve seen, they’re transitioning away from open source. That’s why the open part is stagnating ‘cause they no longer believe in that model, but we don’t feel that way. We feel like that model will continue to be a strength. It’s the way we work. We were gonna be going fast for the foreseeable future. There’s so many things we wanna get to. We’re like nine years in and just still building major, major pieces of what I view as the product, not just form software, but as a way for teams to get things done on the internet. It’s one of the fundamental building blocks of just groups of people on the internet, getting things done. It’s essentially, we’re big picture. We’re an alternative to Facebook and Facebook is a massive product, right?

So there’s no shortage things to compete with things, to build things to make fun and interesting to use. And just adopting the latest UI conventions, keeping up the data on security. For example, like we have comprehensive two factor off support and we have for a while. And just for us to keep parody with the big companies it’s a lot of work, but we do it. And to have an alternative to Facebook that is as good as Facebook is no trivial thing ‘cause Facebook has how many tens of thousands of employees. But granted they’re doing a lot of other stuff that we don’t do. Like, VR, which I don’t even believe in anymore, but yeah, so it keeps you on your toes. And then there’s a lot of companies that really appreciate open-source, they understand the risk of giving all their stuff over to Facebook means they don’t really own it anymore. Whereas if you do stuff with Discourse, it still belongs to you. You haven’t handed over the keys of the kingdom to Mark Zuckerberg, and there’s a lot of value in that. Like you actually own it. It’s your place, your community, your site, your rules, and that makes for a better, more diverse internet and a more interesting internet, I think. So there’s a lot of people, a lot of customers that really get this.

[00:49:00]Yegor: Yeah. Aren’t you afraid of showing your source code to the whole world and people may sometimes start blaming you for some mistakes or bad code, but style? When it’s a pet project of one developer and then get hub, then it’s okay. That person actually is ready to take this criticism. But when it’s a company, a group of people, then some people may publicly say, “Hey, look, what Jeff’s team is doing. Look how bad their code” is, blah, blah, blah.” So aren’t you scared of that?

[00:49:30]Jeff: No, really not at all. In fact, I think having people look at your code just makes it better because you realize it’s kind of like you’re going to a party every night, you’re going out, so you gotta look your best, right? You’re not just sitting in the house alone, you’re going outside. People are gonna look at you. They’re gonna judge you. They’re gonna see you. You need to look decent, right? You gotta put some clothes on. You gotta maybe look fancy. Maybe you’re going to a party. And having people evaluate you and judge you, keeps you on your toes, as far as are we doing best practices? Are we following security best practices? Are we following user interface best practices? Are we building something that’s objective really beautiful to look at, or at least skinnable and themable in a way that makes sense to people?

There’s a lot of responsibility here to, to the public. And I think the public sees that and says, Hey, you’re actually listening to us. You’re actually building stuff that we give you feedback and you follow up on it. That’s amazing. If I have an idea for a feature for Twitter, they don’t give a shit really. They’re not going to build it. But if you’re a customer at Discourse and you have a strong case to make for a feature that kind of jives with what the goal of Discourse is, then we’re like, “Yeah, that sounds amazing. Let’s build that together. Especially if you’re on an enterprise hosting plan, you can underwrite the development of this, take the product in a direction that we both wanna take it in together. We work together as a team, it’s not just pray that Facebook doesn’t do X or pray that Facebook ads, this feature it’s like, know your customer, you have input into the way things are built and we build it collaboratively together to make it better. And on top of that, it goes back out to everybody else. Everybody else benefits from your work and you can feel good about, “Hey, we introduced a feature that helps all these people, not just us, not just our” company, but everyone.” And that’s a good feeling, And I think we tend to attract enlightened customers that get that and see that. It’s like, this is about something for the greater public good. This is not about selfishly me getting mine. This is about let’s solve a problem for me and also solve a problem for much other people like nonprofits and small groups that couldn’t otherwise have this. And that’s great, that feels good. That’s how we build a better society. That’s how we build a better world for everyone.

[00:52:02]Yegor: Well, that’s a very brave and very great strategy. Totally admired. I have one question, very personal and very technical, which bothering me for the last, I don’t know eight years while I’m using Stack Overflow, maybe longer, right from the first day, the platform was extremely fast. It was extremely quickly responsive website and it was bothering me right from the first day. How did you make it that fast? And still, I believe it’s one of the fastest websites in the planet. Look at the Facebook, look at Twitter. They are 10 times slower, even though they have 10 times more, maybe a hundred times more money for their servers for everything. So my question is, how did you do it?

[00:52:46]Jeff: Well, partially it was an emphasis on speed from the day one, we were like, okay, it needs to be fast ‘cause you need to quickly determine is this the right answer or not? Like speed is a feature. And I have a blog entry about this. You can look it up speed as a feature. And we also were using a.NET, which is a compiled language. It’s actually very, very fast. There are of course ways to make it slow, if you’re a terrible programmer, you can make machine language slow. If you really it’s humans have the uncanny ability to make code run really slow, no matter what they use. But if you use .NET, right, it’s really, really fast. I mean, it’s compiled and see that with Ruby Gosh, like if 50 milliseconds is like sort of a typical Ruby time, but in .NET, it’s like five. You’re starting off with like 10 times advantage on speed.

So unless you throw that away, you start off with a huge advantage with .NET ‘cause it is compiled. And there’s been efforts to like do compile versions of PHP. I think Hack, that language from Facebook and sort of retrofitting this stuff on to other languages that are interpreted languages like Python and Ruby, and they have gotten better, but .NET is really fast. And just also to have a culture of speed, like there was a tool and we added a tool like this for Ruby, which shows you on every page load the time, like here’s the total time and you can click on it and it’s called mini profiler. You can look it up mini, profiler, it’s available for Ruby, it’s available for .NET. And it shows you on every page load, where are you spending time? So you can kind of drill in as you’re developing like, oh gosh, I just added something that made it twice as slow. Rather than two years from now, death by a thousand cuts, it’s like you made 20 decisions that made it 10% slower and you didn’t know that. So you end up with this really slow app. So you need a tool that lets you keep track of this stuff and keeps it on the front page in front of developers. I believe very strongly in that. So just look up mini profiler, it’s available for Ruby, it’s available for .NET and it works brilliantly, keeping those performance numbers front and center. So you don’t lose track of performance as a feature.

[00:55:05]Yegor: But still the Stack Overflow like the front page of Stack Overflow has, I don’t know, a thousand data items, which you need to retrieve from the database and you show them right there on the one HTML page. While if you go to Twitter or Facebook, they upload extra pieces of information using JavaScript. So they still, even though, after 10 years after you launch Stack Flow, they still don’t know how to do that. How to show everything in just one page, but you knew that 10 years ago. So what’s the trick? How can you go? How can you make so many round trips to the database and show everything in just a few milliseconds? It’s just like how there are so many layers of caching or what the–

[00:55:44]Jeff: You just have to have a focus on performance from your performance as a feature. You just have to have a focus on performance from day zero test to be part of your culture as a company. And one of the downsides of Ruby is they really haven’t had this idea of performance as a feature it’s always been, “Oh, that doesn’t matter, what matters is a performance of the developers,””” which isn’t untrue, but it also, isn’t the complete story. You can have your cake and eat it too. You can be fast for developers and be fast for end users ‘cause performance is in fact a feature. And then when you’re prototyping, it’s true. It doesn’t really matter. The problem is when you’re prototyping, the prototypes tend to ship as the final product in my experience. So if you build up these slow prototypes, then you’re gonna have a pro slow site. So you have to have a philosophy from day zero of like look performance matters from the beginning to the end, performance matters. It’s something we care about. The performance number needs to be on the screen of the developer at all times. So we’re aware of it. That’s the way it has to be. And that’s what works.

[00:56:46]Yegor: Well, as I said, Stack Overflow is there like an icon for me in terms of speed. That’s the fastest website I can find right now in internet. Like the rich website is not just a one page website. It’s a really huge database there. And no matter where you click it immediately returns you the HTML content. So that’s amazing. I think that probably, that was one of the reasons why you outperform this, what was the name, experts exchange website at that time. So you made much more progress than them 10 years ago because of speed, I think.

[00:57:22]Jeff: Yeah, now, performance as a feature. I have a blog post about this called “Performance is a Feature. I highly recommend people Google it, just Google Performance is a Feature”” and read through. And I still believe that. And yeah, performance is a feature even today. It really, really is.

[00:57:38]Yegor: Okay. That sounds good. So thank you very much for all the answers that I think we encourage people to try Discourse, I believe so, because many of them probably don’t know the platform, but they should. And you gave very good advice for Stack Overflow users. So I will try it myself as well. These features, which you mentioned.

[00:57:57]Jeff: Yeah, yeah, excellent. I hope it was useful to people and thank you for having me on. I really appreciate it.

[00:58:03]Yegor: Yeah, absolutely. Thank you so much.

[00:58:04]Jeff: Thank you.

[00:58:06]Yegor: Bye-bye, thank you for coming.

sixnines availability badge   GitHub stars