Jeff Atwood was our special guest.
Video is here (Jeff asked to take it down).
Transcript
[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.
