← Lex Fridman

Jeff Atwood: Stack Overflow and Coding Horror

Episode 2018-11-292018-11-29English

Guests: Jeff Atwood

Listen to this episode00:00 / 1:20:15
Reading settings
Reading preferences
Text size
Download in-depth read
Read offline

In-depth read pending

Downloads are not available yet.

§01Transcript · 00:00–07:11

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

00:02He is the co-founder of Stack Overflow and Stack Exchange,

00:05websites that are visited by millions of people

00:08every single day.

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

00:13the impact on global knowledge and productivity

00:16that these networks of sites have created.

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

00:24and the founder of Discourse,

00:26an open source software project

00:27that seeks to improve the quality

00:30of our online community discussions.

00:32This conversation is part of the MIT course

00:36on artificial general intelligence

00:38and the Artificial Intelligence Podcast.

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

00:43or your podcast provider of choice,

00:45or simply connect with me on Twitter @LexFriedman,

00:48spelled F-R-I-D.

00:50And now, here's my conversation with Jeff Atwood.

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

00:59the world's largest community of programmers

01:01in Stack Overflow 10 years ago,

01:04what do you think motivates most programmers?

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

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

01:16- I think it's puzzles, really.

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

01:22independently of other people

01:23and just solving a problem sort of like on your own almost,

01:28although nobody really works alone in programming anymore.

01:32But I will say there's an aspect of sort of

01:35hiding yourself away and just sort of

01:38beating on a problem until you solve it,

01:39like brute force, basically, to me,

01:40is what a lot of programming is.

01:42It's like the computer's so fast, right,

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

01:46but you can just do 'em like so many times and so often

01:49that you get the answer, right?

01:52- You're saying just the pure act of tinkering with the code

01:55is the thing that drives most programmers.

01:57The joy, the struggle balance within the joy of overcoming

02:02the brute force process of pain and suffering

02:05that eventually leads to something that actually works?

02:09- Well, data's fun, too.

02:10Like there's this thing called the shuffling problem,

02:12like the naive shuffle that most programmers write

02:14has a huge flaw, and there's a lot of articles online

02:17about this 'cause it can be really bad

02:18if you're like a casino

02:20and you have an unsophisticated programmer

02:22writing your shuffle algorithm.

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

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

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

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

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

02:34And with the naive method of shuffling,

02:36if you just look at the data,

02:37if you just brute force and say,

02:38okay, I don't know what's gonna happen,

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

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

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

02:48where you have three doors

02:50and somebody gives you information about another door.

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

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

02:56and it freaks people out all the time, right?

02:58But you can solve it with data.

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

03:04and then never switches, then always switches,

03:06just compare, you would immediately see

03:07that you don't have to be smart, right?

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

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

03:13well, I know the answer is this

03:14because I ran the program a billion times

03:16and these are the data buckets that I got from it, right?

03:18- So empirically, you find it, but what's the joy of that?

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

03:26what motivates you in this process?

03:29- Well, to be honest,

03:30I don't really write a lot of code anymore.

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

03:35which I always kind of despised, right?

03:37As a programmer, you think of managers

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

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

03:44that like language is code, like the ability

03:46to direct other people lets you get more stuff done

03:50than you could by yourself anyway.

03:52- You said language is code?

03:53- Language is code.

03:54- Meaning communication with other humans?

03:56- Yes, it is.

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

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

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

04:04What makes a good leader?

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

04:08first of all, like sort of doing

04:10and being the things that you want to be.

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

04:13particularly when you have kids,

04:14'cause you realize that your kids are watching you

04:16like all the time, like even in ways

04:19that you've stopped seeing yourself.

04:20Like the hardest person to see on the planet

04:22is really yourself, right?

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

04:24and make judgments about them,

04:26but yourself, like you're super biased.

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

04:30Often you're very, very hard on yourself

04:32in a way that other people really aren't going to be.

04:34So, you know, that's one of the insights is, you know,

04:37you gotta be really diligent about thinking like,

04:40am I behaving in a way that represents

04:42how I want other people to behave, right?

04:44Like leading through example.

04:46There's a lot of examples of leaders

04:48that really mess this up, right?

04:49Like they make decisions that are like,

04:50wow, that's why would, you know,

04:52it's just, it's a bad example for other people.

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

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

04:59And I don't mean like working exhaustively,

05:01but like showing a real passion for the problem.

05:06Like, you know, not necessarily your solution to the problem

05:09but the problem itself is just one

05:10that you really believe in.

05:11Like with discourse, for example,

05:12the problem that we're looking at,

05:14which is my current project is,

05:15how do you get people in groups to communicate

05:18in a way that doesn't like break down

05:20into the howling of wolves, right?

05:21Like how do you deal with trolling?

05:23Not like technical problems,

05:24but how do I get people to post paragraphs?

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

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

05:29Although those are problems as well,

05:30but like how do I get people to get along with each other,

05:33right, like, and then solve whatever problem it is

05:35they set out to solve or, you know,

05:36reach some consensus on discussion

05:38or just like not hurt each other even, right?

05:40Like maybe it's a discussion that doesn't really matter,

05:41but are people like yelling at each other, right?

05:43And why, right?

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

05:46So I would say, you know, leadership is about,

05:50you know, setting an example, you know,

05:53doing the things that represent what you want to be

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

05:56And there's a trick to that too

05:58because the things you don't do

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

06:02- Yeah, so let's pause on that one.

06:04So those two things are fascinating.

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

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

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

06:12you've seen or look up to,

06:14how do you know both of the things you're doing

06:18are the wrong things to be doing,

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

06:22and the things you're not doing?

06:23How do you get that signal?

06:25- There's two aspects to that.

06:26One is like processing feedback that you're getting.

06:28So-- - How do you get feedback?

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

06:32Like, so one way we do it, for example,

06:33at Discourse, we have three co-founders

06:34and we periodically talk about decisions

06:37before we make them.

06:38So it's not like one person can make a mistake

06:40or like, wow, that's, you know,

06:42there can be misunderstandings, things like that.

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

06:45is like it's good to have,

06:47I think systems where there's one leader

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

06:51are just really dangerous in my experience.

06:53For communities, for example,

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

06:56that one person makes all the decisions,

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

06:59Something could happen to that person, you know,

07:01something, you know, there's a lot of variables.

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

07:05have multiple people doing leadership

07:07and have them talk amongst each other.

07:08So giving each other feedback about the decisions

07:11that they're making.

§02Transcript · 07:12–13:34

07:12And then when you do get feedback,

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

07:15Like, or your gut or wherever you wanna put it in your body.

07:19I think that voice is really important.

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

07:25or like want to do,

07:26most people want to do the right thing, I do believe that.

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

07:31that don't, but most people,

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

07:34And why wouldn't you, right?

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

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

07:38So you have that little voice that sort of the angel

07:40and devil on your shoulder sort of talking to you

07:42about like what you're doing, how you're doing,

07:43how does it make you feel to make these decisions, right?

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

07:49is important.

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

07:52I think there's a programmer situation too,

07:55where sometimes the devil on the shoulder

07:57is a little too loud.

07:59So you're a little too self-critical for a lot of developers,

08:03and especially when you have introverted personality.

08:05How do you struggle with the self-criticism

08:07or the criticism of others?

08:09So one of the things of leadership

08:11is to do something that's potentially unpopular

08:14or what people doubt you,

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

08:18So what's that balance like?

08:21- I think you have to walk people

08:22through your decision making, right?

08:23Like, this is where blogging is really important,

08:25and communication is so important.

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

08:27It's like, here is the program by which I arrived

08:30at the conclusion that I'm gonna reach, right?

08:33It's one thing to say, like,

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

08:36That's not usually satisfying to people.

08:38But if you say, look,

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

08:41Here's some stuff that's happened.

08:42Here's what we think is right.

08:43Here's our goals.

08:44Here's what we wanna achieve.

08:45And we've looked at these options,

08:47and we think this of the available options

08:49is the best option.

08:50People will be like, oh, okay.

08:51Right, maybe I don't totally agree with you,

08:53but I can kinda see where you're coming from.

08:54And I see it's not just arbitrary decision

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

09:00It's like a human trying to reach some kind of consensus

09:03about goals, and their goals might be different than yours.

09:05That's completely legit, right?

09:06But if you're making that clear, it's like, oh,

09:09well, the reason we don't agree

09:09is 'cause we have totally different goals, right?

09:11Like, how could we agree?

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

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

09:16when we started looking at this problem.

09:18- And the other one you said is passion,

09:20or hard work, sorry.

09:22- Well, those are tied together to me, in my mind.

09:23I mean, let's say hard work and passion.

09:25Like, for me, I just really love the problem

09:27discourse is setting out to solve,

09:28because in a way, it's like,

09:30there's a vision of the world

09:32where it all devolves into Facebook

09:33basically owning everything

09:35and every aspect of human communication, right?

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

09:39First, 'cause I don't,

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

09:42I gotta compliment them.

09:43They're very competent in terms of what they're doing.

09:45But Facebook has not much of a moral compass

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

09:51They don't really care about you and your problems.

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

09:56right? - Is that you're talking

09:57about the company or just the mechanism

09:58of how Facebook works? - Well, kind of both,

10:00really, right?

10:01And the idea with discourse,

10:02the reason I'm so passionate about it

10:03is 'cause I believe every community

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

10:07Like, they should have their own software

10:08that they can run that belongs to them.

10:11That's their space where they can set the rules.

10:12And if they don't like it,

10:13they can move to different hosting

10:14or whatever they need to happen can happen.

10:18But this idea of a company town

10:20where all human communication is implicitly owned

10:22by WhatsApp, Instagram, and Facebook.

10:25And it's really disturbing, too,

10:26'cause Facebook is really smart.

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

10:29Buying in WhatsApp and buying Instagram

10:30were incredibly smart decisions.

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

10:34but they have this VPN software

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

10:38and it indirectly feeds all the data

10:41about the traffic back to Facebook.

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

10:44through the VPNs, right?

10:46They have low-level access to the network data

10:48because users have let them have that.

10:50So-- - So let's take

10:53a small pause here.

10:54First of all, discourse.

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

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

11:01So there's Stack Overflow that you've built,

11:03there's discourse.

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

11:07Wikipedia you talk about,

11:09and it's a very specific scalpel, very focused.

11:12So what is the purpose of discourse,

11:13and maybe contrast that with Facebook?

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

11:18- Yeah. - Start from the beginning.

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

11:20So Stack Overflow is a very structured

11:22wiki-style Q&A for programmers, right?

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

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

11:29because we looked at programming forums and other things,

11:32but we quickly realized we were doing Q&A,

11:33which is a very narrow subset of human communication.

11:37- Sorry, so when you started Stack Overflow,

11:38you thought you didn't even know the Q&A.

11:41- Not really. - You didn't know

11:42it would be Q&A. - I mean, kind of.

11:43Well, we didn't know.

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

11:45that we see working online.

11:47We had a goal, right?

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

11:51with a very unfortunate name.

11:52- Thank you for killing that site.

11:54- Yeah, I know, right?

11:54And a lot of people don't remember it anymore,

11:56which is great.

11:57That's the measure of success,

11:58if people don't remember the thing

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

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

12:05but it wasn't clear if it was like focused Q&A,

12:07if it was a discussion.

12:08There were plenty of programming forums.

12:10So we weren't really sure.

12:11We were like, okay, we'll take aspects of Dig and Reddit,

12:13like voting were very important,

12:15reordering answers based on votes,

12:17wiki-style stuff of like being able to edit posts,

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

12:21to make them better and keep them more up-to-date,

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

12:26I'm saying this in my voice.

12:28This is the stuff that I know.

12:29And you get your reputation accrues to you

12:33and it's peer recognition.

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

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

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

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

12:45Not necessarily money, not necessarily your boss,

12:46but like your peers saying, wow,

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

12:50So the reputation system came from that.

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

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

12:58and we knew worked.

13:01And that became Stack Overflow.

13:03And over time, we realized it wasn't really discussion.

13:06It was very focused questions and answers.

13:08There wasn't a lot of room on the page for,

13:10let me talk about this tangential thing.

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

13:14Is it clarifying the question?

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

13:18'Cause there's usually more than one way to do it

13:20in programming.

13:21There's like, say, five to 10 ways.

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

13:24with Stack Overflow was there were questions

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

13:28And we're like, well, how can there be a programming question

13:31with 500, 200, 500 answers?

13:34And we looked at those and we realized

§03Transcript · 13:36–20:22

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

13:38They were discussions.

13:39It was stuff that we allowed early on

13:42that we eventually decided wasn't allowed,

13:43such as what's your favorite programming food?

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

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

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

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

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

13:57'cause I don't know what the funniest programming cartoon is

13:59so, sorry, can't compile this code now.

14:01Right, it's not a real problem you're facing in your job.

14:04So that was run rule.

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

14:07It's like what I call accidental learning

14:08or Reddit-style learning.

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

14:11and oh, wow, did you know tree frogs only live three years?

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

14:15I don't know if that's true.

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

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

14:20It's accidental learning.

14:21It was more intentional learning.

14:23Where you're like, okay, I have a problem

14:24and I wanna learn about stuff around this problem having.

14:26Right, and it could be theory, it could be compiler theory,

14:29it could be other stuff.

14:29But I'm having a compiler problem,

14:31hence I need to know the compiler theory,

14:34that aspect of it that gives me, gets me to my answer.

14:38So kind of a directed learning.

14:39So we had to backfill all these rules

14:40as we sort of figured out what the heck it was

14:42we were doing.

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

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

14:46And I wrote my latest blog entry,

14:48"What Does Stack Overflow Want to Be When It Grows Up?"

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

14:54- Yeah, so 10 years.

14:55And the system has trended towards strictness.

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

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

15:01get reputation for stuff as they view as frivolous.

15:03Which I can actually understand.

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

15:07for funniest programming cartoon

15:10or funniest comment they had seen in code.

15:11It's like, well, why do they have that reputation?

15:13Is it because they wrote the joke?

15:15Probably not.

15:15I mean, if they did, maybe.

15:16Or the cartoon, right?

15:18They're getting a bunch of reputation

15:19based on someone else's work.

15:20That's not even like programming.

15:22It's just a joke, right?

15:23It's a related program.

15:24So you begin to resent that.

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

15:27And it isn't.

15:28At some level, they're correct.

15:29I mean, I empathize.

15:30'Cause like, it's not correct to get reputation for that.

15:31Versus here's a really gnarly regular expression problem.

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

15:40laying out, oh, here's why you're seeing the behavior

15:42that you're seeing here.

15:43Let me teach you some things

15:43about how to avoid that in the future.

15:44That's great.

15:45Like, that's gold, right?

15:46You want people to get reputation for that.

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

15:50- Great, so there's this very specific Q&A format.

15:54And then take me through the journey

15:56towards discourse in Facebook and Twitter.

15:58So you started at the beginning

16:00that Stack Overflow evolved to have a purpose.

16:02So what is discourse, this passion you have

16:06for creating community for discussion?

16:09What is that?

16:10When was that born and how?

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

16:13that Stack Overflow is only good

16:14for very specific subjects where there's sort of,

16:17it's based on data, facts, and science

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

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

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

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

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

16:33where there's like semi-clear answers to things

16:35that can be verified in some form.

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

16:39There's complete flexibility in the system around that.

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

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

16:48we have an engine that tries to launch

16:50different Q&A topics, right?

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

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

16:59we launch that Q&A site.

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

17:02and they did horribly, right?

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

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

17:07This is like a test, right?

17:09And some subjects work super well in the Stack Engine

17:11and some don't.

17:12But the reason Lego and poker don't work

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

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

17:19It's like, well, what kind of cigars do we like

17:21to smoke while playing poker?

17:23Or what's a cool set of cards to use when playing poker?

17:26Or what's some strategies?

17:28Like say I have this hand come up,

17:30what's some strategies I could use?

17:31It's more of a discussion around what's happening.

17:33Like with Lego, same thing, like here's this cool Lego set

17:35I found, look how awesome this is.

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

17:38It's not a question, right?

17:39There's all these social components of the discussions

17:41that don't fit at all.

17:43Like we literally have to disallow those

17:44in Stack Overflow 'cause it's not about being social.

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

17:49that you need concrete answers for, right?

17:51Like you have a real demonstrated problem

17:52that's sort of blocking you in something.

17:53Nobody's blocked by what should I do

17:56when I have a straight flush, right?

17:57Like it's not a blocking problem in the world.

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

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

18:05look, discussion form software was very, very bad.

18:10And when I came out of Stack Overflow in late, early 2013,

18:15early 2012, it was still very, very bad.

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

18:22but it had not improved at all.

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

18:25because I love these communities of people

18:29talking about things that they love,

18:30you know, that they're just communities of interest, right?

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

18:34Like startups would come to me and say,

18:36hey Jeff, I wanna, you know, I have this startup,

18:39here's my idea.

18:41And the first thing I would say to them is like,

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

18:43Like, I don't really know your field, right?

18:46Like necessarily, like,

18:47why aren't you asking like the community,

18:48like the people that are interested in this problem,

18:51the people that are using your product,

18:52why aren't you talking to them?

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

18:55Like, how do I do that?

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

18:58'cause I realized all the software involving

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

19:02patrons, whatever it is, it was all really bad.

19:05You know, it was like stuff that I would be embarrassed

19:06to recommend to other people.

19:08And yet that's where I felt they could get the biggest

19:10and strongest, most effective input

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

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

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

19:18- So what we're talking about with forums,

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

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

19:26but for the longest time,

19:28it has some of the most passionate

19:31and fascinating discussions.

19:32And what's the usual structure?

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

19:38So you're posting one after the other

19:39and there's pagination, so it's every,

19:42there's 10 posts and you go to the next page.

19:45And that format still is used by, like I'm,

19:49we're doing a lot of research with Tesla vehicles

19:51and there's a Tesla Motors Club forum,

19:53which is extremely--

19:54- We really wanted to run that, actually.

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

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

19:59- But they've started before even 2012, I believe.

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

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

20:06So what's broken about that system

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

20:12- I think there's a lot of power in connecting people

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

20:19Meaning, Facebook's idea of connection is

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

§04Transcript · 20:24–26:43

20:24Like through friendship or any other reason.

20:27Facebook's idea of the world

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

20:30Like a friend of yours did something,

20:32ate at a restaurant, right?

20:35Whereas discussion forums were traditionally

20:37around the interest graph.

20:38Like I love electric cars, specifically I love Tesla, right?

20:42Like I love the way they approach the problem,

20:44I love the style of the founder,

20:45I just love the design ethic.

20:48There's a lot to like about Tesla.

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

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

20:53And it was actually kind of cool

20:53'cause I learned some stuff.

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

20:57like how they were built differently.

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

20:59that was really interesting.

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

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

21:05I just really love this stuff.

21:07So for me, for example, there's yo-yos, right?

21:08Like I'm into the yo-yo communities.

21:09And these interest communities

21:11are just really fascinating to me.

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

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

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

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

21:25I mean, they have groups,

21:25you can sign up for groups and stuff.

21:27But it's really about the relationship graph.

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

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

21:35So I think that's the linchpin

21:36of which forums and communities are built on

21:39that I personally love.

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

21:44And being passionate about stuff

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

21:47And I think it's a way a lot of stuff

21:50in the world gets done.

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

21:52he's like, "Jeff, you're a guy who,

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

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

21:59And I was like, "Oh, that's kind of right.

22:00"That's kind of what I do.

22:01"I'll get into something and just be super into that

22:03"for a couple years or whatever,

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

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

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

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

22:12but being really deep on a few things

22:14that I'm interested in.

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

22:17And you don't want a world

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

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

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

22:25control the experience.

22:26'Cause community is also about ownership, right?

22:29If you're meeting at the Barnes & Noble every Thursday,

22:32and Barnes & Noble says, "Get out of here.

22:33"You guys don't buy enough books."

22:34Well, you're kind of hosed, right?

22:36Barnes & Noble owns you, right?

22:37Like you can't.

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

22:40your own clubhouse, you can set your own rules,

22:43decide what you wanna talk about there,

22:44and just really generate a lot better information

22:47than you could just hanging out at Barnes & Noble

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

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

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

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

22:59and you and a group of people can go deep

23:01on whatever it is that you're into.

23:02And this works for startups, right?

23:04Startups are a group of people

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

23:08And they wanna talk to their community.

23:09It's like, "Well, install Discourse."

23:11That's what we do at Discourse.

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

23:13I spent a lot of time on MetaStack Overflow,

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

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

23:24'cause they're the ones doing all the work in the system.

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

23:27And there's that 90/10 rule of 90% of the feedback you get

23:30is not really actionable for a variety of reasons.

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

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

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

23:38It's like literally gold and diamonds,

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

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

23:44and actually make a lot of sense.

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

23:47I didn't even see coming.

23:48It's like, "Oh my God, I never even thought of that."

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

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

23:54that we derive from Meta Stack Overflow feedback

23:56and meta discourse, right?

23:57Same exact principle of discourse.

23:59We're getting ideas from the community.

24:02I was like, "Oh my God, I never thought of that."

24:03But that's fantastic, right?

24:04I love that relationship with the community.

24:07- Having built these communities,

24:08what have you learned about?

24:11What's the process of getting a critical mass

24:12of members in a community?

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

24:17Is it the tools like discourse that empower that community?

24:22What's the key aspect of starting from one guy or gal

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

24:27and 100 and 1,000 and so on?

24:29- I think when you're starting with an N of one,

24:32I mean, I think it's persistence

24:33and also you have to be interesting.

24:36Like somebody I really admire once said something

24:39that I always liked about blogging.

24:40He's like, "Here's how you blog.

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

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

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

24:49So that's the genesis is like you have to have

24:52sort of something interesting to say

24:53that's not exactly what everybody else is saying

24:55and an interesting way of saying it,

24:56which is another way of saying it,

24:57kind of entertaining way of saying it.

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

25:02You have to, like say you're starting a blog,

25:04you have to say, "Look, I'm gonna blog every week,

25:06"three times a week."

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

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

25:12you're never gonna get anywhere.

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

25:16and part of that is having the discipline

25:18to stick with the schedule.

25:19And it helps again if it's something

25:20you're passionate about,

25:21it just won't feel like work.

25:22You're like, "I love this.

25:23"I could talk about this all day every day."

25:24Right?

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

25:27that's interesting to other people.

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

25:30that pattern of participation within the community

25:32of like generating these artifacts

25:34and inviting other people to help you

25:35like collaborate on these artifacts.

25:36Like even in the case of blogging,

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

25:40which I started in 2004,

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

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

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

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

25:51And I was like, "I want to do something."

25:52And then I met Joel and said,

25:53"Hey Joel, I want to do something.

25:55"Take this ball of energy from my blog and do something."

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

25:58It's like, "Oh, cool.

25:59"You're involving us.

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

26:03"Let's build this thing together."

26:04Like they pick the name.

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

26:08Like we came up, and naming is super hard for a slide.

26:10The hardest problem in computer science

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

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

26:15There's the poll where we voted

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

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

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

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

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

26:28"Hey, I love programming,

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

26:30"So I'm just gonna blog about it

26:31"'cause I don't have enough people to work

26:33"to talk to about it."

26:34'Cause at the time I worked a place where,

26:36you know, programming wasn't the core output of the company.

26:38It was a pharmaceutical company.

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

26:43So I was like, "I'll just blog about it,

§05Transcript · 26:44–33:19

26:44"and then I'll find an audience."

26:45And eventually found an audience, eventually found Joel,

26:48and eventually built Stack Overflow

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

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

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

26:58feedback from the early Stack Overflow community.

27:01When people see that you're doing that,

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

27:04They'll say, "Oh, cool, you're here in good faith.

27:05"You're actually, you know, not listening to everything

27:07"'cause that's impossible, but you're actually,

27:10"you know, weighting our feedback in what you're doing."

27:14And why wouldn't I?

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

27:16Me, Joel?

27:17No, it's the other programmers

27:19that are doing all the work.

27:20So you've got to have some respect for that.

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

27:24"Look, you know, we're trying to do a very specific thing

27:26"here on Stack Overflow.

27:27"We're not trying to solve all the world's problems.

27:28"We're trying to solve this very specific Q&A problem

27:30"in a very specific way.

27:32"Not 'cause we're jerks about it,

27:33"but because these strict set of rules

27:35"help us get really good results, right?"

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

27:41'cause programmers are used to dealing with

27:42ridiculous systems of rules, like, constantly.

27:45That's basically their job.

27:46So they're very, "Oh yeah, super strict system of rules

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

27:50That's programming, right?

27:51That's what Stack Overflow is.

27:53- So you're making it sound easy, but in 2004,

27:56let's go back there.

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

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

28:03- It was.

28:04One of the smart things I did,

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

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

28:08still probably my number one programming book

28:09for anyone to read.

28:10One of the smart things I did back then,

28:13I don't always do smart things when I start stuff,

28:16I contacted Steve and said, "Hey, I really like this."

28:18It was a sidebar illustration indicating danger in code.

28:21Coding Horror was like, "Watch out."

28:23And I love that illustration 'cause it spoke to me.

28:27'Cause I saw that illustration and go,

28:28"Oh my God, that's me.

28:29"I'm always my own worst enemy."

28:31That's the key insight in programming is,

28:33every time you write something,

28:34think, "How am I gonna screw myself?"

28:36Because you will, constantly.

28:39So that icon was like, "Oh yeah,

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

28:43"and say, 'Look, you're very fallible.

28:45"'You're gonna screw this up.

28:46"'How can you build this in such a way

28:47"'that you're not gonna screw it up later?'

28:50"How can you get that discipline around

28:52"making sure at every step,

28:54"I'm thinking through all the things that I could do wrong

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

28:57'Cause that is actually how you get

28:58to be a better programmer a lot of times.

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

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

29:05"Hey, can I have permission to use this

29:06"'cause I just really like this illustration?"

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

29:11and just continues to give me permission.

29:13- Really, that's awesome.

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

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

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

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

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

29:32- There's gonna be suffering.

29:34I mean, I won't kid you.

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

29:36Doing the work, even when you're, every week,

29:38you're like, "Okay, that blog post wasn't very good,"

29:40or people didn't like it,

29:41or people said disparaging things about it.

29:44You have to have the attitude,

29:46it's like, "No matter what happens,

29:48"I wanna do this for me."

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

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

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

29:55but you have to be pretty strict about saying,

29:59"I'm selfish in the sense that I have to do this for me."

30:03You mentioned Stephen King, his book on writing,

30:05but one of the things I do, for example,

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

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

30:10is read it out loud, multiple times.

30:13And make it sound like you're talking

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

30:17It should sound like you said it

30:19with slightly better phrasing

30:20'cause you have more time to think about what you're saying,

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

30:24And I think that's probably the single best writing advice

30:27I can give anyone, just read it over and over out loud,

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

30:32and it sounds good.

30:33- And what's your process of writing?

30:35So there's usually a pretty good idea behind the blog post.

30:39- So ideas, right.

30:40So I think you gotta have the concept

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

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

30:48Like, you can never write about everything that's going on

30:52'cause it's so incredible,

30:52but if you can't come up with, like, let's say,

30:54one interesting thing per day to talk about,

30:57then you're not trying hard enough

30:58'cause the world is full of just super interesting stuff.

31:00And one great way to mine stuff is go back to old books

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

31:07And I did that a lot

31:08'cause I was reading classic programming books

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

31:11"Oh, I was reading this programming book

31:12"and they brought this really cool concept

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

31:14And you get the, I mean,

31:16you're not claiming credit for the idea,

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

31:18that's kind of evergreen, right?

31:19Like, you don't have to go, "What should I talk about?"

31:21So just go dig up some old classic programming books

31:24and find something that, "Oh, wow, that's interesting."

31:26Or, "How does that apply today?"

31:28Or, "What about X and Y?"

31:29Or compare these two concepts.

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

31:32and then sort of play off of it,

31:34almost agree or disagree.

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

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

31:44You chose not to.

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

31:49'Cause I'd like to take you back.

31:50It seems like there's a lot of nonlinear decisions

31:52you made through life.

31:53So what was that decision like?

31:56- Right, so one of the things I love

31:57is the "Choose Your Own Adventure" books,

31:59which I loved as a kid

32:00and I feel like they're early programmer books

32:01'cause they're all about if-then statements, right?

32:04If this, then this.

32:05And they're also very, very unforgiving.

32:07Like, there's all these sites that map

32:08the classic "Choose Your Own Adventure" books

32:11and how many outcomes are bad.

32:12There's a lot of bad outcomes.

32:13So part of the game is like, oh, I got a bad outcome.

32:16Go back one step, go back one further step.

32:17It's like, how did I get here, right?

32:19Like, it's a sequence of decisions.

32:21And this is true of life, right?

32:23Like, every decision is a sequence, right?

32:25Individually, any individual decision

32:28is not necessarily right or wrong,

32:29but they lead you down a path, right?

32:31So I do think there's some truth to that.

32:32So this particular decision,

32:34the blog had gotten fairly popular.

32:36There was a lot of RSS readers that I had discovered.

32:39And this guy contacted me out of the blue

32:41from this bug tracking company.

32:42He's like, oh, I really wanna buy your blog for like,

32:44I think it was around, it was $100,000.

32:47It might have been like 80,000, but it was a lot, right?

32:49Like, and that's, you know, at the time,

32:51like, I would have a year's worth of salary all at once.

32:54So I had to really think about, like, well, you know,

32:57and I remember talking to people at the time.

32:58I was like, wow, that's a lot of money.

32:59But then at the other end, like, I really like my blog,

33:01right, like, do I wanna sell my blog?

33:03'Cause it wouldn't really belong to me

33:05anymore at that point.

33:06And one of the guidelines that I like to,

33:09I don't like to give advice to people a lot,

33:11but one of the pieces of advice I do give,

33:12'cause I do think it's really true

33:13and it's generally helpful,

33:15is whenever you're looking at a set of decisions,

33:17like, oh gosh, should I do A, B, or C,

33:19you gotta pick the thing that's a little scarier

§06Transcript · 33:22–39:12

33:22in that list, because not, you know,

33:24not like jump off a cliff scary,

33:25but the thing that makes you nervous.

33:27'Cause if you pick the safe choice,

33:28it's usually you're not really pushing.

33:30You're not pushing yourself.

33:31You're not choosing the thing that's gonna help you grow.

33:33So for me, the scarier choice was to say no.

33:36I was like, well, no, let's just see where this is going,

33:38right, because then I own it.

33:39I mean, it belongs to me.

33:40It's my thing.

33:41And I can just take it

33:43and to some other logical conclusion, right?

33:45Because imagine how different the world would have been

33:46had I said yes and sold the blog.

33:49It's like there probably wouldn't be Stack Overflow.

33:50- Yeah.

33:51- You know, a lot of other stuff would have changed.

33:53So for that particular decision,

33:55I think it was that same rule,

33:56like, what scares me a little bit more.

33:57- Do the thing that scares you.

33:59- Yeah.

34:00- So speaking of which, startups.

34:01I think there's a specific, some more general questions

34:05that a lot of people would be interested in.

34:07You've started Stack Overflow.

34:10You started Discourse.

34:12So what's the, you know, it's one, two, three guys,

34:15whatever it is in the beginning.

34:17What was that process like?

34:19Do you start talking about it?

34:20Do you start programming?

34:21Do you start, like, where's the birth

34:24and the catalyst that actually--

34:25- Well, I can talk about it in context

34:27of both Stack Overflow and Discourse.

34:28So I think the key thing initially is there is a problem.

34:31Something, there's some state of the world

34:32that's unsatisfactory to the point

34:33that you're upset about it, right?

34:36In that case, it was experts exchange.

34:37I mean, Joel's original idea,

34:38'cause I approached Joel, I was like,

34:40look, Joel, I have all this energy behind my blog.

34:41I wanna do something, I wanna build something,

34:43but I don't know what it is,

34:44'cause I'm honestly not a good idea person.

34:45I'm really not.

34:46I'm like the execution guy.

34:47I'm really good at execution,

34:48but I'm not good at blue-skying ideas.

34:51It's not my forte.

34:52Which is another reason why I like the community feedback,

34:54'cause they blue-sky all day long for you, right?

34:56So when I can just go in and cherry-pick

34:57a blue-sky idea from a community,

34:59even if I have to spend three hours reading

35:00to get one good idea, it's worth it, man.

35:02But anyway, so the idea from Joel was,

35:04hey, experts exchange, it's got great data,

35:07but the experience is hideous, right?

35:09It's trying to trick you.

35:09It feels like a used car salesman.

35:11It's just bad.

35:12So I was like, oh, that's awesome.

35:13It feeds into community.

35:14It feeds into like, we can make a creative commons.

35:16So I think the core is to have a really good idea

35:18that you feel very strongly about in the beginning,

35:20that there's a wrong in the world,

35:22an injustice that we will right

35:24through the process of building this thing.

35:26For discourse, it was like, look,

35:27there's no good software for communities

35:30to just hang out and do stuff, right?

35:32Like whether it's problem-solving, startup, whatever.

35:35Forms are such a great building block of online community,

35:37and they're hideous.

35:38They were so bad, right?

35:39It was embarrassing.

35:40Like I literally was embarrassed

35:42to be associated with this software, right?

35:44We have to have software that you can be proud of.

35:45It's like, this is competitive with Reddit.

35:47This is competitive with Twitter.

35:48This is competitive with Facebook, right?

35:50I would be proud to have the software on my site.

35:53So that was the genesis of discourse,

35:54was feeling very strongly about

35:57there needs to be a good solution for communities.

36:01So that's step one,

36:02genesis of an idea you feel super strongly about, right?

36:04And then people galvanize around the idea.

36:06Like Joel was already super excited about the idea.

36:08I was excited about the idea.

36:10So with the forum software, I was posting on Twitter.

36:13I had researched, as part of my research,

36:15I start researching the problem, right?

36:16And I found a game called Forum Wars,

36:19which was a parody of forum.

36:21It's still very, very funny of like forum behavior,

36:23circle like I would say 2003.

36:26It's aged some, right?

36:27Like the behavior's a little different in the era of Twitter,

36:29but it was awesome.

36:30It was very funny.

36:31And it was like a game, it was like an RPG,

36:33and it had a forum attached to it.

36:34So it was like a game about forums with a forum attached.

36:37I was like, this is awesome, right?

36:38This is so cool.

36:39And the founder of that company or that project,

36:41it wasn't really a company,

36:43contacted me, this guy Robin Ward from Toronto.

36:45He said, "Hey, I saw you've been talking about forums.

36:47"And I really love that problem space.

36:49"I'd still love to build really good forum software

36:51"'cause I don't think anything out there's any good."

36:53And I was like, awesome.

36:54At that point, I was like, we're starting a company.

36:55Because I couldn't have wished for a better person

36:58to walk through the door and say,

37:00I'm excited about this too.

37:01Same thing with Joel, right?

37:02I mean, Joel is a legend in the industry, right?

37:03So when he walked through, he said,

37:04I'm excited about this problem.

37:05I was like, me too, man.

37:06We can do this, right?

37:08So that to me is the most important step.

37:10It's like having an idea you're super excited about

37:12and another person, a co-founder, right?

37:14'Cause again, you get that dual leadership, right?

37:16Of like, am I making a bad decision?

37:18Sometimes it's nice to have checks of like,

37:21is this a good idea?

37:22I don't know, right?

37:23- So those are the crucial seeds.

37:25But then starting to build stuff,

37:27whether it's you programming or somebody else--

37:28- There is prototyping.

37:29So there's tons of research.

37:30There's tons of research.

37:31Like, what's out there that failed?

37:32'Cause a lot of people look at its successes.

37:34Oh, look at how successful X is.

37:36Everybody looks at the successes.

37:37Those are boring.

37:38Show me the failures 'cause that is what's interesting.

37:40That's where people were experimenting.

37:42That's where people were pushing.

37:43But they failed, but they probably failed for reasons

37:46that weren't directly about the quality of their idea, right?

37:50So look at all the failures.

37:51Don't just look what everybody looks at,

37:52which is like, oh gosh,

37:53look at all these successful people.

37:54Look at the failures.

37:55Look at the things that didn't work.

37:57Research the entire field.

37:59And so that's the research that I was doing

38:01that led me to Robin, right, was that.

38:03And then when we, for example,

38:04when we did Stack Overflow, we're like, okay,

38:08well, I really like elements of voting and digging Reddit.

38:10I like the Wikipedia, everything's up to date.

38:12Nothing is like an old tombstone

38:14that like has horrible out-of-date information.

38:17We know that works.

38:17Wikipedia is an amazing resource.

38:19Blogging, the idea of ownership is so powerful, right?

38:22Like, oh, I, Joe, wrote this,

38:23and look how good Joe's answer is, right?

38:25Like all these concepts we were rolling together,

38:27researching all the things that were out there

38:29that were working and why they were working

38:30and trying to like fold them into that, again,

38:32that Frankenstein's monster of what Stack Overflow is.

38:35And by the way, that wasn't a free decision

38:37because there's still a ton of tension

38:38in the Stack Overflow system.

38:40There's reasons people complain about Stack Overflow

38:42because it's so strict, right?

38:43Why is it so strict?

38:44Why are you guys always closing my questions?

38:46It's because there's so much tension

38:47that we built into the system

38:49around like trying to get good, good results

38:51out of the system.

38:52And you know, it's not a free.

38:56That stuff doesn't come for free, right?

38:57It's not like we all have perfect answers

38:59and nobody will have to get their feelings hurt

39:02or nobody will have to get downvoted.

39:04Like, it doesn't work that way, right?

39:06- So this is an interesting point and a small tangent.

39:09You write about anxiety.

39:12So I've posted a lot of questions

§07Transcript · 39:14–45:22

39:14and written answers on Stack Overflow.

39:16And the questions that I usually go to

39:18something very specific to something I'm working on.

39:21This is something you talk about

39:22that really the goal of Stack Overflow

39:25isn't about, is to write a question that's not about you.

39:29It's about the question that will help

39:33the community in the future.

39:35- Right, that's a tough sell, right?

39:37Because people are like, well, you know,

39:39I don't really care about the community.

39:40What I care about is my problem.

39:41- My problem.

39:42- And that's fair, right?

39:43It's sort of that, again, that tension,

39:44that balancing act.

39:45We wanna help you, but we also wanna help

39:47everybody that comes behind you, right?

39:48The long line of people are gonna come and say,

39:49oh, I kinda have that problem too, right?

39:52And if nobody's ever gonna come up and say,

39:54I have this problem too, then that question

39:55shouldn't exist on Stack Overflow

39:57because the question is too specific.

39:58And even that's tension, right?

40:00How do you judge that?

40:00How do you know that nobody's ever gonna have

40:02this particular question again?

40:04So there's a lot of tension in the system.

40:06- Do you think that anxiety of asking the question,

40:09the anxiety of answering that tension

40:12is inherent to programmers,

40:14is inherent to this kind of process,

40:16or can it be improved?

40:20Can it be happy land where that tension

40:24is not quite so harsh?

40:25- I don't think Stack Overflow can totally change

40:29the way it works.

40:30One thing they are working on, finally,

40:31is the Ask page had not changed since 2011.

40:35I'm still kinda bitter about this

40:36because I feel like you have a Q&A system

40:39and what are the core pages in a Q&A system?

40:41Well, first of all, the question,

40:42all the answers and also the Ask page,

40:43particularly when you're a new user

40:45or someone trying to ask a question,

40:46that's the point at which you need the most help.

40:48And we just didn't adapt with the times.

40:50But the good news is they're working on this,

40:52from what I understand,

40:53and it's gonna be a more wizard-based format.

40:55And you could envision a world

40:56where as part of this wizard-based program,

40:58when you're asking a question,

40:59so okay, come up with a good title.

41:01What are good words to put in the title?

41:02One word that's not good to put in the title

41:04is problem, for example.

41:05I have a problem.

41:06Oh, you have a problem.

41:07Okay, a problem, that's great, right?

41:10Like, you need specifics, right?

41:11Like, so it's trying to help you

41:12make a good question title, for example.

41:14That step will be broken out.

41:15All that stuff.

41:17But one of those steps in that wizard of asking

41:19could say, hey, I'm a little nervous.

41:21You know, I've never done this before.

41:22Can you put me in a queue for special mentoring, right?

41:26You could opt in to a special mentor.

41:27I think that would be fantastic.

41:28Like, I don't have any objection to that at all

41:31in terms of being an opt-in system.

41:32'Cause there are people that are like,

41:33you know, I just wanna help 'em.

41:35I wanna help a person no matter what.

41:36I wanna go above and beyond.

41:37I wanna spend hours with this person.

41:41It depends what their goals are, right?

41:42- It's a great idea.

41:43- Who am I to judge, right?

41:44So that's fine.

41:45It's not precluded from happening.

41:47But there's a certain big city ethos that we started with.

41:49Like, look, we're New York City.

41:51You don't come to New York City and expect them to be,

41:52oh, welcome to the city, Joe.

41:54How's it going?

41:55Come on in.

41:56Let me show you around.

41:57That's not how New York City works, right?

41:59I mean, and you know, again,

42:01New York City has a reputation for being rude,

42:03which I actually don't think it is

42:04having been there fairly recently.

42:05It's not rude.

42:06People are just like going about their business, right?

42:07They're like, look, I have things to do.

42:08I'm busy.

42:09I'm a busy professional, as are you.

42:11And since you're a busy professional,

42:13certainly when you ask a question,

42:14you're gonna ask the best possible question, right?

42:16Because you're a busy professional

42:18and you would not accept anything less

42:20than a very well-written question

42:21with a lot of detail about why you're doing it,

42:23what you're doing, what you researched,

42:25what you found, right?

42:26'Cause you're a professional like me, right?

42:28And this rubs people sometimes the wrong way.

42:31And I don't think it's wrong to say,

42:32look, I don't want that experience.

42:33I want just a more chill place for beginners.

42:37And I still think Stack Overflow

42:39was never designed for beginners, right?

42:41There's this misconception that,

42:43even Joel says sometimes,

42:44oh yeah, Stack Overflow for beginners.

42:46And I think if you're a prodigy, it can be.

42:48- Right, but for the most part not.

42:49- But that's not really representative, right?

42:52I think as a beginner,

42:53you want a totally different set of tools.

42:55You want live screen sharing, live chat.

42:58You want access to resources.

42:59You want a playground,

43:00like a playground you can experiment in and test,

43:03and all this stuff that we just don't give people

43:05because that was never really the audience

43:07that we were designing Stack Overflow for.

43:09That doesn't mean it's wrong.

43:10And I think it would be awesome

43:11if there was a site like that on the internet,

43:13or if Stack Overflow said,

43:14hey, we're gonna start doing this.

43:15That's fine too.

43:17I'm not there, I'm not making those decisions.

43:18But I do think the pressure,

43:20the tension that you described is there

43:22for people to be, look, I'm a little nervous

43:24'cause I know I gotta do my best work, right?

43:26- The other one is something you talk about,

43:28which is also really interesting to me,

43:30is duplicate questions.

43:33It's a really difficult problem that you highlight.

43:38- Super hard.

43:38- Like, you could take one little topic,

43:41and you could probably write 10, 20, 30 ways

43:44of asking about that topic,

43:46and they would be all different.

43:48I don't know if there should be one page

43:50that answers all of it.

43:51Is there a way that Stack Overflow

43:54can help disambiguate,

43:58like separate these duplicate questions,

44:01or connect them together?

44:02Or is it a totally hopeless, difficult, impossible task?

44:06- I think it's a very, very hard computer science problem,

44:08and partly 'cause people are very good

44:10at using completely different words.

44:11It always amazed me on Stack Overflow,

44:13you'd have two questions that were functionally identical,

44:15and one question had like zero words in common

44:17with the other question.

44:18I'm like, oh my God.

44:19From a computer science perspective,

44:20how do you even begin to solve that?

44:23And it happens all the time.

44:24People are super good at this, right?

44:26Accidentally at asking the same thing

44:28in like 10, 20 different ways.

44:31And the other complexity is we want

44:32some of those duplicates to exist,

44:33'cause if there's five versions with different words,

44:36have those five versions point

44:37to the one centralized answer, right?

44:39It's like, okay, this is duplicate, no worries.

44:41Here's the answer that you wanted over here on this,

44:44the prime example that we want to have,

44:48rather than having 10 copies of the question and the answer.

44:50Because if you have 10 copies of the question and answer,

44:52this also devalues the reputation system,

44:54which programmers hate, as I previously mentioned.

44:56You're getting reputation for an answer

44:58that somebody else already gave.

44:59It's like, well, it's an answer,

45:00but somebody else already gave that answer,

45:02so why are you getting reputation for the same answer

45:04as the other guy who gave it four years ago?

45:06People get offended by that, right?

45:07So the reputation system itself adds tension to the system,

45:11in that the people who have a lot of reputation

45:14become very incentivized to enforce the reputation system.

45:17And for the most part, that's good.

45:18I know it sounds weird, but for the most part,

45:20it's like, look, strict systems,

45:22I think to use Stack Overflow,

§08Transcript · 45:23–52:35

45:23you have to have the idea that,

45:24okay, strict systems ultimately work better.

45:26And I do think in programming,

45:28you're familiar with loose typing versus strict typing,

45:30right, the idea that you can declare a variable,

45:32not declare a variable, rather,

45:34just start using a variable,

45:34and okay, I see it's implicitly an integer,

45:36bam, awesome, duck equals five.

45:38Well, duck is now an integer of five, right?

45:40And you're like, cool, awesome, simpler, right?

45:42Why would I wanna worry about typing?

45:43And for a long time, in the Ruby community,

45:45they're like, yeah, this is awesome.

45:46You just do a bunch of unit testing,

45:48which is testing your program's validity after the fact

45:50to catch any bugs that strict typing

45:53of variables would have caught.

45:54And now you have this thing called TypeScript

45:56from Microsoft, from the guy who built C# Anders,

45:59who's one of the greatest minds in software development,

46:02right, like in terms of language design,

46:04and says, no, no, no, we wanna bolt on

46:06a strict type system to JavaScript

46:07'cause it makes things better.

46:08And now everybody's like, oh my God,

46:10we deployed TypeScript and found 50 latent bugs

46:13that we didn't know about, right?

46:14Like, this is super common.

46:15So I think there is a truth in programming

46:19that strictness, it's not the goal.

46:22We're not saying be super strict

46:23'cause strictness is correct.

46:25No, it's no, no, strictness produces better results.

46:28That's what I'm saying, right?

46:29So strict typing of variables,

46:31I would say you almost universally have consensus now

46:33is basically correct, should be that way in every language.

46:37Duck equals five should generate an error

46:39'cause no, you didn't declare,

46:40you didn't tell me that duck was an integer, right?

46:42That's a bug, right?

46:43Or maybe you mistyped, you typed deck, right,

46:45instead of duck, right?

46:46You never know, this happens all the time, right?

46:48So with that in mind, I will say

46:50that the strictness of the system is correct.

46:52Now, that doesn't mean cruel, that doesn't mean mean,

46:54that doesn't mean angry, it just means strict, okay?

46:57So I think where there's misunderstanding is,

46:59and people get cranky, right?

47:00Like another question you asked is like,

47:02why are programmers kind of mean sometimes?

47:05Well, who do programmers work with all day long?

47:07So I have a theory that if you're at a job

47:10and you work with assholes all day long,

47:12what do you eventually become?

47:14- An asshole. - An asshole.

47:15And what is the computer except the world's biggest asshole?

47:19Because the computer has no time for your bullshit.

47:21The computer, the minute you make a mistake,

47:23everything else crashing down, right?

47:25One semicolon has crashed space missions, right?

47:28So that's normal.

47:28So you begin to internalize that, you begin to think,

47:31oh, my coworker, the computer, is super strict

47:35and kind of a jerk about everything.

47:37So that's kind of how I'm gonna be,

47:39because I work with this computer

47:41and I have to accede to its terms on everything.

47:44So therefore, you start to absorb that

47:46and you start to think, oh, well, being really strict

47:48arbitrarily is really good.

47:50An error of error code 56249 is a completely good error

47:53message 'cause that's what the computer gave me, right?

47:56So you kind of forget to be a person at some level.

47:59And you know how they say great detectives

48:01internalize criminals and kind of are criminals themselves?

48:04Like this trope of the master detective is good

48:07'cause he can think like the criminal.

48:08Well, I do think that's true of programmers.

48:10Really good programmers think like the computer

48:12because that's their job.

48:14But if you internalize it too much,

48:15you become the computer and you kind of become

48:18a jerk to everybody because that's what you've internalized.

48:21- You're almost not a jerk, but you have no patience

48:24for a lack of strictness, as you said.

48:26- It's not out of a sense of meanness, it's accidental.

48:28But I do believe it's an occupational hazard

48:30of being a programmer is you start

48:31to behave like the computer.

48:33You're very unforgiving, you're very terse,

48:35you're very, oh, wrong, incorrect, move on.

48:38It's like, well, can you help me?

48:39Like, what could I do to fix, nope, wrong, next question.

48:43Right, like that's normal for the computer, right?

48:46Just fail, next, right?

48:47Like, I don't know if you remember in Saturday Night Live,

48:51like in the '90s, they had this character who was an IT guy.

48:54- Yeah. - The Move guy, move.

48:56- Was that Jimmy Fallon?

48:58No, no.

48:59- Can't remember. - Who played him?

49:01Okay, yeah, I remember, move.

49:02- Right, he had no patience for it.

49:04- Might have been Mad TV, actually.

49:05- Oh, was it Mad TV?

49:06Might have been, might have been.

49:07But anyway, that's always been the perception, right?

49:10You start to behave like the computer.

49:12It's like, oh, you're wrong, out of the way, you know?

49:14- You've written so many blog posts about programming,

49:17about programs, programming, programmers.

49:22What do you think makes a good,

49:25let's start with what makes a good solo programmer?

49:29- Well, I don't think you should be a solo programmer.

49:31I think to be a good solo programmer,

49:33it's kinda like what I talked about, well, not on mic,

49:35but one of the things John Carmack,

49:37one of the best points he makes in the book

49:40"Masters of Doom," which is a fantastic book,

49:42and anybody listening to this who hasn't read it,

49:43please read it, it's such a great book,

49:45is that at the time they were working on stuff

49:48like Wolfenstein and Doom,

49:50they didn't have the resources that we have today.

49:52They didn't have Stack Overflow,

49:53they didn't have Wikipedia,

49:54they didn't have discourse forums,

49:56they didn't have places to go to get people to help them.

50:00They had to work on their own.

50:01And that's why it took a genius like Carmack

50:03to do this stuff, 'cause you had to be a genius

50:05to invent from first principles.

50:07A lot of the stuff he was,

50:08the hacks he was coming up with were genius,

50:11genius-level stuff.

50:11But you don't need to be a genius anymore,

50:13and that means not working by yourself.

50:15You have to be good at researching stuff online,

50:17you have to be good at asking questions,

50:19really good questions that are really well researched,

50:20which implies, oh, I went out and researched

50:22for three hours before I wrote this question.

50:24It's like, that's what you should be doing,

50:25because that's what's gonna make you good, right?

50:28To me, this is the big difference between programming

50:29in the '80s versus programming today,

50:32is you kinda had to be by yourself back then.

50:34Where would you go for answers?

50:36I remember in the early days,

50:37when I was learning Visual Basic for Windows,

50:41I would call the Microsoft helpline on the phone

50:44when I had a program, 'cause I was like,

50:46I don't know what to do.

50:46So I would go and call, and they had these huge phone banks,

50:49and I'm like, can you imagine how alien that is now?

50:51Who would do that?

50:52Like, that's crazy.

50:53So there was just nowhere else to go when you got stuck.

50:57I had the books that came with it.

50:59I read those, studied those religiously.

51:01I just saw a post from Steve Sanofsky

51:03that said the C++ version seven came with 10,000 pages

51:08of written material, because where else

51:11were you gonna figure that stuff out?

51:13Go to the library?

51:14I mean, you didn't have Wikipedia.

51:15You didn't have Reddit.

51:17You didn't have anywhere to go to answer these questions.

51:20- So you've talked about, through the years,

51:24basically not having an ego and not thinking

51:26that you're the best programmer in the world.

51:29And so always kind of just looking to improve,

51:34to become a better programmer than you were yesterday.

51:36So how have you changed as a programmer

51:39and as a thinker, designer around programming

51:43over the past, what is it, 15 years,

51:47really, of being a public figure?

51:48- I would say the big insight that I had

51:50is eventually, as a programmer,

51:52you have to kind of stop writing code to be effective,

51:54which is kind of disturbing, 'cause you really love it.

51:58But you realize being effective at programming

52:02in the general sense doesn't mean writing code.

52:05And a lot of times you can be much more successful

52:06by not writing code than writing code

52:08in terms of just solving the problems you have.

52:10Essentially hiring people that are really good

52:12and setting them free and giving them basic direction

52:16on strategy and stuff.

52:17'Cause a lot of the problems you encounter

52:19aren't necessarily solved through really gnarly code.

52:22They're solved by conceptual solutions,

52:25which can then be turned into code.

52:26But are you even solving the right problem?

52:28I mean, so I would say for me,

52:31the main insight I have is to succeed as a programmer,

52:35you eventually kind of stop writing code.

§09Transcript · 52:37–59:15

52:37That's going to sound discouraging, probably,

52:39to people who are hearing, but I don't mean it that way.

52:40What I mean is that you're coding

52:42in a higher level language.

52:43Eventually, like, okay, so we're coding

52:44in assembly language, right?

52:45That's the beginning, right?

52:46You're hard-coded to the architecture.

52:48Then you have stuff like C, where it's like,

52:49wow, we can abstract across the architecture.

52:52You can write code.

52:52I can then compile that code for ARM

52:54or whatever, X86 or whatever else is out there.

52:58And then even higher level than that, right?

53:00Like you're looking at Python, Ruby, interpreted languages.

53:02And then to me as a programmer, like, okay,

53:04I want to go even higher.

53:05I want to go higher than that.

53:07How do I abstract higher than language?

53:08It's like, well, you abstract in spoken language

53:11and written language, right?

53:12Like you're sort of inspiring people to get things done,

53:14giving them guidance, like, what if we did this?

53:16What if we did this?

53:17You're writing in the highest level language that there is,

53:19which is, for me, English, right?

53:21Whatever your spoken language is.

53:23So it's all about being effective, right?

53:25And I think Patrick McKenzie, patio 11 on Hacker News

53:30and works at Stripe, has a great post about this,

53:33of how calling yourself a programmer

53:35is a career limiting move at some level,

53:38once you get far enough from your career.

53:39And I really believe that.

53:40And again, I apologize, this is sound discouraging.

53:43I don't mean it to be, but he's so right.

53:45Because all the stuff that goes on around the code,

53:47like the people, like that's another thing,

53:49if you look at my early blog entries,

53:51it was about, wow, programming is about people

53:54more than it's about code,

53:55which doesn't really make sense, right?

53:56But it's about, can these people even get along together?

53:59Can they understand each other?

54:00Can you even explain to me what it is you're working on?

54:02Are you solving the right problem?

54:04Peopleware, right?

54:05Another classic programming book, which again,

54:07up there with CodeComplete, please read Peopleware.

54:09It's that software is people, right?

54:11People are the software first and foremost.

54:13So a lot of the skills that I was working on

54:15early in the blog were about figuring out

54:18the people parts of programming,

54:19which were the harder parts.

54:20The hard part of programming,

54:21once you get a certain skill level in programming,

54:23you can pretty much solve any reasonable problem

54:25that's put in front of you.

54:26You're not writing algorithms from scratch, right?

54:28That just doesn't happen.

54:29So any sort of reasonable problem put in front of you,

54:31you're gonna be able to solve.

54:32But what you can't solve is our manager is a total jerk.

54:36You cannot solve that with code.

54:38That is not a code-solvable problem.

54:40And yet that will cripple you way more than,

54:43oh, we had to use this stupid framework I don't like,

54:45or Sam keeps writing bad code that I hate,

54:49or Dave is off there in the wilderness

54:52writing God knows what, right?

54:53These are not your problems.

54:54Your problem is your manager or a coworker

54:56is so toxic to everybody else in your team

54:58that nobody can get anything done

55:00because everybody's so stressed out and freaked out, right?

55:02These are the problems that you have to attack.

55:04- Absolutely, and so as you go to these

55:06higher level abstractions, as you've developed

55:08as a programmer to higher, higher level abstractions

55:10and go into natural language,

55:12you're also the guy who kind of preached building it,

55:16diving in and doing it, and learn by doing.

55:21Do you worry that as you get to higher,

55:28higher level abstractions, you lose track

55:31of the lower level of just building?

55:35Is like, do you worry about that?

55:37Even, not maybe now, but 10 years from now,

55:3920 years from now?

55:41- Well, no, I mean, there is always that paranoia,

55:43and oh gosh, I don't feel it's valuable

55:45since I'm not writing code.

55:46But for me, when we started the Discourse project,

55:48it was Ruby, which I didn't really know Ruby.

55:50I mean, as you pointed out,

55:51and this is another valuable observation from Stack Overflow,

55:53you can be super proficient, for example, C#,

55:56which I was working in, that's when we built Stack Overflow,

55:57and still is written in,

55:59and then switch to Ruby, and you're a newbie again.

56:01But you have the framework.

56:03I know what a for loop is.

56:04I know what recursion is.

56:05I know what a stack trace is.

56:10I have all the fundamental concepts to be a programmer,

56:12I just don't know Ruby.

56:12So I'm still on a higher level.

56:14I'm not like a beginner, beginner, like you're saying.

56:16I'm just like, I need to apply my programming concepts

56:18I already know to Ruby.

56:20- Well, so there's a question that's really interesting.

56:23So looking at Ruby, how do you go about learning enough

56:26that your intuition can be applied, carried over?

56:29- That's what I was trying to get to.

56:30What I realized, particularly when I started

56:31with just me and Robin, I realized,

56:33if I bother Robin, I am now costing us productivity.

56:37Every time I go to Robin, rather than building

56:39our first alpha version of discourse,

56:43he's now answering my stupid questions about Ruby.

56:46Is that a good use of his time?

56:47Is that a good use of my time?

56:49And the answer to both of those was resoundingly no.

56:51We were getting to an alpha, and it was pretty much just,

56:55okay, we'll hire more programmers.

56:56Like we eventually hired Neil, and then eventually Sam,

57:00who came in as a co-founder.

57:01Actually, it was Sam first, then Neil later.

57:05But the answer to the problem is just hire

57:06other competent programmers.

57:07It's not like teach, now I shall pull myself up

57:10by my bootstraps and learn Ruby.

57:12But at some point, writing code becomes a liability to you

57:16in terms of getting things done.

57:17There's so many other things that go on in the project,

57:19like building the prototype.

57:20You mentioned, well, how do you, if you're not writing code,

57:23how does everybody keep focused on what are we building?

57:25Well, first, basic mock-ups and research, right?

57:28Like what do we even want to build?

57:30There's a little bit of that that goes on.

57:31But then very quickly, you get to the prototype stage.

57:32Like build a prototype, let's iterate on the prototype

57:34really, really rapidly.

57:35And that's what we do at Discourse.

57:36And that's what we demoed to get our seed funding

57:38for Discourse was the alpha version of Discourse

57:42that we had running and ready to go.

57:43And it was very, it was bad.

57:45I mean, it was, I'll just tell you it was bad.

57:47We have screenshots of it, and I'm just like embarrassed

57:49to look at it now.

57:50But it was the prototype.

57:51We were figuring out like what's working,

57:52what's not working.

57:53'Cause there's such a broad gap between

57:56the way you think things will work in your mind

57:59or even on paper, and the way they work

58:01once you sit and live in the software,

58:03like actually spend time living and breathing on software,

58:05so different.

58:06So my philosophy is get to a prototype,

58:10and then what you're really optimizing for

58:12is speed of iteration, like how you can turn the crank,

58:14how quickly can we iterate?

58:16That's the absolutely critical metric

58:18of any software project.

58:19And I had a tweet recently that people liked,

58:20and I totally, this is so fundamental to what I do,

58:23is like if you wanna measure the core competency

58:25of any software tech company,

58:27it's the speed at which somebody can say,

58:29hey, we really need this word in the product

58:31changed to this word, right?

58:32Because it will be more clear to the users,

58:34like what, like instead of respond,

58:35it's reply or something.

58:36But there's some, from the conception of that idea

58:39to how quickly that single word can be changed

58:42in your software and rolled out to users,

58:43that is your life cycle.

58:44That's your health, your heartbeat.

58:47If your heartbeat is like super slow,

58:50you're basically dead.

58:51No, seriously.

58:52If it takes two weeks or even a month

58:55to get that single word change,

58:56they're like, oh my God, this is a great idea.

58:57That word is so much clearer.

58:58I'm talking about like a super,

59:00like everybody's on board for this change.

59:01It's not like, let's just change a word 'cause we're bored.

59:03It's like, this is an awesome change.

59:05And then it takes months to roll out.

59:06It's like, well, you're dead.

59:07Like you can't iterate.

59:09You can't, how are you gonna do anything, right?

59:12So anyway, about the heartbeat,

59:13it's like get the prototype and then iterate on it.

59:15That's what I view as like the central tenet

§10Transcript · 59:18–1:06:17

59:18of modern software development.

59:20- That's fascinating that you put it that way.

59:21It's actually, so I work in, I build autonomous vehicles.

59:24And when you look at what,

59:27maybe compare Tesla to most other automakers,

59:29the psych, the whatever, the heartbeat for Tesla

59:34is literally days now in terms of they can over the air

59:38deploy software updates to all their vehicles,

59:41which is markedly different than every other automaker,

59:44which takes years to update a piece of software.

59:49And so, and that's reflected in everything that's,

59:52the final product, it's reflected in really

59:56how slowly they adapt to the times.

59:58- And to be clear, I'm not saying being a hummingbird

59:59is the goal either.

60:00It's like, you don't want a heartbeat that's like so fast.

60:02It's like you're just freaking out.

60:04But like, it is a measure of health.

60:05You should have a healthy heartbeat.

60:07It's up to, for people listening to this,

60:08decide what that means, but it has to be healthy.

60:10It has to be reasonable 'cause otherwise

60:12you're just gonna be frustrated 'cause like,

60:13that's how you build software.

60:15You make mistakes, you roll it out, you live with it.

60:17You see what it feels like and say,

60:18oh God, that was a terrible idea.

60:19Oh my gosh, this could be even better if we did Y, right?

60:22You turn the crank and then the more you do that,

60:24the faster you get ahead of your competitors ultimately

60:27because it's rate of change, right?

60:29Delta V, right?

60:30How fast are you moving?

60:32Well, within a year, you're gonna be miles away

60:34by the time they catch up with you, right?

60:36Like that's the way it works.

60:37And plus users, like as a software developer,

60:40I love software that's constantly changing

60:42because I don't understand people get super pissed off

60:45when like, oh, they changed the software on me.

60:47How dare they?

60:47I'm like, yes, change the software.

60:49Change it all the time, man.

60:50That's what makes this stuff great

60:52is that it can be changed so rapidly

60:55and become something that is greater than it is now.

60:58Now granted, there's some changes that suck, I admit.

61:01I've seen it many times.

61:02But in general, it's like,

61:03that's what makes software cool, right?

61:05Is that it is so malleable.

61:06Like fighting that is like weird to me

61:08'cause it's like, well, you're fighting the essence

61:10of the thing that you're building.

61:12Like that doesn't make sense.

61:12You wanna really embrace that.

61:13Not to be a hummingbird,

61:15but like embrace it to a healthy cycle of your heartbeat.

61:18- So you talk about that people really don't change.

61:20It's true.

61:22That's why probably a lot of the stuff you write about

61:24in your blog probably will remain true.

61:27- There's a flip side of the coin.

61:28People don't change.

61:29So investing in understanding people

61:31is like learning Unix in 1970

61:34because nothing has changed, right?

61:37Like all those things you've learned about people

61:38will still be valid 30, 40 years from now.

61:40Whereas if you learn the latest JavaScript framework,

61:43that's gonna be good for like two years, right?

61:45- Exactly.

61:46So, but if you look at the future of programming,

61:49so there's a people component,

61:51but there's also the technology itself.

61:54Do you, what do you see as the future of programming?

61:57Will it change significantly?

61:59Or as far as you can tell,

62:00people are ultimately programming

62:04and so it will not,

62:05it's not something that you foresee changing

62:08in any fundamental way.

62:10- Well, you gotta go look back

62:11on sort of the basics of programming.

62:14And one of the things that always shocked me

62:15is like source control.

62:16Like I didn't learn anything about source control.

62:18Now granted, I graduated from college in 1992,

62:22but I remember hearing from people

62:24like as late as like 1998, 1999,

62:26like even maybe today,

62:27they're not learning source control.

62:28And to me, it's like,

62:29well, how can you not learn source control?

62:31That is so fundamental to working with other programmers,

62:34working in a way that you don't lose your work.

62:35Like just basic software,

62:37the literal bedrock of software development

62:40is source control.

62:41Now you compare today, like GitHub, right?

62:42Like Microsoft bought GitHub,

62:43which I think was an incredibly smart acquisition move

62:45on their part.

62:46Now they have anybody who wants like reasonable

62:49source control to go sign up on GitHub.

62:50It's all set up for you, right?

62:52There's tons of walkthroughs, tons of tutorials.

62:55So from the concept of like,

62:56has programming advanced from say 1999?

62:58It's like, well, hell, we have GitHub.

63:00I mean, my God, yes, right?

63:01Like it's massively advanced over what it was.

63:04Now as to whether programming is significantly different,

63:08I'm gonna say no,

63:09but I think the baseline of like what we view

63:12as like fundamentals will continue to go up

63:15and actually get better.

63:16Like source control, for example.

63:17That's one of the fundamentals that has gotten,

63:19I mean, hundreds of orders of magnitude better

63:22than it was 10, 20 years ago, right?

63:23- So those are the fundamentals.

63:24Let me introduce two things that maybe you can comment on.

63:28So one is mobile phones.

63:31So that could fundamentally transform what programming is,

63:35or maybe not, maybe you can comment on that.

63:39And the other one is artificial intelligence,

63:41which promises to, in some ways,

63:45to do some of the programming for you,

63:48is one way to think about it.

63:49So it's really what a programmer is,

63:51is using the intelligence that's inside your skull

63:55to do something useful.

63:58The hope with artificial intelligence

63:59is that it does some of the useful parts for you

64:02the way you don't have to think about it.

64:03So do you see smartphones,

64:06the fact that everybody has one,

64:07and they're getting more and more powerful

64:09as potentially changing programming?

64:11And do you see AI as potentially changing programming?

64:14- Okay, so that's good.

64:15So smartphones have definitely changed.

64:17I mean, since, I guess, 2010 is when

64:19they really started getting super popular.

64:21I mean, in the last eight years,

64:24the world has literally changed, right?

64:25Like, everybody carries a computer around,

64:27and that's normal.

64:28I mean, that is such a huge change in society.

64:31I think we're still dealing with a lot of the positive

64:33and negative ramifications of that, right?

64:35Like, everybody's connected all the time,

64:36everybody's on the computer all the time.

64:37That was my dream world as a geek, right?

64:40But it's like, be careful what you ask for, right?

64:41Like, wow, now everybody has a computer,

64:44and it's not quite the utopia

64:45that we thought it would be, right?

64:46Computers can be used for a lot of stuff

64:48that's not necessarily great.

64:51So to me, that's the central focus of the smartphone

64:53is just that it puts a computer in front of everyone,

64:55granted a small, small-ish touchscreen computer.

64:59But as for programming, like, I don't know.

65:00I don't think that, I've kind of, over time,

65:03come to subscribe to the Unix view of the world

65:05when it comes to programming.

65:06It's like, you want to teach these basic command line things,

65:10and that is just what programming's gonna be

65:11for, I think, a long, long time.

65:14I don't think there's any magical, like, visual programming

65:17that's gonna happen.

65:18I just, I don't know.

65:20I've, over time, have become a believer

65:22in that Unix philosophy of just, you know,

65:24they kind of had it right with Unix.

65:26That's gonna be the way it is for a long, long time.

65:28And we'll continue to, like I said, raise the baseline.

65:31The tools will get better, it'll get simpler,

65:32but it's still fundamentally gonna be command line tools,

65:35you know, fancy IDEs.

65:37That's kind of it for the foreseeable future.

65:39I'm not seeing any visual programming stuff on the horizon.

65:42'Cause you kind of think, like,

65:43what do you do on a smartphone

65:44that would be directly analogous to programming?

65:46Like, I'm trying to think, right?

65:48And there's really not much.

65:49- So, not necessarily analogous to programming,

65:55but the kind of things that,

66:00the kind of programs you would need to write

66:04might need to be very different.

66:06- Yeah.

66:08- And the kind of languages, I mean,

66:09but I probably also subscribe to the same,

66:12just because everything in this world

66:14might be written in JavaScript.

66:16- Oh yeah, that's already happening.

66:17I mean, discourse is a bet.

§11Transcript · 1:06:18–1:13:05

66:18Discourse is itself JavaScript,

66:20is another bet on that side of the table.

66:21And I still strongly believe in that.

66:23So I would say smartphones have mostly a cultural shift,

66:25more than a programming shift.

66:27Now, your other question was about artificial intelligence

66:30and, like, sort of devices predicting

66:32what you're gonna do.

66:33I do think there's some strength to that.

66:34I think artificial intelligence is kind of overselling it

66:37in terms of what it's doing.

66:37It's more like, people are predictable, right?

66:39People do the same things.

66:40Like, let me give you an example.

66:42One check we put into discourse

66:44that's in a lot of big commercial websites is,

66:48say you log in from New York City now,

66:51and then an hour later, you log in from San Francisco.

66:54It's like, well, hmm, that's interesting.

66:56How did you get from New York to San Francisco in one hour?

66:59So at that point, you're like, okay,

67:01this is a suspicious login at that point.

67:02So we would alert you.

67:03It's like, okay, but that's not AI, right?

67:05That's just a heuristic of, like,

67:07how did you in one hour get 2,000 miles, right?

67:11That doesn't, I mean, you're on a VPN,

67:12there's other ways it's happened,

67:13but that's just a basic prediction

67:15based on the idea that people pretty much

67:17don't move around that much.

67:19Like, they may travel occasionally,

67:20but nobody, I mean, unless you're a traveling salesman

67:22that's literally traveling the world every day,

67:25like, there's so much repetition and predictability

67:28in terms of things you're going to do.

67:29And I think good software anticipates your needs.

67:31Like, for example, Google, I think it's called Google Now

67:34or whatever that Google thing is that predicts your commute

67:36and predicts based on your phone location,

67:37like, where are you every day?

67:39Well, that's probably where you work, that kind of stuff.

67:42I do think computers can get a lot better at that,

67:43but I hesitate to call it like full-blown AI.

67:46It's just computers getting better at like,

67:48first of all, they have a ton of data

67:49'cause everybody has a smartphone.

67:50Now all of a sudden we have all this data

67:52that we didn't have before about location,

67:53about like, you know, communication,

67:56and feeding that into some basic heuristics

67:59and maybe some fancy algorithms

68:00that turn it into predictions of anticipating your needs,

68:03like a friend would, right?

68:04Like, oh, hey, I see you're home.

68:06Would you like some dinner, right?

68:07Like, let's go get some food

68:08'cause that's usually what we do this time of day, right?

68:10- In the context of actually the active programming,

68:13do you see IDEs improving

68:15and making the life of programming better?

68:17- I do think that is possible

68:18'cause there's a lot of repetition in programming, right?

68:20Oh, you know, Clippy would be the bad example of,

68:23oh, I see, it looks like you're writing a for loop.

68:25But there are patterns in code, right?

68:27Like, and actually libraries are kind of like that, right?

68:30Like, rather than go, you know,

68:33code up your own HTTP request library,

68:35it's like, well, you'd use one of the existing ones

68:37that we have that's already troubleshot, right?

68:39That's not AI per se, it's just, you know,

68:42building better Lego bricks, bigger Lego bricks

68:46that have more functionality in them

68:47so people don't have to worry

68:48about the low-level stuff as much anymore.

68:50Like WordPress, for example, to me is like a tool

68:53for somebody who isn't a programmer to do something.

68:55I mean, you can turn WordPress into anything.

68:57It's kind of crazy actually through plugins, right?

68:59And that's not programming per se.

69:01It's just Lego bricks stacking WordPress elements, right?

69:04And a little bit of configuration glue.

69:06So I would say maybe in a broader sense,

69:08what I'm seeing like, there'll be more gluing

69:11and less like actual programming.

69:14And that's a good thing, right?

69:15'Cause most of the stuff you need

69:16is kind of out there already.

69:17- You said 1970s Unix.

69:20Do you see PHP and these kind of old remnants

69:28of the early birth of programming

69:31remaining with us for a long time?

69:33Like you said, Unix in itself.

69:35Do you see ultimately, you know,

69:37this stuff just being there out of momentum?

69:42- I kind of do.

69:44I mean, I was a big believer in Windows early on

69:46and I was a big, you know, I was like,

69:47Unix, what a waste of time.

69:48But over time I've completely flipped on that

69:50where I was like, okay, the Unix guys were right.

69:51And pretty much Microsoft and Windows were kind of wrong,

69:54at least on the server side.

69:55Now on the desktop, right, you need a GUI,

69:57you need all that stuff.

69:58And yeah, the two philosophies,

69:59like Apple built on Unix, effectively Darwin.

70:02And on the desktop it's a slightly different story,

70:04but on the server side where you're gonna be programming,

70:06now it's a question of where the programming's gonna be.

70:08Is it gonna be a lot more like client-side programming?

70:10'Cause technically, Discourse is client-side programming.

70:13The way you get Discourse,

70:14we deliver a big ball of JavaScript,

70:16which is then executed locally.

70:18So we're really using a lot more local computing power.

70:20We'll still retrieve the data, obviously.

70:22We have to display the posts on the screen and so forth.

70:24But in terms of like sorting and a lot of the basic stuff,

70:26we're using the host processor.

70:29But to the extent that a lot of programming

70:31is still gonna be server-side,

70:32I would say, yeah, the Unix philosophy definitely won.

70:35And there'll be different veneers over Unix,

70:38but it's still, if you peel away one or two layers,

70:40it's gonna be Unix-y for a long,

70:42I think Unix won, I mean, so definitively.

70:45- It's interesting to hear you say that,

70:47because you've done so much excellent work

70:49on the Microsoft side in terms of backend development.

70:52Cool.

70:53So what's the future hold for Jeff Atwood?

70:56I mean, the discourse, continuing the discourse

71:01in trying to improve conversation on the web?

71:03- Well, discourse is what I viewed as a,

71:05and originally I called it a five-year project,

71:07then really quickly revised that to a 10-year project.

71:08So we started in early to the 2013,

71:12that's when we launched the first version.

71:13So we're still five years in.

71:16This is the part where it starts getting good.

71:17Like we have a good product now.

71:18Discourse, there's any project you build in software,

71:21it takes three years to build

71:22what you want it to build anyway.

71:24Like V1 is gonna be terrible, which it was.

71:26But you ship it anyway,

71:27'cause that's how you get better at stuff.

71:28It's about turning the crank.

71:29It's not about V1 being perfect, 'cause that's ridiculous.

71:32It's about V1, then let's get really good at V1.1,

71:351.2, 1.3, like how fast can we iterate?

71:37And I think we're iterating like crazy on discourse

71:40to the point that like, it's a really good product now.

71:41We have serious momentum.

71:43And my original vision was,

71:46I wanna be the WordPress of discussion,

71:48meaning someone came to you and said,

71:49I wanna start a blog.

71:50Although the very question is kind of archaic now.

71:52It's like, who actually blogs anymore?

71:55But I wanted the answer to that to be,

71:58it would be WordPress normally,

72:01'cause that's the obvious choice

72:02for blogging most of the time.

72:04But if someone said, hey, I need a group of people

72:06to get together and do something,

72:08the answer should be discourse, right?

72:10That should be the default answer for people.

72:11'Cause it's open source, it's free,

72:13doesn't cost you anything.

72:14You control it, you can run it.

72:15Your minimum server cost for discourse

72:17is five bucks a month at this point.

72:19They actually got the VPS prices down.

72:21It used to be $10 a month for one gigabyte of RAM,

72:23which we're, our dependent,

72:26we have a kind of heavy stack.

72:28Like there's a lot of stuff in discourse.

72:30You need Postgres, you need Redis,

72:31you need Ruby on Rails,

72:33you need a sidekick for scheduling.

72:35It's not a trivial amount of stuff,

72:36'cause we were architected for like,

72:37look, we're building for the next 10 years.

72:39I don't care about shared PHP hosting.

72:41That's not my model.

72:44My idea is like, hey, eventually,

72:45this is gonna be very cheap for everybody,

72:47and I wanna build it right using, again,

72:50higher, bigger building block levels, right,

72:53that have more requirements.

72:54- And there's a WordPress model of WordPress.org,

72:56WordPress.com.

72:57Is there a central hosting for discourse, or no?

73:01- There is.

73:01We're not strictly segmenting into the open source

73:03versus the commercial side.

73:05We have a hosting business.

§12Transcript · 1:13:06–1:19:42

73:06That's how discourse makes money,

73:07is we host discourse instances,

73:08and we have a really close relationship

73:09with our customers of the symbiosis

73:12of them giving us feedback on the product.

73:14We definitely weight feedback from customers

73:16a lot heavier than feedback from somebody

73:18who just wanders by and gives feedback.

73:20But that's where we make all our money.

73:22But we don't have a strict division.

73:24We encourage people to use discourse.

73:26The whole point is that it's free, right?

73:29Anybody can set it up.

73:29I don't wanna be the only person that hosts discourse.

73:32That's absolutely not the goal.

73:34But it is a primary way for us to build a business,

73:36and it's actually kind of a great business.

73:37I mean, the business is going really, really well

73:40in terms of hosting.

73:41- So I used to work at Google Research

73:44as a company that's basically funded on advertisement.

73:47So it's Facebook.

73:48Let me ask if you can comment on it.

73:50- I think advertisement at its best.

73:53So you'd be extremely critical on what ads are,

73:56but at its best, it's actually serving you.

73:59In a sense, it's giving you,

74:01it's connecting you to what you would want to explore.

74:05So it's like related posts or related content.

74:08It's the same.

74:08That's the best of advertisement.

74:10So discourse is connecting people based on their interest.

74:15It seems like a place where advertisement at its best

74:20could actually serve the users.

74:21Is that something that you're considering thinking about

74:24as a way to financially support the platform?

74:29- That's interesting because I actually have

74:31a contrarian view of advertising,

74:32which I kind of agree with you.

74:33I recently installed AdBlocker reluctantly

74:36'cause I don't like to do that.

74:38But the performance of the ads, man,

74:40they're so heavy now, and it's just crazy.

74:43So it's almost like a performance argument

74:45more than I actually am pro ads.

74:47And I have a contrarian viewpoint.

74:49I agree with you.

74:50If you do ads right, it's serving you stuff

74:51you'll be interested in anyway.

74:53I don't mind that.

74:54That actually is kind of a good thing.

74:56So plus I think it's rational to want to support

75:00the people that are doing this work

75:01through seeing their ads.

75:02But that said, I run AdBlock now,

75:04which I didn't want to do,

75:06but I was convinced by all these articles,

75:08like 30, 40 megabytes of stuff just to serve you ads.

75:11- Yeah, it feels like ads now are like the experts exchange

75:15of whenever you started Stack Overflow.

75:18It's a little bit, it's overwhelming.

75:19- Oh, there's so many companies in ad tech, though.

75:21It's embarrassing.

75:21You can do that.

75:22Have you seen those logo charts of just the whole page?

75:24You can't even see them, they're so small.

75:26There's so many companies in this space.

75:27But since you brought it up, I do want to point out

75:29that very, very few discourse sites

75:31actually run using an ad-supported model.

75:33It's not effective.

75:34It's too diluted, it's too weird, it doesn't pay well,

75:39and users hate it.

75:40So it's a combination of users hate it,

75:42it doesn't actually work that well in practice.

75:44In theory, yes, I agree with you.

75:45If you had clean, fast ads that were exactly

75:48the stuff you would be interested in, awesome.

75:50We're so far from that, though, right?

75:52Like, Google does an okay job.

75:53They do retargeting and stuff like that,

75:55but in the real world, discourse sites

75:59rarely can make ads work.

76:01It just doesn't work for so many reasons.

76:03But you know what does work is subscriptions,

76:05Patreon, affiliate codes for like Amazon,

76:10of like just, oh, here's a cool yo-yo, click,

76:13and then you click and go to Amazon,

76:14and they get a small percentage of that,

76:15which is fair, I think.

76:17I mean, 'cause you saw the yo-yo on that site,

76:19and you click through, and you bought it, right?

76:21And that's fair for them to get 5% of that,

76:22or 2% of that, or whatever it is.

76:24Those things definitely work.

76:25In fact, a site that I used to participate on a lot,

76:28I helped the owner.

76:29One of the things, I got them to switch to discourse.

76:32I basically paid them to switch to discourse,

76:34'cause I was like, look, you guys gotta switch.

76:35I can't come here anymore, this is terrible software.

76:38But I was like, look, and on top of that,

76:40like, you're serving people ads that they hate.

76:42Like, you should just go full on Patreon,

76:43'cause he had a little bit of Patreon.

76:45Go full on Patreon, do the Amazon affiliates thing,

76:49for any Amazon links that get posted,

76:51and just do that, and just triple down on that stuff.

76:53And that's worked really well for them,

76:55and this creator in particular.

76:56So that stuff works, but traditional ads,

76:59I mean, definitely not working, at least on discourse.

77:01- So last question.

77:03You've created the Code Keyboard.

77:05I've programmed most of my adult life

77:07on a Kinesis keyboard.

77:09I have one upstairs now.

77:12Can you describe what a mechanical keyboard is,

77:14and why is it something that makes you happy?

77:16- Well, you know, this is another fetish item, really.

77:18Like, it's not required.

77:20You can do programming on any kind of keyboard, right?

77:22Even like an on-screen keyboard, oh God,

77:24that's terrifying, right?

77:25But you could.

77:27I mean, if you look back at the early days of computing,

77:28there were chiclet keyboards, which are,

77:30I mean, those are awful, right?

77:31But-- - What's a chiclet keyboard?

77:32- Oh, God, okay, well, it's just like

77:34thin rubber membranes.

77:36- Oh, the rubber ones, oh no.

77:37- Super bad, right? - Yeah.

77:38- So it's a fetish item.

77:40All that really says is, look, I care really about keyboards,

77:43'cause the keyboard is the primary method

77:44of communication with the computer, right?

77:46So it's just like having a nice mic for this podcast.

77:49You want a nice keyboard, right?

77:50'Cause it has a very tactile feel.

77:52I can tell exactly when I press the key.

77:53I get that little click, so oh, and it feels good.

77:56And it's also kind of a fetish item.

77:57It's like, wow, I care enough about programming

78:00that I care about the tool, the primary tool,

78:02that I use to communicate with the computer,

78:03make sure it's as good as it feels good to use for me,

78:06and like, I can be very productive with it.

78:08So to be honest, it's a little bit of a fetish item,

78:10but a good one.

78:11It indicates that you're serious,

78:12it indicates you're interested,

78:13it indicates that you care about the fundamentals,

78:15'cause you know what makes you a good programmer?

78:17Being able to type really fast, right?

78:18Like, this is true, right?

78:20So a core skill is just being able to type fast enough

78:23to get your ideas out of your head, into the code base.

78:26So just practicing your typing

78:28can make you a better programmer.

78:29- It is also something that makes you,

78:33well, makes you enjoy typing, correct?

78:36The actual act, something about the process,

78:39like I play piano.

78:41- It's tactile.

78:42There's a tactile feel that ultimately

78:45feeds the passion, makes you happy.

78:47- Right, no, totally, that's it.

78:48I mean, and it's funny,

78:49'cause artisanal keyboards have exploded,

78:50like Massdrop has gone ballistic with this stuff.

78:53There's probably like 500 keyboard projects

78:55on Massdrop alone.

78:56And there's some other guy I follow on Twitter,

78:58I used to write for the site, The Tech Report,

79:00way back in the day.

79:01And he's like, every week he's just posting

79:02like what I call keyboard porn of like,

79:04just cool keyboards, like,

79:05"Oh my God, those look really cool," right?

79:07That's like, how many keyboards does this guy have?

79:09It's kind of like me with yo-yos.

79:10How many yo-yos do you have?

79:11How many do you need?

79:12Well, technically one, but I like a lot.

79:14I don't know why.

79:15So same thing with keyboards.

79:17So yeah, they're awesome.

79:18Like I highly recommend anybody

79:20who doesn't have a mechanical to research it,

79:22look into it and see what you like.

79:24And you know, it's ultimately a fetish item,

79:26but I think these sort of items,

79:28these religious artifacts that we have

79:31are part of what make us human.

79:32Like that part's important, right?

79:33- It's kind of what makes life worth living.

79:35- Yeah, it's not necessary in the strictest sense,

79:38but ain't nothing necessary if you think about it, right?

79:42Like, so yeah, why not?

§13Transcript · 1:19:44–1:20:02

79:44So sure.

79:45- Jeff, thank you so much for talking today.

79:47- Yeah, you're welcome.

79:48Thanks for having me.

79:49(upbeat music)

79:51(upbeat music)

79:54(upbeat music)

79:57(upbeat music)

79:59(upbeat music)

80:02(upbeat music)

— A LITTLE MORE TO THINK ABOUT. —