Jeff Atwood: Stack Overflow and Coding Horror #7

Transcript

00:00:00 The following is a conversation with Jeff Atwood.

00:00:02 He is the cofounder of Stack Overflow and Stack Exchange,

00:00:05 websites that are visited by millions of people

00:00:08 every single day.

00:00:09 Much like with Wikipedia, it is difficult to understate

00:00:13 the impact on global knowledge and productivity

00:00:16 that these networks of sites have created.

00:00:19 Jeff is also the author of the famed blog Coding Horror

00:00:24 and the founder of Discourse, an open source software

00:00:27 project that seeks to improve the quality of our online

00:00:31 community discussions.

00:00:33 This conversation is part of the MIT course

00:00:36 on artificial general intelligence

00:00:38 and the artificial intelligence podcast.

00:00:40 If you enjoy it, subscribe on YouTube, iTunes,

00:00:43 or your podcast provider of choice,

00:00:45 or simply connect with me on Twitter at Lex Friedman,

00:00:48 spelled F R I D.

00:00:51 And now, here’s my conversation with Jeff Atwood.

00:00:56 Having co created and managed for a few years

00:00:59 the world’s largest community of programmers in Stack Overflow

00:01:02 10 years ago, what do you think motivates most programmers?

00:01:08 Is it fame, fortune, glory, process of programming itself,

00:01:13 or is it the sense of belonging to a community?

00:01:16 It’s puzzles, really.

00:01:17 I think it’s this idea of working on puzzles

00:01:22 independently of other people and just solving a problem,

00:01:25 sort of like on your own almost.

00:01:28 Although, nobody really works alone in programming anymore.

00:01:32 But I will say there’s an aspect of hiding yourself away

00:01:36 and just beating on a problem until you solve it,

00:01:39 like brute force basically to me is

00:01:41 what a lot of programming is.

00:01:43 The computer’s so fast that you can

00:01:44 do things that would take forever for a human,

00:01:46 but you can just do them so many times and so often

00:01:49 that you get the answer.

00:01:52 You’re saying just the pure act of tinkering with the code

00:01:55 is the thing that drives most problems.

00:01:58 The struggle balance within the joy of overcoming,

00:02:03 the brute force process of pain and suffering

00:02:05 that eventually leads to something that actually works.

00:02:09 Well, data’s fun, too.

00:02:10 There’s this thing called the shuffling problem.

00:02:12 The naive shuffle that most programmers write

00:02:14 has a huge flaw, and there’s a lot of articles

00:02:16 online about this because it can be really bad

00:02:18 if you’re a casino and you have an unsophisticated programmer

00:02:22 writing your shuffle algorithm.

00:02:23 There’s surprising ways to get this wrong,

00:02:25 but the neat thing is the way to figure that out

00:02:27 is just to run your shuffle a bunch of times

00:02:29 and see how many orientations of cards you get.

00:02:32 You should get an equal distribution of all the cards.

00:02:34 And with the naive method of shuffling,

00:02:36 if you just look at the data, if you just brute force it

00:02:38 and say, OK, I don’t know what’s going to happen,

00:02:40 you just write a program that does it a billion times

00:02:43 and then see what the buckets look like of the data.

00:02:46 And the Monty Hall problem is another example of that,

00:02:48 where you have three doors and somebody gives you

00:02:50 information about another door.

00:02:52 So the correct answer is you should always

00:02:54 switch in the Monty Hall problem, which is not intuitive,

00:02:56 and it freaks people out all the time.

00:02:58 But you can solve it with data.

00:02:59 If you write a program that does the Monty Hall game

00:03:04 and then never switches, then always switches, just compare,

00:03:06 you would immediately see that you don’t have to be smart.

00:03:09 You don’t have to figure out the answer algorithmically.

00:03:11 You can just brute force it out with data and say, well,

00:03:13 I know the answer is this because I ran the program

00:03:15 a billion times, and these are the data buckets

00:03:17 that I got from it.

00:03:18 So empirically find it.

00:03:20 But what’s the joy of that?

00:03:22 So for you, for you personally, outside of family,

00:03:26 what motivates you in this process?

00:03:29 Well, to be honest, I don’t really

00:03:30 write a lot of code anymore.

00:03:32 What I do at Discourse is managery stuff,

00:03:35 which I always despised.

00:03:37 As a programmer, you think of managers

00:03:39 as people who don’t really do anything themselves.

00:03:42 But the weird thing about code is you

00:03:43 realize that language is code.

00:03:45 The ability to direct other people

00:03:48 lets you get more stuff done than you

00:03:50 could by yourself anyway.

00:03:52 You said language is code?

00:03:53 Language is code.

00:03:54 Meaning communication with other humans?

00:03:56 Yes, it is.

00:03:56 You can think of it as a systematic.

00:03:58 So what is it like to be, what makes,

00:04:01 before we get into programming, what makes a good manager?

00:04:04 What makes a good leader?

00:04:05 Well, I think a leader, it’s all about leading by example,

00:04:08 first of all, sort of doing and being the things

00:04:11 that you want to be.

00:04:12 Now, this can be kind of exhausting,

00:04:13 particularly when you have kids, because you

00:04:14 realize that your kids are watching you all the time,

00:04:17 even in ways that you’ve stopped seeing yourself.

00:04:20 The hardest person to see on the planet is really yourself.

00:04:23 It’s a lot easier to see other people

00:04:24 and make judgments about them.

00:04:26 But yourself, you’re super biased.

00:04:28 You don’t actually see yourself the way other people see you.

00:04:30 Often, you’re very, very hard on yourself in a way

00:04:33 that other people really aren’t going to be.

00:04:34 So that’s one of the insights is you’ve

00:04:37 got to be really diligent about thinking,

00:04:40 am I behaving in a way that represents

00:04:42 how I want other people to behave,

00:04:44 like leading through example?

00:04:46 There’s a lot of examples of leaders

00:04:47 that really mess this up, like they make decisions that

00:04:50 are like, wow, it’s a bad example for other people.

00:04:54 So I think leading by example is one.

00:04:57 The other one I believe is working really hard.

00:04:59 And I don’t mean working exhaustively,

00:05:01 but showing a real passion for the problem,

00:05:07 not necessarily your solution to the problem,

00:05:09 but the problem itself is just one that you really believe in.

00:05:11 Like with discourse, for example,

00:05:12 the problem that we’re looking at,

00:05:13 which is my current project, is how do you get people

00:05:17 in groups to communicate in a way that doesn’t break down

00:05:20 into the howling of wolves?

00:05:21 How do you deal with trolling?

00:05:23 Not like technical problems.

00:05:24 How do I get people to post paragraphs?

00:05:26 How do I get people to use bold?

00:05:27 How do I get people to use complete sentences,

00:05:29 although those are problems as well?

00:05:30 But how do I get people to get along with each other

00:05:33 and then solve whatever problem it is they set out to solve,

00:05:36 or reach some consensus on discussion,

00:05:38 or just not hurt each other even?

00:05:39 Maybe it’s a discussion that doesn’t really matter,

00:05:41 but are people yelling at each other?

00:05:43 And why?

00:05:44 Like that’s not the purpose of this kind of communication.

00:05:46 So I would say leadership is about setting an example,

00:05:52 doing the things that represent what you want to be,

00:05:54 and making sure that you’re actually doing those things.

00:05:56 And there’s a trick to that too,

00:05:58 because the things you don’t do

00:05:59 also say a lot about what you are.

00:06:02 Yeah, so let’s pause on that one.

00:06:03 So those two things are fascinating.

00:06:05 So how do you have as a leader that self awareness?

00:06:08 So you just said it’s really hard to be self aware.

00:06:10 So for you personally, or maybe for other leaders

00:06:12 you’ve seen or look up to,

00:06:14 how do you know both that the things you’re doing

00:06:18 are the wrong things to be doing,

00:06:20 the way you speak to others, the way you behave,

00:06:22 and the things you’re not doing?

00:06:23 How do you get that signal?

00:06:24 I think there’s two aspects to that.

00:06:26 One is like processing feedback that you’re getting, so.

00:06:29 How do you get feedback?

00:06:30 Well, right, so are you getting feedback, right?

00:06:32 So one way we do it, for example, with discourse,

00:06:33 we have three cofounders,

00:06:34 and we periodically talk about decisions

00:06:37 before we make them.

00:06:38 So it’s not like one person can make a mistake,

00:06:40 or like, wow, there can be misunderstandings, things like that.

00:06:43 So it’s part of like group consensus of leadership

00:06:45 is like it’s good to have,

00:06:47 I think systems where there’s one leader,

00:06:49 and that leader has the rule of absolute law

00:06:50 are just really dangerous in my experience.

00:06:53 For communities, for example,

00:06:54 like if you have a community that’s run by one person,

00:06:56 that one person makes all the decisions,

00:06:57 that person’s gonna have a bad day.

00:06:59 Something could happen to that person, something,

00:07:02 there’s a lot of variables.

00:07:03 So like first, when you think about leadership,

00:07:05 have multiple people doing leadership

00:07:07 and have them talk amongst each other.

00:07:08 So giving each other feedback about the decisions

00:07:11 that they’re making.

00:07:12 And then when you do get feedback,

00:07:13 I think there’s that little voice in your head, right?

00:07:16 Or your gut or wherever you wanna put it in your body.

00:07:19 I think that voice is really important.

00:07:22 Like I think most people who have any kind of moral compass

00:07:25 or like want to do,

00:07:25 most people want to do the right thing.

00:07:27 I do believe that.

00:07:28 I mean, there might be a handful of sociopaths

00:07:30 out there that don’t, but most people,

00:07:32 they want other people to think of them as a good person.

00:07:34 And why wouldn’t you, right?

00:07:35 Like, do you want people to despise you?

00:07:36 I mean, that’s just weird, right?

00:07:38 So you have that little voice

00:07:39 that sort of the angel and devil on your shoulder

00:07:40 sort of talking to you about like what you’re doing,

00:07:43 how you’re doing, how does it make you feel

00:07:44 to make these decisions, right?

00:07:46 And I think having some attunement to that voice

00:07:49 is important.

00:07:50 But you said that voice also for,

00:07:52 I think this is a programmer situation too,

00:07:55 where sometimes the devil on the shoulder

00:07:57 is a little too loud.

00:07:59 So you’re a little too self critical

00:08:02 for a lot of developers,

00:08:03 and especially when you have introverted personality.

00:08:05 How do you struggle with a self criticism

00:08:07 or the criticism of others?

00:08:09 So one of the things of leadership

00:08:11 is to do something that’s potentially unpopular

00:08:14 or where people doubt you

00:08:15 and you still go through with the decision.

00:08:18 So what’s that balance like?

00:08:21 I think you have to walk people

00:08:22 through your decision making, right?

00:08:23 Like you have to, this is where blogging

00:08:24 is really important and communication is so important.

00:08:26 Again, code language is just another kind of code.

00:08:27 It’s like, here is the program

00:08:29 by which I arrived at the conclusion

00:08:31 that I’m gonna reach, right?

00:08:33 It’s one thing to say like,

00:08:34 this is a decision, it’s final, deal with it, right?

00:08:36 That’s not usually satisfying to people.

00:08:38 But if you say, look,

00:08:39 we’ve been thinking about this problem for a while.

00:08:41 Here’s some stuff that’s happened.

00:08:42 Here’s what we think is right.

00:08:43 Here’s our goals.

00:08:44 Here’s what we wanna achieve.

00:08:45 And we’ve looked at these options

00:08:47 and we think this available options is the best option.

00:08:50 People will be like, oh, okay, right?

00:08:52 Maybe I don’t totally agree with you,

00:08:52 but I can kind of see where you’re coming from

00:08:54 and I see it’s not just arbitrary decision

00:08:56 delivered from a cloud of flames in the sky, right?

00:09:00 It’s like a human trying to reach

00:09:02 some kind of consensus about goals.

00:09:04 And their goals might be different than yours.

00:09:05 That’s completely legit, right?

00:09:06 But if you’re making that clear, it’s like,

00:09:08 oh, well, the reason we don’t agree

00:09:09 is because we have totally different goals, right?

00:09:11 Like, how could we agree?

00:09:12 It’s not that you’re a bad person.

00:09:14 It’s that we have radically different goals in mind

00:09:16 when we started looking at this problem.

00:09:18 And the other one you said is passion.

00:09:19 So, or hard work, sorry.

00:09:22 Well, those are tied together in my mind.

00:09:24 Let’s say hard work and passion.

00:09:24 Like for me, like I just really love

00:09:26 the problem discourse is setting out to solve

00:09:28 because in a way it’s like,

00:09:30 there’s a vision of the world

00:09:32 where it all devolves into Facebook

00:09:33 basically owning everything and every aspect

00:09:35 of human communication, right?

00:09:37 And this has always been kind of a scary world for me.

00:09:39 First, cause I don’t,

00:09:40 I think Facebook is really good at execution.

00:09:42 I got to compliment them.

00:09:43 They’re very competent in terms of what they’re doing,

00:09:45 but Facebook has not much of a moral compass

00:09:48 in terms of Facebook cares about Facebook, really.

00:09:50 They don’t really care about you and your problems.

00:09:53 What they care about is how big they can make Facebook,

00:09:56 right?

00:09:56 Is that you talking about the company

00:09:57 or just the mechanism of how Facebook works?

00:09:59 Kind of both really, right?

00:10:01 Like, and the idea with discourse,

00:10:02 the reason I’m so passionate about it

00:10:03 is cause I believe every community

00:10:05 should have the right to own themselves, right?

00:10:07 Like they should have their own software that they can run

00:10:09 that belongs to them.

00:10:10 That’s their space where they can set the rules.

00:10:12 And if they don’t like it,

00:10:13 they can move to different hosting or,

00:10:15 you know, whatever they need to happen can happen.

00:10:18 But like this idea of a company town

00:10:20 where all human communication is implicitly owned

00:10:22 by WhatsApp, Instagram, and Facebook.

00:10:25 And it’s really disturbing too,

00:10:26 cause Facebook is really smart.

00:10:27 Like I said, they’re great at execution.

00:10:28 Buying in WhatsApp and buying Instagram

00:10:30 were incredibly smart decisions.

00:10:33 And they also do this thing, I don’t know if you know,

00:10:34 but they have this VPN software

00:10:36 that they give away for free on smartphones

00:10:38 and it indirectly feeds all the data

00:10:40 about the traffic back to Facebook.

00:10:42 So they can see what’s actually getting popular

00:10:44 through the VPNs, right?

00:10:45 They have low level access to the network data

00:10:48 because users have let them have that.

00:10:50 So.

00:10:51 So let’s take a small pause here.

00:10:54 First of all, discourse.

00:10:55 Can you talk about, can you lay out the land

00:10:59 of all the different ways you can have communities?

00:11:01 So there’s Stack Overflow that you’ve built.

00:11:03 There’s discourse.

00:11:05 So Stack Overflow is kind of like a Wiki,

00:11:07 Wikipedia you talk about.

00:11:09 And it’s a very specific scalpel, very focused.

00:11:11 So what is the purpose of discourse

00:11:13 and maybe contrast that with Facebook?

00:11:16 First of all, say, what is discourse?

00:11:17 Yeah.

00:11:18 Start from the beginning.

00:11:19 Well, let me start from the very beginning.

00:11:20 So Stack Overflow is a very structured

00:11:21 Wiki style Q and A for programmers, right?

00:11:24 And that was the problem we first worked on.

00:11:26 And when we started, we thought it was discussions

00:11:28 because we looked at like programming forums

00:11:30 and other things, but we quickly realized

00:11:32 we were doing Q and A, which is a very narrow subset

00:11:35 of human communication, right?

00:11:36 Sorry, so when you started Stack Overflow,

00:11:38 you thought you didn’t even know the Q and A.

00:11:41 Not really.

00:11:42 You didn’t know it would be Q and A.

00:11:43 Well, we didn’t know.

00:11:44 We had an idea of like, okay, these are things

00:11:45 that we see working online.

00:11:46 We had a goal, right?

00:11:47 Our goal was there was this site, Experts Exchange,

00:11:50 with a very unfortunate name.

00:11:52 Thank you for killing that site.

00:11:53 Yeah, I know, right?

00:11:54 Like a lot of people don’t remember it anymore,

00:11:56 which is great.

00:11:57 Like that’s the measure of success

00:11:58 when people don’t remember the thing

00:11:59 that you were trying to replace, then you’ve totally won.

00:12:02 So it was a place to get answers to programming questions,

00:12:05 but it wasn’t clear if it was like focused Q and A,

00:12:07 if it was a discussion.

00:12:08 There were plenty of programming forums.

00:12:10 So we weren’t really sure.

00:12:11 We were like, okay, we’ll take aspects of dig and Reddit,

00:12:13 like voting were very important.

00:12:15 Reordering answers based on votes.

00:12:17 Wiki style stuff of like being able to edit posts,

00:12:19 not just your posts, but other people’s posts

00:12:21 to make them better and keep them more up to date.

00:12:23 Ownership of blogging of like, okay, this is me.

00:12:26 I’m saying this in my voice, this is the stuff that I know.

00:12:29 And your reputation accrues to you

00:12:33 and it’s peer recognition.

00:12:34 So you asked earlier, like what motivates programmers?

00:12:37 I think peer recognition motivates them a lot.

00:12:40 That was one of the key insights of Stack Overflow

00:12:41 was like recognition from your peers is why things get done.

00:12:44 Not necessarily money, not necessarily your boss,

00:12:46 but like your peers saying, wow,

00:12:47 this person really knows their stuff, has a lot of value.

00:12:50 So the reputation system came from that.

00:12:53 So we were sort of Frankensteining a bunch of stuff together

00:12:56 in Stack Overflow, like stuff we had seen working

00:12:58 and we knew worked and that became Stack Overflow.

00:13:04 Over time, we realized it wasn’t really discussion.

00:13:06 It was very focused questions and answers.

00:13:08 There wasn’t a lot of room on the page

00:13:10 for let me talk about this tangential thing.

00:13:12 It was more like, okay, is it answering the question?

00:13:14 Is it clarifying the question?

00:13:16 Or could it be an alternative answer to the same question?

00:13:18 Because there’s usually more than one way to do it

00:13:20 in programming, there’s like say five to 10 ways.

00:13:22 And one of the patterns we got into early on

00:13:24 with Stack Overflow was there were questions

00:13:26 where there would be like hundreds of answers.

00:13:28 And we’re like, wow, how can there be a programming question

00:13:31 with 500, 200, 500 answers?

00:13:34 And we looked at those and we realized

00:13:36 those were not really questions in the traditional sense.

00:13:38 They were discussions.

00:13:39 It was stuff that we allowed early on

00:13:42 that we eventually decided wasn’t allowed such as

00:13:44 what’s your favorite programming food?

00:13:46 What’s the funniest programming cartoon you’ve seen?

00:13:49 And we had to sort of backfill a bunch of rules

00:13:51 about like, why isn’t this allowed?

00:13:53 Such as, is this a real problem you’re facing?

00:13:55 Like nobody goes to work and says, wow, I can’t work

00:13:57 cause I don’t know what the funniest programming cartoon is.

00:13:59 So sorry, can’t compile this code now, right?

00:14:02 It’s not a real problem you’re facing in your job.

00:14:04 So that was run rule.

00:14:05 And the second, like, what can you really learn from that?

00:14:07 It’s like what I call accidental learning

00:14:08 or Reddit style learning.

00:14:10 Where you’re just like, oh, I’ll just browse some things

00:14:11 and oh, wow, you know, did you know

00:14:13 tree frogs only live three years?

00:14:14 I mean, I just made that up.

00:14:16 I don’t know if that’s true.

00:14:16 But I didn’t really set out to learn that.

00:14:18 I don’t need to know that, right?

00:14:20 It’s accidental learning.

00:14:21 It was more intentional learning where you’re like,

00:14:23 okay, I have a problem.

00:14:24 And I want to learn about stuff

00:14:25 around this problem having, right?

00:14:27 And it could be theory, it could be compiler theory,

00:14:29 it could be other stuff, but I’m having a compiler problem.

00:14:31 Hence, I need to know the compiler theory,

00:14:34 that aspect of it that gets me to my answer, right?

00:14:38 So kind of a directed learning.

00:14:39 So we had to backfill all these rules

00:14:40 as we sort of figured out what the heck it was we were doing.

00:14:43 And the system came very strict over time.

00:14:45 And a lot of people still complain about that.

00:14:46 And I wrote my latest blog entry,

00:14:49 what does Stack Overflow want to be when it grows up?

00:14:52 Celebrating the 10 year anniversary, yeah.

00:14:54 Yeah, so 10 years.

00:14:55 And the system has trended towards strictness.

00:14:57 There’s a variety of reasons for this.

00:14:58 One is people don’t like to see other people

00:15:01 get reputation for stuff as they view as frivolous,

00:15:03 which I can actually understand.

00:15:05 Because if you saw a programmer got like 500 upvotes

00:15:07 for funniest programming cartoon

00:15:10 or funniest comment they had seen in code,

00:15:11 it’s like, well, why do they have that reputation?

00:15:13 Is it because they wrote the joke?

00:15:15 Probably not.

00:15:15 I mean, if they did, maybe, or the cartoon, right?

00:15:18 They’re getting a bunch of reputation

00:15:19 based on someone else’s work that’s not even programming.

00:15:22 It’s just a joke, right?

00:15:23 It’s related to programming.

00:15:24 So you begin to resent that.

00:15:26 You’re like, well, that’s not fair.

00:15:27 And it isn’t.

00:15:28 At some level, they’re correct.

00:15:29 I mean, I empathize.

00:15:30 Because it’s not correct to get reputation for that.

00:15:32 Versus here’s a really gnarly regular expression problem.

00:15:36 And here’s a really clever, insightful, detailed answer

00:15:40 laying out, oh, here’s why you’re

00:15:41 seeing the behavior that you’re seeing.

00:15:42 Here, let me teach you some things about how

00:15:43 to avoid that in the future.

00:15:44 That’s great.

00:15:45 That’s gold, right?

00:15:46 You want people to get reputation for that,

00:15:47 not so much for, wow, look at this funny thing I saw, right?

00:15:50 Great.

00:15:51 So there’s this very specific Q&A format.

00:15:54 And then take me through the journey towards discourse

00:15:57 and Facebook and Twitter.

00:15:58 So you started at the beginning that Stack Overflow

00:16:01 evolved to have a purpose.

00:16:02 So what is discourse, this passion

00:16:06 you have for creating community for discussion?

00:16:10 When was that born and how?

00:16:12 Well, part of it is based on the realization

00:16:13 that Stack Overflow is only good for very specific subjects

00:16:16 where it’s based on data, facts, and science,

00:16:19 where answers can be kind of verified to be true.

00:16:22 Another form of that is there’s the book of knowledge,

00:16:24 like the tome of knowledge that defines whatever it is.

00:16:28 You can refer to that book and it’ll give you the answer.

00:16:30 There has to be, it only works on subjects

00:16:33 where there’s like semi clear answers to things

00:16:35 that can be verified in some form.

00:16:37 Now again, there’s always more than one way to do it.

00:16:39 There’s complete flexibility and system around that.

00:16:41 But where it falls down is stuff like poker and LEGO.

00:16:45 Like we had, if you go to stackexchange.com,

00:16:48 we have an engine that tries to launch

00:16:50 different Q&A topics, right?

00:16:52 And people can propose Q&A topics, sample questions,

00:16:56 and if it gets enough support within the network,

00:16:59 we launched that Q&A site.

00:17:00 So some of the ones we launched were poker and LEGO

00:17:02 and they did horribly, right?

00:17:03 Because I mean, they might still be there lingering on

00:17:06 in some form, but it was an experiment.

00:17:07 This is like a test, right?

00:17:09 And some subjects work super well on the stack engine

00:17:11 and some don’t.

00:17:12 But the reason LEGO and poker don’t work

00:17:14 is because they’re so social, really.

00:17:16 It’s not about what’s the rule here in poker.

00:17:19 It’s like, well, what kind of cigars

00:17:21 do we like to smoke while playing poker?

00:17:23 Or what’s a cool set of cards to use when I’m playing poker?

00:17:26 Or what’s some strategies?

00:17:28 Say I have this hand come up with some strategies

00:17:30 I could use.

00:17:31 It’s more of a discussion around what’s happening with LEGO.

00:17:34 Same thing, here’s this cool LEGO set I found.

00:17:36 Look how awesome this is.

00:17:36 And I’m like, yeah, that’s freaking awesome, right?

00:17:38 It’s not a question, right?

00:17:39 There’s all these social components and discussions

00:17:41 that don’t fit at all.

00:17:43 We literally have to disallow those in Stack Overflow

00:17:45 because it’s not about being social.

00:17:46 It’s about problems that you’re facing in your work

00:17:49 that you need concrete answers for.

00:17:51 You have a real demonstrated problem that’s

00:17:52 blocking you in something.

00:17:54 Nobody’s blocked by, what should I

00:17:56 do when I have a straight flush?

00:17:58 It’s not a blocking problem in the world.

00:18:00 It’s just an opportunity to hang out and discuss.

00:18:02 So discourse was a way to address that and say, look,

00:18:07 discussion forum software was very, very bad.

00:18:10 And when I came out of Stack Overflow in early 2012,

00:18:18 it was still very, very bad.

00:18:19 I expected it improved in the four years since I last looked,

00:18:22 but it had not improved at all.

00:18:24 And I was like, well, that’s kind of terrible

00:18:26 because I love these communities of people talking about things

00:18:29 that they love.

00:18:31 They’re just communities of interest, right?

00:18:32 And there’s no good software for them.

00:18:35 Startups would come to me and say, hey, Jeff,

00:18:37 I want to have this startup.

00:18:39 Here’s my idea.

00:18:40 And the first thing I would say to them

00:18:42 is, well, first, why are you asking me?

00:18:44 I don’t really know your field necessarily.

00:18:47 Why aren’t you asking the community,

00:18:49 the people that are interested in this problem,

00:18:51 the people that are using your product,

00:18:52 why aren’t you talking to them?

00:18:53 And then they’d say, oh, great idea.

00:18:55 How do I do that?

00:18:56 And then that’s when I started playing sad trombone

00:18:58 because I realized all the software involving

00:19:00 talking to your users, customers, audience, patrons,

00:19:03 whatever it is, it was all really bad.

00:19:04 It was stuff that I would be embarrassed

00:19:06 to recommend to other people.

00:19:08 And yet, that’s where I felt they could get the biggest

00:19:10 and strongest, most effective input

00:19:12 for what they should be doing with their product, right?

00:19:15 It’s from their users, from their community, right?

00:19:17 That’s what we did on Stack Overflow.

00:19:18 So what we’re talking about with forums,

00:19:21 the, what is it, the dark matter of the internet,

00:19:25 it’s still, I don’t know if it’s still,

00:19:26 but for the longest time,

00:19:28 it has some of the most passionate

00:19:31 and fascinating discussions.

00:19:32 And what’s the usual structure?

00:19:34 There’s usually, it’s linear, so it’s sequential.

00:19:38 So you’re posting one after the other

00:19:39 and there’s pagination, so it’s every,

00:19:42 there’s 10 posts and then you go to the next page.

00:19:45 And that format still is used by,

00:19:48 like I’m, we’re doing a lot of research

00:19:50 with Tesla vehicles and there’s a Tesla Motors Club forum,

00:19:53 which is extremely.

00:19:54 We really wanted to run that actually.

00:19:56 They pinged us about it, I don’t think we got it,

00:19:57 but I really would have liked to gotten that one.

00:19:59 But they’ve started before even 2012, I believe.

00:20:02 I mean, they’ve been running for a long time.

00:20:04 It’s still an extremely rich source of information.

00:20:06 So what’s broken about that system

00:20:09 and how are you trying to fix it?

00:20:12 I think there’s a lot of power in connecting people

00:20:15 that love the same stuff around that specific topic.

00:20:19 Meaning Facebook’s idea of connection is

00:20:22 just any human that’s related to another human, right?

00:20:24 Like through friendship or any other reason.

00:20:27 Facebook’s idea of the world

00:20:28 is sort of the status update, right?

00:20:30 Like a friend of yours did something,

00:20:32 ate at a restaurant, right?

00:20:34 Whereas discussion forums were traditionally

00:20:37 around the interest graph.

00:20:38 Like I love electric cars,

00:20:40 specifically I love Tesla, right?

00:20:41 Like I love the way they approach the problem.

00:20:44 I love the style of the founder.

00:20:45 I just love the design ethic.

00:20:48 And there’s a lot to like about Tesla.

00:20:49 I don’t know if you saw the oatmeal,

00:20:50 he did a whole love comic to Tesla.

00:20:53 And it was actually kind of cool

00:20:53 because I learned some stuff.

00:20:54 He was talking about how great Tesla cars were specifically,

00:20:56 like how they were built differently.

00:20:58 And he went into a lot of great detail

00:20:59 that was really interesting.

00:21:00 And to me, that oatmeal post, if you read it,

00:21:02 is the genesis of pretty much all interest communities.

00:21:05 I just really love this stuff.

00:21:06 So like for me, for example, there’s yo yos, right?

00:21:08 Like I’m into the yo yo communities.

00:21:09 And these interest communities

00:21:11 are just really fascinating to me.

00:21:12 And I feel more connected to the yo yo communities

00:21:15 than I do to friends that I don’t see that often, right?

00:21:18 Like to me, the powerful thing is the interest graph.

00:21:21 And Facebook kind of dabbles in the interest graph.

00:21:25 I mean, they have groups,

00:21:25 you can sign up for groups and stuff,

00:21:26 but it’s really about the relationship graph.

00:21:29 Like this is my coworker, this is my relative,

00:21:32 this is my friend, but not so much about the interest.

00:21:35 So I think that’s the linchpin

00:21:36 of which forums and communities are built on

00:21:39 that I personally love.

00:21:40 Like I said, leadership is about passion, right?

00:21:44 And being passionate about stuff

00:21:45 is a really valid way to look at the world.

00:21:47 And I think it’s a way a lot of stuff in the world

00:21:50 gets done.

00:21:51 Like I once had someone describe me as,

00:21:52 he’s like, Jeff, you’re a guy who,

00:21:54 you just get super passionate about a few things at a time,

00:21:57 and you just go super deep in those things.

00:21:59 And I was like, oh, that’s kind of right.

00:22:00 That’s kind of what I do.

00:22:01 I get into something and just be super into that

00:22:03 for a couple of years or whatever,

00:22:04 and just learn all I can about it,

00:22:05 and go super deep in it.

00:22:07 And that’s how I enjoy experiencing the world, right?

00:22:11 Like not being shallow on a bunch of things,

00:22:12 but being really deep on a few things

00:22:14 that I’m interested in.

00:22:15 So forums kind of unlock that, right?

00:22:17 And you don’t want a world

00:22:18 where everything belongs to Facebook, at least I don’t.

00:22:20 I want a world where communities can kind of own themselves,

00:22:22 set their own norms, set their own rules,

00:22:25 control the experience.

00:22:26 Because community is also about ownership, right?

00:22:28 Like if you’re meeting at the Barnes and Noble every Thursday

00:22:32 and Barnes and Noble says, get out of here,

00:22:33 you guys don’t buy enough books.

00:22:34 Well, you know, you’re kind of hosed, right?

00:22:36 Barnes and Noble owns you, right?

00:22:37 Like you can’t.

00:22:38 But if you have your own meeting space,

00:22:40 you know, your own clubhouse,

00:22:41 you can set your own rules,

00:22:43 decide what you want to talk about there,

00:22:44 and just really generate a lot better information

00:22:47 than you could like hanging out at Barnes and Noble

00:22:49 every Thursday at 3 p.m., right?

00:22:51 So that’s kind of the vision of Discourse,

00:22:53 is a place where it’s fully open source.

00:22:57 You can take the software, you can install it anywhere,

00:22:59 and, you know, you and a group of people

00:23:00 can go deep on whatever it is that you’re into.

00:23:02 And this works for startups, right?

00:23:04 Startups are a group of people

00:23:05 who go super deep on a specific problem, right?

00:23:08 And they want to talk to the community.

00:23:09 It’s like, well, install Discourse, right?

00:23:11 That’s what we do at Discourse.

00:23:12 That’s what I did at Stack Overflow.

00:23:13 I spent a lot of time on Meta Stack Overflow,

00:23:15 which is our internal, well, public community feedback site,

00:23:20 and just experiencing what the users were experiencing,

00:23:24 right, because they’re the ones

00:23:24 doing all the work in the system.

00:23:26 And they had a lot of interesting feedback.

00:23:27 And there’s that 90, 10 rule of, like,

00:23:29 90% of the feedback you get is not really actionable

00:23:31 for a variety of reasons.

00:23:32 It might be bad feedback, it might be crazy feedback,

00:23:34 it might be feedback you just can’t act on right now.

00:23:36 But there’s 10% of it that’s like gold.

00:23:38 It’s like literally gold and diamonds,

00:23:39 where it’s like feedback of really good improvements

00:23:42 to your core product that are not super hard to get to

00:23:44 and actually make a lot of sense.

00:23:45 And my favorite is about 5% of those stuff

00:23:47 I didn’t even see coming.

00:23:48 It’s like, oh my God, I never even thought of that.

00:23:50 But that’s a brilliant idea, right?

00:23:52 And I can point to so many features of Stack Overflow

00:23:54 that we derive from Meta Stack Overflow feedback

00:23:56 and Meta discourse, right?

00:23:58 Same exact principle of discourse, you know?

00:24:01 We’re getting ideas from the community.

00:24:02 I was like, oh my God, I never thought of that,

00:24:03 but that’s fantastic, right?

00:24:04 Like, I love that relationship with the community.

00:24:06 From having built these communities,

00:24:08 what have you learned about?

00:24:11 What’s the process of getting a critical mass of members

00:24:13 in a community?

00:24:14 Is it luck, skill, timing, persistence?

00:24:17 What is, is it the tools, like discourse,

00:24:20 that empower that community?

00:24:21 What’s the key aspect of starting for one guy or gal

00:24:25 and then building it to two and then 10

00:24:27 and a hundred and a thousand and so on?

00:24:29 I think when you’re starting with an N of one,

00:24:32 I mean, I think it’s persistence

00:24:33 and also you have to be interesting.

00:24:37 Like somebody I really admire once said something

00:24:39 that I always liked about blogging.

00:24:40 He’s like, here’s how you blog.

00:24:41 You have to have something interesting to say

00:24:44 and have an interesting way of saying it, right?

00:24:46 And then do that for like 10 years.

00:24:49 So that’s the genesis,

00:24:50 is like you have to have sort of something interesting

00:24:53 to say that’s not exactly what everybody else is saying

00:24:55 and an interesting way of saying it,

00:24:56 which is another way of saying,

00:24:57 kind of entertaining way of saying it.

00:24:59 And then as far as growing it, it’s like ritual.

00:25:01 You know, like you have to, like say you’re starting a blog,

00:25:04 you have to say, look, I’m gonna blog every week,

00:25:06 three times a week,

00:25:07 and you have to stick to that schedule, right?

00:25:09 Because until you do that for like several years,

00:25:12 you’re never gonna get anywhere.

00:25:14 Like it just takes years to get to where you need to get to.

00:25:16 And part of that is having the discipline

00:25:18 to stick with the schedule.

00:25:19 And it helps, again, if it’s something you’re passionate

00:25:21 about, this won’t feel like work.

00:25:22 You’re like, I love this.

00:25:23 I could talk about this all day, every day, right?

00:25:26 You just have to do it in a way

00:25:27 that’s interesting to other people.

00:25:28 And then as you’re growing the community,

00:25:30 that pattern of participation within the community

00:25:32 of like generating these artifacts

00:25:34 and inviting other people to help you

00:25:35 like collaborate on these artifacts,

00:25:36 like even in the case of blogging,

00:25:38 like I felt in the early days of my blog,

00:25:40 which I started in 2004,

00:25:41 which is really the genesis of Stack Overflow.

00:25:43 If you look at all my blog, it leads up to Stack Overflow,

00:25:46 which was, I have all this energy in my blog,

00:25:48 but I don’t, like 40,000 people were subscribing to me.

00:25:51 And I was like, I wanna do something.

00:25:52 And then I met Joel and said, hey, Joel,

00:25:54 I wanna do something,

00:25:55 take this ball of energy from my blog and do something.

00:25:57 And all the people reading my blog saw that.

00:25:58 It’s like, oh, cool.

00:25:59 You’re involving us.

00:26:00 You’re saying, look, you’re part of this community.

00:26:03 Let’s build this thing together.

00:26:04 Like they pick the name.

00:26:05 Like we voted on the name for Stack Overflow on my blog.

00:26:08 Like we came up, and naming is super hard.

00:26:09 First of all, the hardest problem in computer science

00:26:12 is coming up with a good name for stuff, right?

00:26:14 But you can go back to my blog.

00:26:15 There’s the poll where we voted

00:26:17 and Stack Overflow became the name of the site.

00:26:19 And all the early beta users of Stack Overflow

00:26:21 were audience of my blog plus Joel’s blog, right?

00:26:24 So we started from, like, if you look at the genesis,

00:26:26 okay, I was just a programmer who said,

00:26:28 hey, I love programming,

00:26:29 but I have no outlet to talk about it.

00:26:31 So I’m just gonna blog about it,

00:26:31 because I don’t have enough people to work

00:26:33 to talk to about it.

00:26:34 Because at the time I worked a place where,

00:26:36 you know, programming wasn’t the core output

00:26:37 of the company, it was a pharmaceutical company.

00:26:40 And I just love this stuff, you know, to an absurd degree.

00:26:43 So I was like, I’ll just blog about it.

00:26:44 And then I’ll find an audience

00:26:45 and eventually found an audience,

00:26:47 eventually found Joel,

00:26:49 and eventually built Stack Overflow

00:26:50 from that one core of activity, right?

00:26:52 But it was that repetition of feeding back in feedback

00:26:55 from my blog comments, feedback from Joel,

00:26:58 feedback from the early Stack Overflow community.

00:27:01 When people see that you’re doing that,

00:27:02 they will follow along with you, right?

00:27:04 They’ll say, cool, you’re here in good faith.

00:27:05 You’re actually, you know, not listening to everything

00:27:07 because that’s impossible, that’s impossible.

00:27:09 But you’re actually, you know,

00:27:11 waiting our feedback and what you’re doing.

00:27:14 And why wouldn’t I?

00:27:14 Because who does all the work on Stack Overflow?

00:27:16 Me, Joel?

00:27:17 No, it’s the other programmers

00:27:19 that are doing all the work.

00:27:20 So you gotta have some respect for that.

00:27:22 And then, you know, discipline around,

00:27:24 look, you know, we’re trying to do a very specific thing

00:27:26 here on Stack Overflow.

00:27:27 We’re not trying to solve all the world’s problems.

00:27:29 We’re trying to solve this very specific Q and A problem

00:27:31 in a very specific way.

00:27:32 Not cause we’re jerks about it,

00:27:33 but because these strict set of rules

00:27:36 help us get really good results, right?

00:27:39 And programmers, that’s an easy sell for the most part

00:27:41 because programmers are used to dealing

00:27:42 with ridiculous systems of rules like constantly.

00:27:45 That’s basically their job.

00:27:46 So they’re very, oh yeah, super strict system of rules

00:27:49 that lets me get what I want.

00:27:50 That’s programming, right?

00:27:51 That’s what Stack Overflow is, so.

00:27:53 So you’re making it sound easy,

00:27:54 but in 2004, let’s go back there.

00:27:58 In 2004, you started the blog, Coding Horror.

00:28:01 Was it called that at the very beginning?

00:28:03 It was.

00:28:04 One of the smart things I did,

00:28:05 it’s from a book by Steve McConnell, Code Complete,

00:28:06 which is one of my favorite programming books,

00:28:08 still probably my number one programming book

00:28:09 for anyone to read.

00:28:10 So one of the smart things I did back then,

00:28:13 I don’t always do smart things when I start stuff.

00:28:16 I contacted Steve and said, hey, I really like this.

00:28:18 It was a sidebar illustration

00:28:19 indicating danger in code, right?

00:28:21 Coding Horror was like, watch out.

00:28:25 And I love that illustration because it spoke to me.

00:28:27 Because I saw that illustration go, oh my God, that’s me.

00:28:29 Like I’m always my own worst enemy.

00:28:31 Like that’s the key insight in programming is

00:28:33 every time you write something,

00:28:34 think how am I gonna screw myself?

00:28:36 Because you will, constantly, right?

00:28:39 So that icon was like, oh yeah,

00:28:41 I need to constantly hold that mirror up and look,

00:28:43 and say, look, you’re very fallible.

00:28:45 You’re gonna screw this up.

00:28:46 Like how can you build this in such a way

00:28:48 that you’re not gonna screw it up later?

00:28:50 Like how can you get that discipline around

00:28:53 making sure at every step I’m thinking through

00:28:54 all the things that I could do wrong

00:28:56 or that other people could do wrong?

00:28:57 Because that is actually how you get to be

00:28:58 a better programmer a lot of times, right?

00:29:00 So that sidebar illustration, I loved it so much.

00:29:03 And I wrote Steve before I started my blog and said,

00:29:05 hey, can I have permission to use this

00:29:06 because I just really like this illustration?

00:29:08 And Steve was kind enough to give me permission to do that

00:29:11 and just continues to give me permission, so yeah.

00:29:13 Really, that’s awesome.

00:29:15 But in 2004, you started this blog.

00:29:18 You know, you look at Stephen King, his book on writing,

00:29:22 or Stephen Pressfield, War of Art book.

00:29:26 I mean, it seems like writers suffer.

00:29:30 I mean, it’s a hard process of writing, right?

00:29:32 There’s gonna be suffering.

00:29:34 I mean, I won’t kid you.

00:29:35 Well, the work is suffering, right?

00:29:36 Like doing the work, like even when you’re every week,

00:29:38 you’re like, okay, that blog post wasn’t very good

00:29:40 or people didn’t like it or people said disparaging things

00:29:43 about it.

00:29:44 You have to like have the attitude like, you know,

00:29:47 no matter what happens, I wanna do this for me, right?

00:29:49 It’s not about you, it’s about me.

00:29:51 I mean, in the end, it is about everyone

00:29:53 because this is how good work gets out into the world.

00:29:55 But you have to be pretty strict about saying like,

00:29:59 you know, I’m selfish in the sense

00:30:01 that I have to do this for me.

00:30:03 You know, you mentioned Stephen King,

00:30:04 like his book on writing.

00:30:05 But like one of the things I do, for example,

00:30:06 when writing is like, I read it out loud.

00:30:08 One of the best pieces of advice for writing anything

00:30:10 is read it out loud, like multiple times

00:30:13 and make it sound like you’re talking

00:30:15 because that is the goal of good writing.

00:30:17 It should sound like you said it

00:30:19 with slightly better phrasing

00:30:20 because you have more time to think about what you’re saying

00:30:22 but like, it should sound natural when you say it.

00:30:24 And I think that’s probably the single best

00:30:26 writing advice I can give anyone.

00:30:27 Just read it over and over out loud,

00:30:29 make sure it sounds like something you would normally say

00:30:32 and it sounds good.

00:30:33 And what’s your process of writing?

00:30:35 See, there’s usually a pretty good idea

00:30:37 behind the blog post.

00:30:39 So ideas, right.

00:30:40 So I think you gotta have the concept

00:30:43 that there’s so many interesting things in the world.

00:30:46 Like, I mean, my God, the world is amazing, right?

00:30:48 Like you can never write about everything that’s going on

00:30:51 because it’s so incredible.

00:30:52 But if you can’t come up with like,

00:30:54 let’s say one interesting thing per day to talk about,

00:30:57 then you’re not trying hard enough

00:30:58 because the world is full of just super interesting stuff.

00:31:00 And one great way to like mine stuff

00:31:03 is go back to old books

00:31:04 cause they bring up old stuff that’s still super relevant.

00:31:07 And I did that a lot

00:31:08 cause I was like reading classic programming books

00:31:09 and a lot of the early blog posts were like,

00:31:11 oh, I was reading this programming book

00:31:12 and they brought this really cool concept

00:31:13 and I wanna talk about it some more.

00:31:15 And you get the, I mean,

00:31:16 you’re not claiming credit for the idea

00:31:17 but it gives you something interesting to talk about

00:31:18 that’s kind of evergreen, right?

00:31:19 Like you don’t have to go, what should I talk about?

00:31:21 So we’ll just go dig up some old classic programming books

00:31:24 and find something that, oh, wow, that’s interesting.

00:31:26 Or how does that apply today?

00:31:28 Or what about X and Y or compare these two concepts.

00:31:30 So pull a couple of sentences from that book

00:31:33 and then sort of play off of it,

00:31:34 almost agree or disagree.

00:31:36 So in 2007, you wrote that you were offered

00:31:41 a significant amount of money to sell the blog.

00:31:44 You chose not to.

00:31:45 What were all the elements you were thinking about?

00:31:48 Cause I’d like to take you back.

00:31:50 It seems like there’s a lot of nonlinear decisions

00:31:52 you made through life.

00:31:54 So what was that decision like?

00:31:56 Right, so one of the things I love

00:31:57 is the Choose Your Own Adventure books,

00:31:59 which I loved as a kid

00:32:00 and I feel like they’re early programmer books

00:32:01 cause they’re all about if then statements, right?

00:32:04 If this, then this.

00:32:05 And they’re also very, very unforgiving.

00:32:07 Like there’s all these sites that map

00:32:08 the classic Choose Your Own Adventure books

00:32:11 and how many outcomes are bad, a lot of bad outcomes.

00:32:13 So part of the game is like, oh, I got a bad outcome.

00:32:16 Go back one step, go back one further step.

00:32:17 It’s like, how did I get here, right?

00:32:19 Like it’s a sequence of decisions.

00:32:21 And this is true of life, right?

00:32:23 Like every decision is a sequence, right?

00:32:24 Individually, any individual decision

00:32:28 is not necessarily right or wrong,

00:32:29 but they lead you down a path, right?

00:32:31 So I do think there’s some truth to that.

00:32:32 So this particular decision,

00:32:34 the blog had gotten fairly popular.

00:32:36 There’s a lot of RSS readers that I had discovered.

00:32:39 And this guy contacted me out of the blue

00:32:40 from this like bug tracking company.

00:32:42 He’s like, oh, I really wanna buy your blog

00:32:43 for like, I think it was around,

00:32:46 it was $100,000, it might have been like 80,000,

00:32:47 but it was a lot, right?

00:32:49 Like, and that’s, you know, at the time,

00:32:51 like I would have a year’s worth of salary all at once.

00:32:54 So I didn’t really think about like, well, you know,

00:32:57 and I remember talking to people at the time,

00:32:58 I was like, wow, that’s a lot of money.

00:32:59 But then I’m like, I really like my blog, right?

00:33:02 Like, do I wanna sell my blog?

00:33:03 Cause it wouldn’t really belong to me anymore at that point.

00:33:05 And one of the guidelines that I like to,

00:33:09 I don’t like to give advice to people a lot,

00:33:11 but one of the pieces of advice I do give,

00:33:12 cause I do think it’s really true and it’s generally helpful

00:33:15 is whenever you’re looking at a set of decisions,

00:33:17 like, oh gosh, should I do A, B or C,

00:33:19 you gotta pick the thing that’s a little scarier

00:33:22 in that list because not, you know,

00:33:24 not like jump off a cliff scary,

00:33:25 but the thing that makes you nervous.

00:33:27 Cause if you pick the safe choice,

00:33:29 it’s usually, you’re not really pushing.

00:33:30 You’re not pushing yourself.

00:33:31 You’re not choosing the thing that’s gonna help you grow.

00:33:33 So for me, the scarier choice was to say no.

00:33:36 I was like, well, no, let’s just see where this is going.

00:33:38 Right?

00:33:38 Because then I own it.

00:33:39 I mean, it belongs to me.

00:33:40 It’s my thing.

00:33:42 And I can just take it

00:33:43 and tell some other logical conclusion, right?

00:33:45 Because imagine how different the world would have been

00:33:46 had I said yes and sold the blog.

00:33:49 It’s like, there probably wouldn’t be Stack Overflow.

00:33:51 You know, a lot of other stuff would have changed.

00:33:53 So for that particular decision,

00:33:55 I think it was that same rule.

00:33:56 Like what scares me a little bit more.

00:33:57 Do the thing that scares you.

00:33:59 Yeah.

00:34:00 So speaking of which, startups.

00:34:01 I think there’s a specific, some more general questions

00:34:05 that a lot of people would be interested in.

00:34:07 You’ve started Stack Overflow.

00:34:10 You started this course.

00:34:12 So what’s the, it was one, two, three guys,

00:34:15 whatever it is in the beginning.

00:34:17 What was that process like?

00:34:19 Do you start talking about it?

00:34:20 Do you start programming?

00:34:21 Do you start, like, where’s the birth

00:34:24 and the catalyst that actually.

00:34:25 Well, I can talk about it in the context

00:34:27 of both Stack Overflow and Discourse.

00:34:28 So I think the key thing initially is there is a problem.

00:34:31 Something, there’s some state of the world

00:34:32 that’s unsatisfactory to the point that, like,

00:34:34 you’re upset about it, right?

00:34:35 Like, in that case, it was experts exchange.

00:34:37 I mean, Joel’s original idea,

00:34:38 because I approached Joel as like,

00:34:40 look, Joel, I have all this energy behind my blog.

00:34:41 I want to do something.

00:34:42 I want to build something.

00:34:43 But I don’t know what it is,

00:34:44 because I’m honestly not a good idea person.

00:34:45 I’m really not.

00:34:46 I’m like the execution guy.

00:34:47 I’m really good at execution,

00:34:48 but I’m not good at, like, blue skying ideas.

00:34:51 Not my forte.

00:34:52 Which is another reason why I like the community feedback,

00:34:54 because they blue sky all day long for you, right?

00:34:56 So when I can just go in and cherry pick

00:34:57 a blue sky idea from community,

00:34:59 even if I have to spend three hours reading

00:35:00 to get one good idea, it’s worth it, man.

00:35:02 But anyway, so the idea from Joel was,

00:35:04 hey, experts exchange, it’s got great data,

00:35:07 but the experience is hideous, right?

00:35:09 It’s trying to trick you.

00:35:09 It feels like used car salesman.

00:35:11 It’s just bad.

00:35:12 So I was like, oh, that’s awesome.

00:35:13 It feeds into community.

00:35:14 It feeds into, like, you know,

00:35:15 we can make creative comments.

00:35:16 So I think the core is to have a really good idea

00:35:18 that you feel very strongly about in the beginning,

00:35:20 that, like, there’s a wrong in the world,

00:35:22 an injustice that we will write

00:35:24 through the process of building this thing.

00:35:26 For Discourse, it was like, look,

00:35:27 there’s no good software for communities

00:35:30 to just hang out and, like, do stuff, right?

00:35:32 Like, whether it’s problem solving, startup, whatever.

00:35:35 Forums are such a great building block of online community,

00:35:37 and they’re hideous.

00:35:38 They were so bad, right?

00:35:39 It was embarrassing.

00:35:40 Like, I literally was embarrassed

00:35:42 to be associated with this software, right?

00:35:43 I was like, we have to have software that you can be proud of.

00:35:45 It’s like, this is competitive with Reddit.

00:35:47 This is competitive with Twitter.

00:35:48 This is competitive with Facebook, right?

00:35:50 I would be proud to have the software on my site.

00:35:53 So that was the genesis of Discourse,

00:35:54 was feeling very strongly about there needs to be

00:35:59 a good solution for communities.

00:36:01 So that’s step one.

00:36:02 Genesis of an idea you feel super strongly about, right?

00:36:04 And then people galvanize around the idea.

00:36:06 Like, Joel was already super excited about the idea.

00:36:08 I was excited about the idea.

00:36:09 So with the forum software, I was posting on Twitter.

00:36:13 I had researched, as part of my research,

00:36:15 I start researching the problem, right?

00:36:16 And I found a game called Forum Wars,

00:36:19 which was a parody of forum.

00:36:21 It’s still very, very funny, of forum behavior,

00:36:23 circa, I would say, 2003.

00:36:26 It’s aged some, right?

00:36:27 Like, the behavior’s a little different in there of Twitter.

00:36:29 But it was awesome.

00:36:30 It was very funny.

00:36:31 And it was like a game.

00:36:32 It was like an RPG.

00:36:33 And it had a forum attached to it.

00:36:34 So it was like a game about forums with a forum attached.

00:36:37 I was like, this is awesome, right?

00:36:38 This is so cool.

00:36:39 And the founder of that company, or that project,

00:36:41 it wasn’t really a company, contacted me,

00:36:43 this guy Robin Ward from Toronto.

00:36:45 He said, hey, I saw you’ve been talking about forums.

00:36:47 And I really love that problem space.

00:36:49 He was like, I’d still love to build really good forum

00:36:51 software, because I don’t think anything out there’s any good.

00:36:53 And I was like, awesome.

00:36:54 At that point, I was like, we’re starting a company.

00:36:55 Because I couldn’t have whooshed for a better person

00:36:58 to walk through the door and say, I’m excited about this,

00:37:01 too.

00:37:01 Same thing with Joel, right?

00:37:02 I mean, Joel is a legend in the industry, right?

00:37:04 So when he walked through and said,

00:37:04 I’m excited about this problem, I was like, me too, man.

00:37:06 We can do this, right?

00:37:08 So that, to me, is the most important step.

00:37:10 It’s like, having an idea you’re super excited about,

00:37:12 and another person, a cofounder, right?

00:37:14 Because again, you get that dual leadership, right?

00:37:16 Am I making a bad decision?

00:37:19 Sometimes it’s nice to have checks of like,

00:37:21 is this a good idea?

00:37:22 I don’t know, right?

00:37:23 So those are the crucial seeds.

00:37:25 But then starting to build stuff,

00:37:27 whether it’s you programming or somebody else’s.

00:37:28 There is prototyping.

00:37:29 So there’s tons of research.

00:37:30 There’s tons of research, like, what’s out there that failed?

00:37:32 Because a lot of people look at the successes.

00:37:34 Oh, look at how successful X is.

00:37:36 Everybody looks at the successes.

00:37:37 Those are boring.

00:37:38 Show me the failures, because that is what’s interesting.

00:37:40 That’s where people were experimenting.

00:37:42 That’s where people were pushing.

00:37:43 And they failed, but they probably

00:37:45 failed for reasons that weren’t directly

00:37:47 about the quality of their idea, right?

00:37:50 So look at all the failures.

00:37:51 Don’t just look what everybody looks at, which is like, oh,

00:37:53 gosh, look at all these successful people.

00:37:54 Look at the failures.

00:37:55 Look at the things that didn’t work.

00:37:57 Research the entire field.

00:37:59 And so that’s the research that I was doing

00:38:01 that led me to Robin, right?

00:38:02 Was that.

00:38:03 And then when we, for example, when we did Stack Overflow,

00:38:07 we’re like, okay, well, I really like elements

00:38:08 of voting and dig and read it.

00:38:10 I like the Wikipedia, everything’s up to date.

00:38:12 Nothing is like an old tombstone

00:38:14 that has horrible out of date information.

00:38:16 We know that works.

00:38:17 Wikipedia is an amazing resource.

00:38:19 Blogging, the idea of ownership is so powerful, right?

00:38:22 Like, oh, I, Joe wrote this,

00:38:23 and look how good Joe’s answer is, right?

00:38:26 All these concepts were rolling together.

00:38:27 Researching all the things that were out there

00:38:29 that were working and why they were working

00:38:30 and trying to fold them into, again,

00:38:32 that Frankenstein’s monster of what Stack Overflow is.

00:38:35 And by the way, that wasn’t a free decision

00:38:37 because there’s still a ton of tension

00:38:38 in the Stack Overflow system.

00:38:40 There’s reasons people complain about Stack Overflow

00:38:42 because it’s so strict, right?

00:38:43 Why is it so strict?

00:38:44 Why are you guys always closing my questions?

00:38:46 It’s because there’s so much tension

00:38:47 that we built into the system

00:38:49 around trying to get good, good results out of the system.

00:38:51 And it’s not a free.

00:38:56 That stuff doesn’t come for free, right?

00:38:57 It’s not like we, we all have perfect answers

00:38:59 and nobody will have to get their feelings heard

00:39:02 or nobody will have to get downvoted.

00:39:04 It doesn’t work that way, right?

00:39:06 So this is an interesting point and a small tangent.

00:39:09 You write about anxiety.

00:39:12 So I’ve posted a lot of questions

00:39:14 and written answers on Stack Overflow.

00:39:16 On the question side, you usually go to

00:39:18 something very specific to something I’m working on.

00:39:21 And this is something you talk about

00:39:22 that really the goal of Stack Overflow isn’t about,

00:39:26 is to write a question that’s not about you,

00:39:29 it’s about the question that will help

00:39:33 the community in the future.

00:39:35 Right, but that’s a tough sell, right?

00:39:37 Because people are like, well,

00:39:39 I don’t really care about the community.

00:39:40 What I care about is my problem.

00:39:41 And that’s fair, right?

00:39:43 It’s sort of that, again, that tension,

00:39:44 that balancing act of we wanna help you,

00:39:46 but we also wanna help everybody that comes behind you.

00:39:48 The long line of people are gonna come up and say,

00:39:49 oh, I kinda have that problem too, right?

00:39:52 And if nobody’s ever gonna come up and say,

00:39:54 I have this problem too,

00:39:54 then that question shouldn’t exist on Stack Overflow

00:39:57 because the question is too specific.

00:39:58 And even that’s tension, right?

00:40:00 How do you judge that?

00:40:00 How do you know that nobody’s ever gonna have

00:40:02 this particular question again?

00:40:04 So there’s a lot of tension in the system.

00:40:06 Do you think that anxiety of asking the question,

00:40:09 the anxiety of answering,

00:40:11 that tension is inherent to programmers,

00:40:14 is inherent to this kind of process?

00:40:16 Or can it be improved?

00:40:20 Can it be happy land

00:40:22 where that tension is not quite so harsh?

00:40:26 I don’t think Stack Overflow

00:40:28 can totally change the way it works.

00:40:30 One thing they are working on finally

00:40:31 is the ask page had not changed since 2011.

00:40:35 I’m still kind of bitter about this

00:40:36 because I feel like you have a Q&A system

00:40:39 and what are the core pages in a Q&A system?

00:40:41 Well, first of all, the question,

00:40:42 all the answers and also the ask page,

00:40:43 particularly when you’re a new user

00:40:45 or someone trying to ask a question,

00:40:46 that’s the point at which you need the most help.

00:40:48 And we just didn’t adapt with the times.

00:40:50 But the good news is they’re working on this,

00:40:52 from what I understand,

00:40:53 and it’s gonna be a more wizard based format.

00:40:55 And you could envision a world

00:40:56 where as part of this wizard based program,

00:40:58 when you’re asking questions,

00:40:59 okay, come up with a good title,

00:41:01 what are good words to put in the title?

00:41:02 One word that’s not good to put in the title

00:41:04 is problem, for example.

00:41:05 I have a problem.

00:41:06 Oh, you have a problem.

00:41:07 Okay, a problem, that’s great.

00:41:10 You need specifics.

00:41:11 So it’s trying to help you make a good question title,

00:41:13 for example, that step will be broken out, all that stuff.

00:41:17 But one of those steps in that wizard of asking

00:41:19 could say, hey, I’m a little nervous.

00:41:21 I’ve never done this before.

00:41:22 Can you put me in a queue for special mentoring?

00:41:26 You could opt in to a special mentor.

00:41:27 I think that would be fantastic.

00:41:28 I don’t have any objection to that at all

00:41:31 in terms of being an opt in system.

00:41:32 Because there are people that are like,

00:41:33 I just wanna help them.

00:41:35 I wanna help a person no matter what.

00:41:36 I wanna go above and beyond.

00:41:37 I wanna spend hours with this person.

00:41:41 It depends what their goals are.

00:41:42 It’s a great idea.

00:41:43 Who am I to judge?

00:41:44 So that’s fine.

00:41:45 It’s not precluded from happening.

00:41:47 But there’s a certain big city ethos

00:41:49 that we started with.

00:41:49 Like, look, we’re in New York City.

00:41:51 You don’t come to New York City

00:41:52 and expect them to be, oh, welcome to the city, Joe.

00:41:54 How’s it going?

00:41:55 Come on in.

00:41:56 Let me show you around.

00:41:57 That’s not how New York City works.

00:42:01 Again, New York City has a reputation for being rude,

00:42:03 which I actually don’t think it is,

00:42:04 having been there fairly recently.

00:42:05 It’s not rude.

00:42:06 It’s just like going about their business.

00:42:07 Like, look, I have things to do.

00:42:08 I’m busy.

00:42:09 I’m a busy professional, as are you.

00:42:11 And since you’re a busy professional,

00:42:13 certainly when you ask a question,

00:42:14 you’re gonna ask the best possible question.

00:42:16 Because you’re a busy professional

00:42:18 and you would not accept anything less

00:42:20 than a very well written question

00:42:21 with a lot of detail about why you’re doing it,

00:42:23 what you’re doing, what you researched,

00:42:25 what you found,

00:42:26 because you’re a professional like me.

00:42:28 And this rubs people sometimes the wrong way.

00:42:31 And I don’t think it’s wrong to say,

00:42:32 look, I don’t want that experience.

00:42:33 I want just a more chill place for beginners.

00:42:37 And I still think Stack Overflow

00:42:39 is not, was never designed for beginners, right?

00:42:41 There’s this misconception that,

00:42:43 even Joel says sometimes,

00:42:44 oh yeah, Stack Overflow for beginners.

00:42:46 And I think if you’re a prodigy, it can be.

00:42:48 Right.

00:42:49 But for the most part, not.

00:42:50 But that’s not really representative, right?

00:42:51 Like, I think as a beginner,

00:42:53 you want a totally different set of tools.

00:42:55 You want like live screen sharing, live chat.

00:42:58 You want access to resources.

00:42:59 You want a playground,

00:43:00 like a playground you can experiment in

00:43:02 and like test and all this stuff

00:43:04 that we just don’t give people

00:43:05 because that was never really the audience

00:43:07 that we were designing Stack Overflow for.

00:43:09 That doesn’t mean it’s wrong.

00:43:10 And I think it would be awesome

00:43:11 if there was a site like that on the internet,

00:43:13 or if Stack Overflow said,

00:43:14 hey, you know, we’re gonna start doing this.

00:43:15 That’s fine too.

00:43:16 You know, I’m not there.

00:43:17 I’m not making those decisions.

00:43:18 But I do think the pressure,

00:43:20 the tension that you described is there for people to be,

00:43:22 look, I’m a little nervous

00:43:24 because I know I gotta do my best work, right?

00:43:26 The other one is something you talk about,

00:43:28 which is also really interesting to me,

00:43:30 is duplicate questions or it’s a really difficult problem

00:43:37 that you highlight.

00:43:38 It’s super hard.

00:43:39 Like you could take one little topic

00:43:41 and you could probably write 10, 20, 30 ways

00:43:44 of asking about that topic

00:43:46 and there will be all different.

00:43:48 I don’t know if there should be one page

00:43:50 that answers all of it.

00:43:51 Is there a way that Stack Overflow can help disambiguate,

00:43:56 like separate these duplicate questions

00:44:01 or connect them together?

00:44:02 Or is it a totally hopeless, difficult, impossible task?

00:44:06 I think it’s a very, very hard computer science problem.

00:44:08 And partly because people are very good

00:44:10 at using completely different words.

00:44:11 It always amazed me on Stack Overflow.

00:44:13 You’d have two questions that were functionally identical

00:44:15 and one question had like zero words in common

00:44:17 with the other question.

00:44:18 Like, oh my God, from a computer science perspective,

00:44:20 how do you even begin to solve that?

00:44:22 And it happens all the time.

00:44:24 People are super good at this, right?

00:44:26 Accidentally at asking the same thing

00:44:28 in like 10, 20 different ways.

00:44:31 And the other complexity is we want some

00:44:32 of those duplicates to exist

00:44:33 because if there’s five versions with different words,

00:44:36 have those five versions point

00:44:37 to the one centralized answer, right?

00:44:39 It’s like, okay, this is a duplicate, no worries.

00:44:41 Here’s the answer that you wanted over here

00:44:43 on the prime example that we want to have,

00:44:48 rather than having 10 copies of the question and the answer.

00:44:50 Because if you have 10 copies of the question and answer,

00:44:52 this also devalues the reputation system,

00:44:54 which programmers hate, as I previously mentioned.

00:44:56 You’re getting reputation for an answer

00:44:58 that somebody else already gave.

00:44:59 It’s like, well, it’s an answer,

00:45:00 but somebody else already gave that answer.

00:45:02 So why are you getting reputation for the same answer

00:45:04 as the other guy who gave it four years ago?

00:45:06 People get offended by that, right?

00:45:07 So the reputation system itself adds tension to the system

00:45:11 in that the people who have a lot of reputation

00:45:14 become very incentivized to enforce the reputation system.

00:45:17 And for the most part, that’s good.

00:45:18 I know it sounds weird, but for most parts,

00:45:20 like look, strict systems, I think to use Stack Overflow,

00:45:23 you have to have the idea that, OK, strict systems ultimately

00:45:26 work better.

00:45:26 And I do think in programming, you’re

00:45:28 familiar with loose typing versus strict typing, right?

00:45:31 The idea that you can declare a variable,

00:45:33 not declare a variable, rather, just start using a variable.

00:45:34 And OK, I see it’s implicitly an integer.

00:45:36 Bam, awesome.

00:45:37 Duck equals 5.

00:45:38 Well, duck is now an integer of 5, right?

00:45:40 And you’re like, cool, awesome, simpler, right?

00:45:42 Why would I want to worry about typing?

00:45:43 And for a long time, in the Ruby community,

00:45:45 they’re like, yeah, this is awesome.

00:45:46 You just do a bunch of unit testing,

00:45:48 which is testing your program’s validity after the fact

00:45:50 to catch any bugs that strict typing of variables

00:45:54 would have caught.

00:45:55 And now you have this thing called

00:45:56 TypeScript for Microsoft from the guy who

00:45:58 built C Sharp Anders, who’s one of the greatest

00:46:01 minds in software development, right,

00:46:02 like in terms of language design.

00:46:04 And says, no, no, no, we want to bolt on a strict type

00:46:06 system to JavaScript because it makes things better.

00:46:08 And now everybody’s like, oh my god, we deployed TypeScript

00:46:11 and found 50 latent bugs that we didn’t know about, right?

00:46:14 Like, this is super common.

00:46:15 So I think there is a truth in programming

00:46:19 that strictness, it’s not the goal.

00:46:22 We’re not saying be super strict because strictness is correct.

00:46:25 No, it’s no, no.

00:46:26 Strictness produces better results.

00:46:28 That’s what I’m saying, right?

00:46:29 So strict typing of variables, I would

00:46:32 say you almost universally have consensus now

00:46:33 is basically correct.

00:46:35 Should be that way in every language, right?

00:46:37 Duck equals five should generate an error

00:46:39 because no, you didn’t declare.

00:46:40 You didn’t tell me that duck was an integer, right?

00:46:42 That’s a bug, right?

00:46:43 Or maybe you mistyped.

00:46:44 You typed deck instead of duck, right?

00:46:46 You never know.

00:46:47 This happens all the time, right?

00:46:48 So with that in mind, I will say that the strictness

00:46:51 of the system is correct.

00:46:52 Now, that doesn’t mean cruel.

00:46:53 That doesn’t mean mean.

00:46:55 That doesn’t mean angry.

00:46:56 It just means strict, OK?

00:46:57 So I think where there’s misunderstanding

00:46:59 is people get cranky, right?

00:47:00 Like, another question you asked is like, why are programmers

00:47:03 kind of mean sometimes?

00:47:05 Well, who do programmers work with all day long?

00:47:07 So I have a theory that if you’re at a job

00:47:10 and you work with assholes all day long,

00:47:12 what do you eventually become?

00:47:14 An asshole.

00:47:15 An asshole.

00:47:15 And what is the computer except the world’s biggest asshole?

00:47:19 Because the computer has no time for your bullshit.

00:47:21 The computer, the minute you make a mistake,

00:47:24 everything is crashing down, right?

00:47:25 One semicolon has crashed space missions, right?

00:47:28 So that’s normal.

00:47:29 So you begin to internalize that.

00:47:30 You begin to think, oh, my coworker, the computer,

00:47:34 is super strict and kind of a jerk about everything.

00:47:37 So that’s kind of how I’m going to be.

00:47:40 Because I work with this computer,

00:47:41 and I have to exceed to its terms on everything.

00:47:44 So therefore, you start to absorb that.

00:47:46 You start to think, oh, well, being really strict arbitrarily

00:47:49 is really good.

00:47:50 An error of error code 56249 is a completely good error message

00:47:54 because that’s what the computer gave me, right?

00:47:56 So you kind of forget to be a person at some level.

00:47:59 And you know how they say great detectives internalize

00:48:02 criminals and kind of are criminals themselves,

00:48:04 like this trope of the master detective

00:48:06 is good because he can think like the criminal.

00:48:08 Well, I do think that’s true of programmers.

00:48:10 Really good programmers think like the computer

00:48:12 because that’s their job.

00:48:14 But if you internalize it too much, you become the computer.

00:48:17 You kind of become a jerk to everybody

00:48:19 because that’s what you’ve internalized.

00:48:21 You’re almost not a jerk, but you have no patience

00:48:24 for a lack of strictness, as you said.

00:48:26 It’s not out of a sense of meanness.

00:48:27 It’s accidental.

00:48:28 But I do believe it’s an occupational hazard

00:48:30 of being a programmer is you start

00:48:32 to behave like the computer.

00:48:33 You’re very unforgiving.

00:48:34 You’re very terse.

00:48:35 You’re very, oh, wrong, incorrect, move on.

00:48:38 It’s like, well, can you help me?

00:48:40 What could I do to fix?

00:48:41 No, wrong, next question.

00:48:44 Like, that’s normal for the computer.

00:48:46 Just fail, next.

00:48:49 I don’t know if you remember in Saturday Night Live,

00:48:51 in the 90s, they had this character who was an IT guy.

00:48:54 The move guy.

00:48:55 Move.

00:48:56 Move.

00:48:56 Was that Jimmy Fallon?

00:48:58 No.

00:48:58 No.

00:48:59 Who played him?

00:49:01 OK, yeah, I remember.

00:49:02 Move.

00:49:02 Right.

00:49:03 He had no patience for it.

00:49:04 Might have been Mad TV, actually.

00:49:05 Wasn’t it Mad TV?

00:49:06 Might have been.

00:49:07 But anyway, that’s always been the perception.

00:49:10 You start to behave like the computer.

00:49:12 It’s like, oh, you’re wrong, out of the way, you know?

00:49:14 You’ve written so many blog posts about programming,

00:49:17 about programs, programming, programmers.

00:49:22 What do you think makes a good, let’s start with,

00:49:26 what makes a good solo programmer?

00:49:29 Well, I don’t think you should be a solo programmer.

00:49:31 I think to be a good solo programmer,

00:49:33 it’s kind of like what I talked about, well, not on Mike,

00:49:35 but one of the things John Carmack, one of the best

00:49:39 points he makes in the book Masters of Doom, which

00:49:41 is a fantastic book, and anybody listening to this

00:49:43 who hasn’t read it, please read it.

00:49:44 It’s such a great book, is that at the time,

00:49:47 they were working on stuff like Wolfenstein and Doom.

00:49:50 They didn’t have the resources that we have today.

00:49:52 They didn’t have Stack Overflow.

00:49:53 They didn’t have Wikipedia.

00:49:54 They didn’t have discourse forums.

00:49:56 They didn’t have places to go to get people to help them.

00:50:00 They had to work on their own.

00:50:01 And that’s why it took a genius like Carmack

00:50:03 to do this stuff, because you had

00:50:05 to be a genius to invent from first principles.

00:50:07 A lot of the stuff he was like, the hacks he was coming up

00:50:09 with were genius, genius level stuff.

00:50:11 But you don’t need to be a genius anymore,

00:50:13 and that means not working by yourself.

00:50:15 You have to be good at researching stuff online.

00:50:17 You have to be good at asking questions, really good

00:50:19 questions that are really well researched, which implies,

00:50:21 oh, I went out and researched for three hours

00:50:23 before I wrote these questions.

00:50:24 That’s what you should be doing, because that’s

00:50:26 what’s going to make you good.

00:50:28 To me, this is the big difference

00:50:29 between programming in the 80s versus programming today,

00:50:32 is you kind of had to be by yourself back then.

00:50:35 Where would you go for answers?

00:50:36 I remember in the early days when

00:50:38 I was learning Visual Basic for Windows,

00:50:41 I would call the Microsoft Helpline on the phone

00:50:44 when I had programming.

00:50:45 Because I was like, I don’t know what to do.

00:50:47 So I would go and call, and they had these huge phone banks.

00:50:49 And I’m like, can you imagine how alien that is now?

00:50:51 Who would do that?

00:50:52 That’s crazy.

00:50:53 So there was just nowhere else to go when you got stuck.

00:50:57 I had the books that came with it.

00:50:59 I read those, studied those religiously.

00:51:01 I just saw a post from Steve Sanofsky

00:51:03 that said the C++ version 7 came with 10,000 pages

00:51:08 of written material.

00:51:10 Because where else were you going to figure that stuff out?

00:51:13 Go to the library?

00:51:14 I mean, you didn’t have Wikipedia.

00:51:16 You didn’t have Reddit.

00:51:17 You didn’t have anywhere to go to answer these questions.

00:51:20 So you’ve talked about, through the years,

00:51:24 basically not having an ego and not

00:51:26 thinking that you’re the best programmer in the world.

00:51:29 So always kind of just looking to improve,

00:51:34 to become a better programmer than you were yesterday.

00:51:36 So how have you changed as a programmer

00:51:39 and as a thinker, designer around programming

00:51:43 over the past, what is it, 15 years, really,

00:51:47 of being a public figure?

00:51:48 I would say the big insight that I had is, eventually,

00:51:51 as a programmer, you have to stop writing code

00:51:54 to be effective, which is kind of disturbing.

00:51:56 Because you really love it.

00:51:58 But you realize being effective at programming,

00:52:01 at programming in the general sense,

00:52:03 doesn’t mean writing code.

00:52:05 And a lot of times, you can be much more successful by not

00:52:07 writing code and writing code in terms of just solving

00:52:09 the problems you have, essentially hiring people

00:52:11 that are really good and setting them free

00:52:13 and giving them basic direction on strategy and stuff.

00:52:18 Because a lot of the problems you encounter

00:52:19 aren’t necessarily solved through really gnarly code.

00:52:22 They’re solved by conceptual solutions, which can then

00:52:25 be turned into code.

00:52:26 But are you even solving the right problem?

00:52:29 So I would say, for me, the main insight I have

00:52:32 is, to succeed as a programmer, you eventually

00:52:36 kind of stop writing code.

00:52:37 That’s going to sound discouraging, probably,

00:52:39 to people hearing.

00:52:39 But I don’t mean it that way.

00:52:40 What I mean is that you’re coding

00:52:42 at a higher level language.

00:52:43 Eventually, like, OK, so we’re coding in assembly language.

00:52:45 That’s the beginning, right?

00:52:46 You’re hardcoded to the architecture.

00:52:48 Then you have stuff like C, where it’s like, wow,

00:52:50 we can abstract across the architecture.

00:52:52 We can write code.

00:52:52 I can then compile that code for ARM

00:52:54 or whatever x86 or whatever else is out there.

00:52:58 And then even higher level than that,

00:53:00 you’re looking at Python, Ruby, interpreted languages.

00:53:03 And then, to me, as a programmer,

00:53:04 I’m like, OK, I want to go even higher.

00:53:06 I want to go higher than that.

00:53:07 How do I abstract higher than the language?

00:53:08 It’s like, well, you abstract in spoken language

00:53:11 and written language, right?

00:53:12 You’re sort of inspiring people to get things done,

00:53:14 giving them guidance, like, what if we did this?

00:53:16 What if we did this?

00:53:17 You’re writing in the highest level language

00:53:19 that there is, which is, for me, English,

00:53:21 whatever your spoken language is.

00:53:23 So it’s all about being effective, right?

00:53:25 And I think Patrick McKenzie, patio11 on Hacker News

00:53:31 and works at Stripe, has a great post about this,

00:53:33 of how calling yourself a programmer

00:53:35 is a career limiting move at some level

00:53:38 once you get far enough from your career.

00:53:39 And I really believe that.

00:53:40 And again, I apologize.

00:53:41 This is sound discouraging.

00:53:43 I don’t mean it to be, but he’s so right.

00:53:45 Because all the stuff that goes on around the code,

00:53:47 like the people, that’s another thing,

00:53:49 if you look at my early blog entries, is about, wow,

00:53:52 programming is about people more than it’s

00:53:54 about code, which doesn’t really make sense.

00:53:56 But it’s about, can these people even get along together?

00:53:59 Can they understand each other?

00:54:00 Can you even explain to me what it is you’re working on?

00:54:03 Are you solving the right problem?

00:54:04 PeopleWare, another classic programming book,

00:54:06 which, again, up there with Code Complete,

00:54:08 please read PeopleWare.

00:54:09 It’s that software is people.

00:54:11 People are the software, first and foremost.

00:54:13 So a lot of the skills that I was working on early

00:54:15 in the blog were about figuring out the people

00:54:18 parts of programming, which were the harder parts.

00:54:20 The hard part of programming, once you

00:54:21 get a certain skill level in programming,

00:54:23 you can pretty much solve any reasonable problem that’s

00:54:25 put in front of you.

00:54:26 You’re not writing algorithms from scratch.

00:54:28 That just doesn’t happen.

00:54:29 So any sort of reasonable problem put in front of you,

00:54:31 you’re going to be able to solve.

00:54:32 But what you can’t solve is, our manager is a total jerk.

00:54:36 You cannot solve that with code.

00:54:38 That is not a code solvable problem.

00:54:40 And yet, that will cripple you way more than, oh, we

00:54:44 had to use this stupid framework I don’t like,

00:54:45 or Sam keeps writing bad code that I hate,

00:54:49 or Dave is off there in the wilderness writing

00:54:52 God knows what.

00:54:53 These are not your problems.

00:54:54 Your problem is your manager or a co worker

00:54:56 is so toxic to everybody else in your team

00:54:58 that nobody can get anything done,

00:55:00 because everybody’s so stressed out and freaked out.

00:55:02 These are the problems that you have to attack.

00:55:04 Absolutely.

00:55:05 And so as you go to these higher level abstractions,

00:55:07 as you’ve developed as a programmer

00:55:09 to higher and higher level abstractions

00:55:10 and go into natural language, you’re

00:55:12 also the guy who preached building it, diving in

00:55:17 and doing it, and learn by doing.

00:55:21 Yes.

00:55:22 Do you worry that as you get to higher and higher level

00:55:29 abstractions, you lose track of the lower level of just

00:55:34 building?

00:55:35 Do you worry about that, even not maybe now,

00:55:38 but 10 years from now, 20 years from now?

00:55:41 Well, no.

00:55:42 I mean, there is always that paranoia around, oh, gosh,

00:55:44 I don’t feel it’s valuable since I’m not writing code.

00:55:46 But for me, when we started the discourse project,

00:55:48 it was Ruby, which I didn’t really know Ruby.

00:55:50 I mean, as you pointed out, and this

00:55:51 is another valuable observation in Stack Overflow,

00:55:53 you can be super proficient in, for example, C Sharp,

00:55:56 which I was working in.

00:55:56 That’s what we built Stack Overflow in and still

00:55:58 is written in.

00:55:59 And then switch to Ruby, and you’re a newbie again.

00:56:01 But you have the framework.

00:56:03 I know what a for loop is.

00:56:04 I know what recursion is.

00:56:05 I know what a stack trace is.

00:56:10 I have all the fundamental concepts to be a programmer.

00:56:12 I just don’t know Ruby.

00:56:13 So I’m still on a higher level.

00:56:14 I’m not like a beginner beginner, like you’re saying.

00:56:16 I’m just like, I need to apply my programming concepts I already

00:56:19 know to Ruby.

00:56:20 Well, so there’s a question that’s really interesting.

00:56:23 So looking at Ruby, how do you go about learning enough

00:56:26 that your intuition can be applied, carried over?

00:56:29 That’s what I was trying to get to.

00:56:30 It’s like what I realized, particularly when I started

00:56:31 with just me and Robin, I realized if I bother Robin,

00:56:34 I am now costing us productivity.

00:56:37 Every time I go to Robin, rather than building our first alpha

00:56:42 version of discourse, he’s now answering my stupid questions

00:56:45 about Ruby.

00:56:46 Is that a good use of his time?

00:56:47 Is that a good use of my time?

00:56:49 And the answer to both of those was resoundingly no.

00:56:53 We were getting to an alpha, and it was pretty much just,

00:56:55 OK, we’ll hire more programmers.

00:56:56 We eventually hired Neil, and then eventually Sam,

00:57:00 who came in as a cofounder.

00:57:02 Actually, it was Sam first, then Neil later.

00:57:05 But the answer to the problem is just

00:57:06 hire other competent programmers.

00:57:08 Now I shall pull myself up by my bootstraps

00:57:11 and learn Ruby.

00:57:12 But at some point, writing code becomes a liability to you

00:57:15 in terms of getting things done.

00:57:17 There’s so many other things that

00:57:18 go on in the project, like building the prototype.

00:57:20 You mentioned, well, how do you, if you’re not writing code,

00:57:23 how does everybody keep focus on what are we building?

00:57:25 Well, first, basic mockups and research.

00:57:28 What do we even want to build?

00:57:30 There’s a little bit of that that goes on.

00:57:31 But then very quickly, you get to the prototype stage.

00:57:32 Like, build a prototype.

00:57:33 Let’s iterate on the prototype really, really rapidly.

00:57:35 And that’s what we do with discourse.

00:57:36 And that’s what we demoed to get our seed funding

00:57:38 for discourse was the alpha version of discourse

00:57:42 that we had running and ready to go.

00:57:43 And it was very, it was bad.

00:57:45 I mean, it was, I’ll just tell you it was bad.

00:57:47 We have screenshots of it.

00:57:48 I’m just embarrassed to look at it now.

00:57:50 But it was the prototype.

00:57:51 We were figuring out what’s working, what’s not working.

00:57:53 Because there’s such a broad gap between the way

00:57:58 you think things will work in your mind or even on paper

00:58:00 and the way they work once you sit and live in the software,

00:58:03 like actually spend time living and breathing in software,

00:58:05 so different.

00:58:06 So my philosophy is get to a prototype.

00:58:10 And then what you’re really optimizing

00:58:12 for is speed of iteration, like how you can turn the crank.

00:58:14 How quickly can we iterate?

00:58:16 That’s the absolutely critical metric

00:58:18 of any software project.

00:58:19 And I had a tweet recently that people liked.

00:58:20 And I totally, this is so fundamental to what I do,

00:58:23 is like if you want to measure the core competency of any

00:58:26 software tech company, it’s the speed at which somebody

00:58:28 can say, hey, we really need this word in the product.

00:58:31 Change this word, right?

00:58:32 Because it will be more clear to the user.

00:58:34 Like, instead of respond, it’s reply or something.

00:58:36 But there’s some, from the conception of that idea

00:58:39 to how quickly that single word can be changed in your software

00:58:42 and rolled out to users, that is your life cycle.

00:58:44 That’s your health, your heartbeat.

00:58:47 If your heartbeat is like super slow, you’re basically dead.

00:58:51 No, seriously.

00:58:52 Like, if it takes two weeks or even a month

00:58:54 to get that single word changed, everybody’s like, oh my god,

00:58:56 this is a great idea.

00:58:57 That word is so much clearer.

00:58:59 I’m talking about like a super, like everybody’s

00:59:00 on board for this change.

00:59:01 It’s not like, let’s just change a word because we’re bored.

00:59:03 It’s like, this is an awesome change.

00:59:05 And then it takes months to roll out.

00:59:07 It’s like, well, you’re dead.

00:59:08 You can’t iterate.

00:59:09 You can’t, how are you going to do anything, right?

00:59:12 So anyway, about the heartbeat, it’s

00:59:13 like, get the prototype and then iterate on it.

00:59:15 That’s what I view as the central tenet of modern software

00:59:19 development.

00:59:20 That’s fascinating that you put it that way.

00:59:22 So I work and I build autonomous vehicles.

00:59:24 And when you look at what, maybe compare Tesla

00:59:28 to most other automakers, the heart beat for Tesla

00:59:34 is literally days now in terms of they can over the air

00:59:38 deploy software updates to all their vehicles, which

00:59:41 is markedly different than every other automaker, which takes

00:59:46 years to update a piece of software.

00:59:49 And that’s reflected in everything

00:59:52 that’s the final product.

00:59:54 That’s reflected in really how slowly they

00:59:57 adapt to the times.

00:59:58 And to be clear, I’m not saying being a hummingbird

00:59:59 is the goal either.

01:00:00 It’s like, you don’t want a heartbeat that’s like so fast.

01:00:02 It’s like you’re just freaking out.

01:00:04 But it is a measure of health.

01:00:05 You should have a healthy heartbeat.

01:00:07 It’s up to people listening to decide what that means.

01:00:09 But it has to be healthy.

01:00:10 It has to be reasonable.

01:00:11 Because otherwise, you’re just going

01:00:12 to be frustrated because that’s how you build software.

01:00:15 You make mistakes.

01:00:15 You roll it out.

01:00:16 You live with it.

01:00:17 You see what it feels like and say, oh, God,

01:00:19 that was a terrible idea.

01:00:20 Oh, my gosh, this could be even better if we did Y, right?

01:00:22 You turn the crank.

01:00:23 And then the more you do that, the faster

01:00:25 you get ahead of your competitors ultimately.

01:00:28 It’s rate of change, right?

01:00:29 Delta V, right?

01:00:30 How fast are you moving?

01:00:32 Well, within a year, you’re going to be miles away

01:00:34 by the time they catch up with you, right?

01:00:36 That’s the way it works.

01:00:37 And plus, as a software developer and user,

01:00:40 I love software that’s constantly changing.

01:00:42 Because I don’t understand people who get super pissed off

01:00:45 when like, oh, they changed the software on me.

01:00:47 How dare they?

01:00:47 I’m like, yes, change the software.

01:00:49 Change it all the time, man.

01:00:51 That’s what makes this stuff great

01:00:52 is that it can be changed so rapidly

01:00:55 and become something that is greater than it is now.

01:00:58 Now, granted, there are some changes that suck.

01:01:00 I admit.

01:01:01 I’ve seen it many times.

01:01:02 But in general, that’s what makes software cool, right?

01:01:05 It’s that it is so malleable.

01:01:06 Fighting that is weird to me.

01:01:08 Because it’s like, well, you’re fighting

01:01:10 the essence of the thing that you’re building.

01:01:12 That doesn’t make sense.

01:01:13 You want to really embrace that.

01:01:14 Not to be a hummingbird, but embrace it

01:01:16 to a healthy cycle of your heartbeat, right?

01:01:18 So you talk about that people really don’t change.

01:01:21 It’s true.

01:01:22 That’s why probably a lot of the stuff you write about in your blog

01:01:25 probably will remain true.

01:01:27 Well, there’s a flip side of the coin.

01:01:28 People don’t change.

01:01:29 Like, investing and understanding people

01:01:31 is like learning Unix in 1970.

01:01:34 Because nothing has changed, right?

01:01:36 All those things you’ve learned about people

01:01:38 will still be valid 34 years from now.

01:01:40 Whereas if you learn the latest JavaScript framework,

01:01:43 that’s going to be good for like two years, right?

01:01:45 Exactly.

01:01:46 But if you look at the future of programming,

01:01:49 so there’s a people component, but there’s also

01:01:52 the technology itself.

01:01:55 What do you see as the future of programming?

01:01:57 Will it change significantly, or as far as you can tell,

01:02:01 people are ultimately programming,

01:02:04 and so it’s not something that you foresee changing

01:02:08 in any fundamental way?

01:02:10 Well, you’ve got to go look back on sort

01:02:12 of the basics of programming.

01:02:14 And one of things that always shocked me

01:02:15 is like source control.

01:02:16 Like, I didn’t learn anything about source control.

01:02:18 Granted, I graduated from college in 1992.

01:02:22 But I remember hearing from people as late as like 1998,

01:02:25 1999, like even maybe today, they’re

01:02:27 not learning source control.

01:02:28 And to me, it’s like, well, how can you not

01:02:30 learn source control?

01:02:31 That is so fundamental to working with other programmers,

01:02:34 working in a way that you don’t lose your work.

01:02:36 Just basic software, the literal bedrock of software

01:02:39 development is source control.

01:02:41 Now, you compare it today, like GitHub, right?

01:02:42 Like Microsoft bought GitHub, which

01:02:44 I think was an incredibly smart acquisition move

01:02:46 on their part.

01:02:47 Now they have anybody who wants reasonable source control

01:02:49 to go sign up on GitHub.

01:02:50 It’s all set up for you, right?

01:02:52 There’s tons of walkthroughs, tons of tutorials.

01:02:55 So from the concept of like, has programming

01:02:57 advanced from, say, 1999, it’s like, well, hell, we have GitHub.

01:03:00 I mean, my god, yes, right?

01:03:01 Like, it’s massively advanced over what it was.

01:03:04 Now, as to whether programming is significantly different,

01:03:08 I’m going to say no.

01:03:09 But I think the baseline of what we view as fundamentals

01:03:14 will continue to go up and actually get better,

01:03:16 like source control.

01:03:17 That’s one of the fundamentals that has gotten hundreds

01:03:20 of orders of magnitude better than it was 10, 20 years ago.

01:03:23 So those are the fundamentals.

01:03:25 Let me introduce two things that maybe you can comment on.

01:03:28 So one is mobile phones.

01:03:31 So that could fundamentally transform what programming is,

01:03:37 or maybe not.

01:03:38 Maybe you can comment on that.

01:03:39 And the other one is artificial intelligence,

01:03:41 which promises to, in some ways, to do

01:03:46 some of the programming for you is one way to think about it.

01:03:49 So it’s really what a programmer is,

01:03:52 is using the intelligence that’s inside your skull

01:03:55 to do something useful.

01:03:57 The hope with artificial intelligence

01:03:59 is that it does some of the useful parts for you

01:04:02 where you don’t have to think about it.

01:04:03 So do you see smartphones, the fact that everybody has one,

01:04:07 and they’re getting more and more powerful as potentially

01:04:10 changing programming?

01:04:11 And do you see AI as potentially changing programming?

01:04:14 OK, so that’s good.

01:04:15 So smartphones have definitely changed.

01:04:17 I mean, since, I guess, 2010 is when they really

01:04:20 started getting super popular.

01:04:21 I mean, in the last eight years, the world

01:04:24 has literally changed, right?

01:04:25 Everybody carries a computer around, and that’s normal.

01:04:28 I mean, that is such a huge change in society.

01:04:30 I think we’re still dealing with a lot

01:04:32 of the positive and negative ramifications of that, right?

01:04:35 Everybody’s connected all the time.

01:04:36 Everybody’s on the computer all the time.

01:04:37 That was my dream world as a geek, right?

01:04:40 But it’s like, be careful what you ask for, right?

01:04:42 Like, wow, now everybody has a computer.

01:04:44 It’s not quite the utopia that we thought it would be, right?

01:04:47 Computers can be used for a lot of stuff that’s not necessarily

01:04:49 great.

01:04:51 So to me, that’s the central focus of the smartphone,

01:04:53 is just that it puts a computer in front of everyone.

01:04:55 Granted, a small, touch screen, smallish,

01:04:57 touch screen computer.

01:04:59 But as for programming, I don’t know.

01:05:00 I don’t think that I’ve kind of, over time,

01:05:03 come to subscribe to the Unix view of the world

01:05:05 when it comes to programming.

01:05:06 You want to teach these basic command line things,

01:05:09 and that is just what programming

01:05:11 is going to be for, I think, a long, long time.

01:05:14 I don’t think there’s any magical visual programming

01:05:17 that’s going to happen.

01:05:20 I don’t know.

01:05:20 I’ve, over time, have become a believer in that Unix

01:05:23 philosophy of just, you know, they kind of had

01:05:25 to write with Unix.

01:05:26 That’s going to be the way it is for a long, long time.

01:05:28 And we’ll continue to, like I said, raise the baseline.

01:05:31 The tools will get better.

01:05:32 It’ll get simpler.

01:05:33 But it’s still fundamentally going

01:05:34 to be command line tools, fancy IDEs.

01:05:37 That’s kind of it for the foreseeable future.

01:05:39 I’m not seeing any visual programming stuff

01:05:41 on the horizon.

01:05:42 Because you kind of think, like, what

01:05:43 do you do on a smartphone that will be directly

01:05:45 analogous to programming?

01:05:46 Like, I’m trying to think, right?

01:05:48 And there’s really not much.

01:05:52 So not necessarily analogous to programming,

01:05:55 but the kind of things that, the kind of programs

01:06:01 you would need to write might need to be very different.

01:06:07 Yeah.

01:06:08 And the kind of languages.

01:06:09 I mean, but I probably also subscribe to the same,

01:06:12 just because everything in this world

01:06:14 might be written in JavaScript.

01:06:16 Oh, yeah.

01:06:16 That’s already happening.

01:06:17 I mean, discourse is a bet.

01:06:18 Discourse itself, JavaScript, is another bet

01:06:20 on that side of the table.

01:06:21 And I still try and believe in that.

01:06:23 So I would say smartphones have mostly a cultural shift more

01:06:26 than a programming shift.

01:06:27 Now, your other question was about artificial intelligence

01:06:30 and sort of devices predicting what you’re going to do.

01:06:32 And I do think there’s some strength to that.

01:06:34 I think artificial intelligence is kind of overselling it

01:06:37 in terms of what it’s doing.

01:06:37 It’s more like, people are predictable, right?

01:06:39 People do the same things.

01:06:41 Let me give you an example.

01:06:43 One check we put in a discourse that’s

01:06:44 been a lot of big commercial websites is,

01:06:48 say you log in from New York City now.

01:06:51 And then an hour later, you log in from San Francisco.

01:06:54 It’s like, well, hmm, that’s interesting.

01:06:56 How did you get from New York to San Francisco in one hour?

01:06:59 So at that point, you’re like, OK, this

01:07:01 is a suspicious login at that point.

01:07:02 So we would alert you.

01:07:03 It’s like, OK.

01:07:04 But that’s not AI, right?

01:07:05 That’s just a heuristic of like, how did you, in one hour,

01:07:09 get 2,000 miles, right?

01:07:10 That doesn’t.

01:07:11 I mean, you’re grand.

01:07:12 Maybe you’re on a VPN.

01:07:12 There’s other ways to happen.

01:07:14 That’s just a basic prediction based on the idea

01:07:16 that people pretty much don’t move around that much.

01:07:19 They may travel occasionally.

01:07:20 But nobody, unless you’re a traveling salesman that’s

01:07:23 literally traveling the world every day,

01:07:26 there’s so much repetition and predictability

01:07:28 in terms of things you’re going to do.

01:07:29 And I think good software anticipates your needs.

01:07:32 For example, Google, I think it’s

01:07:33 called Google Now or whatever that Google thing is

01:07:35 that predicts your commute and predicts,

01:07:36 based on your phone location, where are you every day?

01:07:39 Well, that’s probably where you work, that kind of stuff.

01:07:41 I do think computers can get a lot better at that.

01:07:43 I hesitate to call it full blown AI.

01:07:46 It’s just computers getting better at like, first of all,

01:07:48 they have a ton of data because everybody has a smartphone.

01:07:50 Now, all of a sudden, we have all this data

01:07:52 that we didn’t have before about location,

01:07:53 about communication, and feeding that into some basic heuristics

01:07:59 and maybe some fancy algorithms that turn it

01:08:01 into predictions of anticipating your needs,

01:08:03 like a friend would, right?

01:08:04 Like, oh, hey, I see your home.

01:08:06 Would you like some dinner, right?

01:08:07 Like, let’s go get some food, because that’s usually

01:08:09 what we do at this time of day, right?

01:08:10 In the context of actually the act of programming,

01:08:13 do you see IDEs improving and making

01:08:15 the life of programming as better?

01:08:17 I do think that is possible, because there’s

01:08:19 a lot of repetition in programming, right?

01:08:20 Oh, you know, Clippy would be the bad example of, oh, I see.

01:08:23 It looks like you’re writing a for loop.

01:08:25 But there are patterns in code, right?

01:08:28 And actually, libraries are kind of like that, right?

01:08:30 Rather than go code up your own HTTP request library,

01:08:35 it’s like, well, you’d use one of the existing ones

01:08:37 that we have.

01:08:38 That’s already a troubleshot, right?

01:08:39 It’s not AI, per se.

01:08:41 It’s just building better LEGO bricks, bigger LEGO bricks,

01:08:46 that have more functionality in them,

01:08:47 so people don’t have to worry about the low level

01:08:49 stuff as much anymore.

01:08:50 Like, WordPress, for example, to me,

01:08:52 is like a tool for somebody who isn’t a programmer

01:08:54 to do something.

01:08:55 I mean, you can turn WordPress into anything.

01:08:57 It’s kind of crazy, actually, through plugins, right?

01:08:59 And that’s not programming, per se.

01:09:01 It’s just LEGO bricks stacking WordPress elements, right?

01:09:04 And a little bit of configuration glue.

01:09:06 So I would say, maybe in a broader sense, what I’m seeing,

01:09:09 like, there’ll be more gluing and less actual programming.

01:09:14 And that’s a good thing, right?

01:09:15 Because most of the stuff you need

01:09:16 is kind of out there already.

01:09:17 You said 1970s, Unix.

01:09:20 Do you see PHP and these kind of old remnants

01:09:28 of the early birth of programming

01:09:31 remaining with us for a long time?

01:09:33 Like you said, Unix in itself.

01:09:35 Do you see, ultimately, this stuff just being there

01:09:41 out of momentum?

01:09:42 I kind of do.

01:09:44 I mean, I was a big believer in Windows early on.

01:09:46 And I was a big, you know, I was like,

01:09:47 Unix, what a waste of time.

01:09:48 But over time, I’ve completely flipped on that,

01:09:50 where I was like, okay, the Unix guys were right.

01:09:51 And pretty much Microsoft and Windows were kind of wrong,

01:09:54 at least on the server side.

01:09:55 Now, on the desktop, right, you need a GUI,

01:09:57 you need all that stuff.

01:09:58 And you have the two philosophies,

01:09:59 like Apple built on Unix, effectively, Darwin.

01:10:02 And on the desktop, it’s a slightly different story.

01:10:04 But on the server side, where you’re gonna be programming.

01:10:07 Now, it’s a question of where the programming’s gonna be.

01:10:08 There’s gonna be a lot more like client side programming,

01:10:10 because technically, discourse is client side programming.

01:10:13 The way you get discourse,

01:10:14 we deliver a big ball of JavaScript,

01:10:16 which is then executed locally.

01:10:18 So we’re really using a lot more local computing power.

01:10:20 We’ll still retrieve the data, obviously,

01:10:22 we have to display the posts on the screen and so forth.

01:10:24 But in terms of like sorting and a lot of the basic stuff,

01:10:27 we’re using the host processor.

01:10:29 But to the extent that a lot of programming

01:10:31 is still gonna be server side, I would say, yeah,

01:10:33 the Unix philosophy definitely won.

01:10:35 And there’ll be different veneers over Unix,

01:10:38 but it’s still, if you peel away one or two layers,

01:10:40 it’s gonna be Unixy for a long, I think Unix won.

01:10:44 I mean, so definitively.

01:10:45 It’s interesting to hear you say that,

01:10:47 because you’ve done so much excellent work

01:10:49 on the Microsoft side in terms of backend development.

01:10:52 Cool.

01:10:53 So what’s the future hold for Jeff Atwood?

01:10:56 I mean, the discourse, continuing the discourse

01:11:01 in trying to improve conversation on the web?

01:11:03 Well, discourse is what I’ve viewed as a,

01:11:05 and originally I called it a five year project,

01:11:07 then really quickly revised that to a 10 year project.

01:11:08 So we started in early 2013,

01:11:12 that’s when we launched the first version.

01:11:13 So we’re still five years in.

01:11:16 This is the part where it starts getting good.

01:11:17 Like we have a good product now.

01:11:18 Discourse, there’s any project you build in software,

01:11:21 it takes three years to build what you want it

01:11:23 to build anyway.

01:11:24 Like V1 is gonna be terrible, which it was.

01:11:26 But you ship it anyway,

01:11:27 because that’s how you get better at stuff.

01:11:29 It’s about turning the crank.

01:11:29 It’s not about V1 being perfect,

01:11:31 because that’s ridiculous.

01:11:32 It’s about V1, then let’s get really good at V1.1,

01:11:35 1.2, 1.3, like how fast can we iterate?

01:11:38 And I think we’re iterating like crazy on discourse,

01:11:40 to the point that like, it’s a really good product now.

01:11:41 We have serious momentum.

01:11:44 And my original vision was,

01:11:46 I wanna be the WordPress of discussion.

01:11:48 Meaning someone came to you and said,

01:11:49 I wanna start a blog.

01:11:50 Although the very question is kind of archaic now.

01:11:53 It’s like, who actually blogs anymore?

01:11:55 But I wanted the answer to that to be,

01:11:59 it would be WordPress normally,

01:12:01 because that’s the obvious choice

01:12:02 for blogging most of the time.

01:12:04 But if someone said, hey, I need a group of people

01:12:06 to get together and do something,

01:12:08 the answer should be discourse, right?

01:12:10 That should be the default answer for people.

01:12:11 Because it’s open source, it’s free,

01:12:13 doesn’t cost you anything.

01:12:14 You control it, you can run it.

01:12:15 Your minimum server cost for discourse

01:12:17 is five bucks a month at this point.

01:12:19 They actually got the VPS prices down.

01:12:21 It used to be $10 a month for one gigabyte of RAM,

01:12:23 which we have a kind of heavy stack.

01:12:28 Like there’s a lot of stuff in discourse.

01:12:30 You need Postgres, you need Redis, you need Ruby,

01:12:32 and Rails, you need a sidekick for scheduling.

01:12:35 It’s not a trivial amount of stuff

01:12:36 because we were architected for like,

01:12:38 look, we’re building for the next 10 years.

01:12:39 I don’t care about shared PHP hosting.

01:12:41 That’s not my model.

01:12:44 My idea is like, hey, eventually,

01:12:45 this is gonna be very cheap for everybody

01:12:47 and I wanna build it right.

01:12:49 Using again, higher, bigger building block levels, right?

01:12:53 That have more requirements.

01:12:54 And there’s a WordPress model of WordPress.org,

01:12:56 WordPress.com.

01:12:57 Is there a central hosting for discourse or no?

01:13:00 There is.

01:13:01 We’re not strictly segmenting into the open source

01:13:03 versus the commercial side.

01:13:05 We have a hosting business.

01:13:06 That’s how discourse makes money

01:13:07 is we host discourse instances

01:13:08 and we have really close relationship with our customers

01:13:10 of the symbiosis of them giving us feedback on the product.

01:13:14 We definitely wait feedback from customers

01:13:16 a lot heavier than feedback from somebody

01:13:18 who just wanders by and gives feedback.

01:13:20 But that’s where we make all our money.

01:13:22 But we don’t have a strict division.

01:13:24 We encourage people to use discourse.

01:13:26 Like the whole point is that it’s free, right?

01:13:29 Anybody can set it up.

01:13:29 I don’t wanna be the only person that hosts discourse.

01:13:32 That’s absolutely not the goal.

01:13:34 But it is a primary way for us to build a business

01:13:36 and it’s actually kind of a great business.

01:13:37 I mean, the business is going really, really well

01:13:40 in terms of hosting.

01:13:41 So I used to work at Google Research.

01:13:44 It’s a company that’s basically funded on advertisements.

01:13:47 So it’s Facebook.

01:13:48 Let me ask if you can comment on it.

01:13:50 I think advertisement is best.

01:13:53 So you’d be extremely critical on what ads are

01:13:56 but at its best, it’s actually serving you.

01:13:59 In a sense, it’s giving you, it’s connecting you

01:14:02 to what you would want to explore.

01:14:05 So it’s like related posts or related content.

01:14:08 It’s the same, that’s the best of advertisement.

01:14:10 So discourse is connecting people based on their interests.

01:14:16 It seems like a place where advertisement at its best

01:14:20 could actually serve the users.

01:14:21 Is that something that you’re considering thinking about

01:14:24 as a way to bring, to financially support the platform?

01:14:29 That’s interesting because I actually have

01:14:31 a contrarian view of advertising,

01:14:32 which I kind of agree with you.

01:14:33 I recently installed AdBlocker reluctantly

01:14:36 because I don’t like to do that.

01:14:38 But the performance of the ads, man,

01:14:40 they’re so heavy now and it’s just crazy.

01:14:43 So it’s almost like a performance argument

01:14:45 more than like, I actually am pro ads

01:14:47 and I have a contrarian viewpoint.

01:14:49 I agree with you.

01:14:50 If you do ads right, it’s serving you stuff

01:14:51 you would be interested in anyway.

01:14:53 I don’t mind that, that actually is kind of a good thing.

01:14:56 So plus I think it’s rational to wanna support

01:15:00 the people that are doing this work

01:15:01 through seeing their ads.

01:15:02 But that said, I run AdBlock now,

01:15:04 which I didn’t wanna do, but I was convinced

01:15:07 by all these articles, like 30, 40 megabytes of stuff

01:15:10 just to serve you ads.

01:15:12 Yeah, it feels like ads now are like the experts exchange

01:15:15 of whenever you start a stock overflow.

01:15:18 It’s a little bit, it’s overwhelming.

01:15:19 Oh, there’s so many companies in ad tech

01:15:21 that it’s embarrassing.

01:15:21 Like you can do that, have you seen those logo charts

01:15:23 of like just the whole page?

01:15:24 It’s like you can’t even see them, they’re so small.

01:15:26 There’s so many companies in the space.

01:15:27 But since you brought it up, I do wanna point out

01:15:29 that very, very few discourse sites actually run

01:15:31 using an ad supported model.

01:15:33 It’s not effective.

01:15:34 Like it’s too diluted, it’s too weird,

01:15:37 it doesn’t pay well, and like users hate it.

01:15:40 So it’s a combination of like users hate it,

01:15:42 it doesn’t actually work that well in practice.

01:15:44 Like in theory, yes, I agree with you.

01:15:45 If you had clean, fast ads that were exactly

01:15:48 the stuff you would be interested in, awesome.

01:15:50 We’re so far from that though, right?

01:15:52 Like, and Google does an okay job.

01:15:53 They do retargeting and stuff like that,

01:15:55 but in the real world, discourse sites

01:15:59 rarely can make ads work.

01:16:01 It just doesn’t work for so many reasons.

01:16:03 But you know what does work is subscriptions,

01:16:05 Patreon, affiliate codes for like Amazon,

01:16:10 of like just, oh, here’s a cool yo yo, click,

01:16:13 and then you click and go to Amazon,

01:16:14 they get a small percentage of that,

01:16:15 which is fair, I think.

01:16:17 I mean, because you saw the yo yo on that site

01:16:19 and you clicked through and you bought it, right?

01:16:21 That’s fair for them to get 5% of that

01:16:22 or 2% of that, whatever it is.

01:16:24 Those things definitely work.

01:16:25 In fact, a site that I used to participate on a lot,

01:16:28 I helped the owner.

01:16:29 One of the things, I got them to switch to discourse.

01:16:32 I basically paid them to switch to discourse

01:16:34 because I was like, look, you guys got to switch.

01:16:35 I can’t come here anymore on this terrible software.

01:16:38 But I was like, look, and on top of that,

01:16:40 like you’re serving people ads that they hate.

01:16:42 Like you should just go full on Patreon

01:16:43 because he had a little bit of Patreon.

01:16:45 Go full on Patreon, do the Amazon affiliates thing

01:16:49 for any Amazon links that get posted and just do that

01:16:51 and just triple down on that stuff.

01:16:53 And that’s worked really well for them

01:16:55 and this creator in particular.

01:16:56 So that stuff works, but traditional ads,

01:16:59 I mean, definitely not working, at least on discourse.

01:17:01 So last question.

01:17:03 You’ve created the code keyboard.

01:17:05 I’ve programmed most of my adult life on a Kinesis keyboard.

01:17:09 I have one upstairs now.

01:17:12 Can you describe what a mechanical keyboard is

01:17:14 and why is it something that makes you happy?

01:17:16 Well, you know, this is another fetish item, really.

01:17:18 Like, it’s not required.

01:17:20 You can do programming on any kind of keyboard,

01:17:22 even like an onscreen keyboard.

01:17:23 Oh, god, that’s terrifying.

01:17:25 But you could.

01:17:27 I mean, if you look back at the early days of computing,

01:17:28 there were chiclet keyboards, which are awful.

01:17:31 But what’s a chiclet keyboard?

01:17:32 Oh, god.

01:17:33 OK, well, it’s just like thin rubber membranes.

01:17:36 Oh, the rubber ones, oh, no.

01:17:37 Super bad, right?

01:17:38 So it’s a fetish item.

01:17:40 All that really says is, look, I care really about keyboards

01:17:43 because the keyboard is the primary method of communication

01:17:45 with the computer.

01:17:46 So it’s just like having a nice mic for this podcast.

01:17:49 You want a nice keyboard, right?

01:17:50 Because it has a very tactile feel.

01:17:52 I can tell exactly when I press the key.

01:17:54 I get that little click.

01:17:55 So, oh, and it feels good.

01:17:56 And it’s also kind of a fetish item.

01:17:57 It’s like, wow, I care enough about programming

01:18:00 that I care about the tool, the primary tool,

01:18:02 that I use to communicate with the computer,

01:18:03 make sure it’s as good as it feels good to use for me.

01:18:06 And I can be very productive with it.

01:18:08 So to be honest, it’s a little bit of a fetish item,

01:18:10 but a good one.

01:18:11 It indicates that you’re serious.

01:18:12 It indicates you’re interested.

01:18:13 It indicates that you care about the fundamentals.

01:18:15 Because you know what makes you a good programmer?

01:18:17 Being able to type really fast, right?

01:18:19 This is true, right?

01:18:20 So a core skill is just being able to type fast enough

01:18:23 to get your ideas out of your head into the code base.

01:18:26 So just practicing your typing can make you

01:18:28 a better programmer.

01:18:29 It is also something that makes you,

01:18:33 well, makes you enjoy typing, correct?

01:18:36 The actual act, something about the process.

01:18:39 Like I play piano.

01:18:41 It’s tactile.

01:18:42 There’s a tactile feel that ultimately feeds the passion,

01:18:46 makes you happy.

01:18:47 Right.

01:18:47 No, totally.

01:18:47 That’s it.

01:18:48 I mean, and it’s funny because artisanal keyboards have

01:18:50 exploded.

01:18:50 Like Massdrop has gone ballistic with this stuff.

01:18:53 There’s probably like 500 keyboard projects

01:18:55 on Massdrop alone.

01:18:56 And there’s some other guy I follow on Twitter.

01:18:58 I used to write for the site The Tech Report way

01:19:00 back in the day.

01:19:01 And he’s like, every week he’s just

01:19:02 posting what I call keyboard porn of just cool keyboards.

01:19:05 Like, oh my god, those look really cool, right?

01:19:07 It’s like, how many keyboards does this guy have, right?

01:19:09 It’s kind of like me with yo yos.

01:19:10 How many yo yos do you have?

01:19:11 How many do you need?

01:19:12 Well, technically one, but I like a lot.

01:19:14 I don’t know why.

01:19:15 So same thing with keyboards.

01:19:17 So yeah, they’re awesome.

01:19:18 Like, I highly recommend anybody that

01:19:20 doesn’t have a mechanical to research it, look into it,

01:19:23 and see what you like.

01:19:24 And it’s ultimately a fetish item.

01:19:26 But I think these sort of items, these religious artifacts

01:19:30 that we have, are part of what make us human.

01:19:32 Like, that part’s important, right?

01:19:33 It’s kind of what makes life worth living.

01:19:35 Yeah.

01:19:37 It’s not necessary in the strictest sense,

01:19:38 but ain’t nothing necessary if you think about it, right?

01:19:42 Like, so yeah, why not?

01:19:44 So sure.

01:19:45 Jeff, thank you so much for talking today.

01:19:47 Yeah, you’re welcome.

01:19:48 Thanks for having me.