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.