back to index

Jeff Atwood: Stack Overflow and Coding Horror | Lex Fridman Podcast #7


small model | large model

link |
00:00:00.000
The following is a conversation with Jeff Atwood.
link |
00:00:02.400
He is the cofounder of Stack Overflow and Stack Exchange,
link |
00:00:05.840
websites that are visited by millions of people
link |
00:00:08.280
every single day.
link |
00:00:09.560
Much like with Wikipedia, it is difficult to understate
link |
00:00:13.880
the impact on global knowledge and productivity
link |
00:00:16.680
that these networks of sites have created.
link |
00:00:19.520
Jeff is also the author of the famed blog Coding Horror
link |
00:00:24.000
and the founder of Discourse, an open source software
link |
00:00:27.160
project that seeks to improve the quality of our online
link |
00:00:31.160
community discussions.
link |
00:00:33.440
This conversation is part of the MIT course
link |
00:00:36.640
on artificial general intelligence
link |
00:00:38.480
and the artificial intelligence podcast.
link |
00:00:40.840
If you enjoy it, subscribe on YouTube, iTunes,
link |
00:00:43.720
or your podcast provider of choice,
link |
00:00:45.620
or simply connect with me on Twitter at Lex Friedman,
link |
00:00:48.720
spelled F R I D.
link |
00:00:51.000
And now, here's my conversation with Jeff Atwood.
link |
00:00:56.200
Having co created and managed for a few years
link |
00:00:59.120
the world's largest community of programmers in Stack Overflow
link |
00:01:02.960
10 years ago, what do you think motivates most programmers?
link |
00:01:08.600
Is it fame, fortune, glory, process of programming itself,
link |
00:01:13.320
or is it the sense of belonging to a community?
link |
00:01:16.440
It's puzzles, really.
link |
00:01:17.960
I think it's this idea of working on puzzles
link |
00:01:22.320
independently of other people and just solving a problem,
link |
00:01:25.800
sort of like on your own almost.
link |
00:01:28.360
Although, nobody really works alone in programming anymore.
link |
00:01:32.280
But I will say there's an aspect of hiding yourself away
link |
00:01:36.480
and just beating on a problem until you solve it,
link |
00:01:39.560
like brute force basically to me is
link |
00:01:41.120
what a lot of programming is.
link |
00:01:43.000
The computer's so fast that you can
link |
00:01:44.560
do things that would take forever for a human,
link |
00:01:46.560
but you can just do them so many times and so often
link |
00:01:49.200
that you get the answer.
link |
00:01:52.040
You're saying just the pure act of tinkering with the code
link |
00:01:55.520
is the thing that drives most problems.
link |
00:01:58.680
The struggle balance within the joy of overcoming,
link |
00:02:03.000
the brute force process of pain and suffering
link |
00:02:05.960
that eventually leads to something that actually works.
link |
00:02:09.240
Well, data's fun, too.
link |
00:02:10.200
There's this thing called the shuffling problem.
link |
00:02:12.360
The naive shuffle that most programmers write
link |
00:02:14.960
has a huge flaw, and there's a lot of articles
link |
00:02:16.920
online about this because it can be really bad
link |
00:02:18.920
if you're a casino and you have an unsophisticated programmer
link |
00:02:22.040
writing your shuffle algorithm.
link |
00:02:23.480
There's surprising ways to get this wrong,
link |
00:02:25.240
but the neat thing is the way to figure that out
link |
00:02:27.240
is just to run your shuffle a bunch of times
link |
00:02:29.040
and see how many orientations of cards you get.
link |
00:02:32.200
You should get an equal distribution of all the cards.
link |
00:02:34.680
And with the naive method of shuffling,
link |
00:02:36.360
if you just look at the data, if you just brute force it
link |
00:02:38.560
and say, OK, I don't know what's going to happen,
link |
00:02:40.880
you just write a program that does it a billion times
link |
00:02:43.320
and then see what the buckets look like of the data.
link |
00:02:46.040
And the Monty Hall problem is another example of that,
link |
00:02:48.200
where you have three doors and somebody gives you
link |
00:02:50.600
information about another door.
link |
00:02:52.680
So the correct answer is you should always
link |
00:02:54.480
switch in the Monty Hall problem, which is not intuitive,
link |
00:02:56.400
and it freaks people out all the time.
link |
00:02:58.040
But you can solve it with data.
link |
00:02:59.760
If you write a program that does the Monty Hall game
link |
00:03:04.360
and then never switches, then always switches, just compare,
link |
00:03:06.840
you would immediately see that you don't have to be smart.
link |
00:03:09.640
You don't have to figure out the answer algorithmically.
link |
00:03:11.560
You can just brute force it out with data and say, well,
link |
00:03:13.360
I know the answer is this because I ran the program
link |
00:03:15.440
a billion times, and these are the data buckets
link |
00:03:17.440
that I got from it.
link |
00:03:18.920
So empirically find it.
link |
00:03:20.280
But what's the joy of that?
link |
00:03:22.280
So for you, for you personally, outside of family,
link |
00:03:26.320
what motivates you in this process?
link |
00:03:29.400
Well, to be honest, I don't really
link |
00:03:30.960
write a lot of code anymore.
link |
00:03:32.520
What I do at Discourse is managery stuff,
link |
00:03:35.040
which I always despised.
link |
00:03:37.800
As a programmer, you think of managers
link |
00:03:39.200
as people who don't really do anything themselves.
link |
00:03:42.320
But the weird thing about code is you
link |
00:03:43.960
realize that language is code.
link |
00:03:45.880
The ability to direct other people
link |
00:03:48.280
lets you get more stuff done than you
link |
00:03:50.560
could by yourself anyway.
link |
00:03:52.240
You said language is code?
link |
00:03:53.600
Language is code.
link |
00:03:54.360
Meaning communication with other humans?
link |
00:03:56.040
Yes, it is.
link |
00:03:56.840
You can think of it as a systematic.
link |
00:03:58.480
So what is it like to be, what makes,
link |
00:04:01.760
before we get into programming, what makes a good manager?
link |
00:04:04.280
What makes a good leader?
link |
00:04:05.800
Well, I think a leader, it's all about leading by example,
link |
00:04:08.280
first of all, sort of doing and being the things
link |
00:04:11.400
that you want to be.
link |
00:04:12.440
Now, this can be kind of exhausting,
link |
00:04:13.600
particularly when you have kids, because you
link |
00:04:14.760
realize that your kids are watching you all the time,
link |
00:04:17.760
even in ways that you've stopped seeing yourself.
link |
00:04:20.720
The hardest person to see on the planet is really yourself.
link |
00:04:23.560
It's a lot easier to see other people
link |
00:04:24.560
and make judgments about them.
link |
00:04:26.240
But yourself, you're super biased.
link |
00:04:28.360
You don't actually see yourself the way other people see you.
link |
00:04:30.840
Often, you're very, very hard on yourself in a way
link |
00:04:33.000
that other people really aren't going to be.
link |
00:04:34.760
So that's one of the insights is you've
link |
00:04:37.880
got to be really diligent about thinking,
link |
00:04:40.200
am I behaving in a way that represents
link |
00:04:42.360
how I want other people to behave,
link |
00:04:44.720
like leading through example?
link |
00:04:46.120
There's a lot of examples of leaders
link |
00:04:47.960
that really mess this up, like they make decisions that
link |
00:04:50.280
are like, wow, it's a bad example for other people.
link |
00:04:54.960
So I think leading by example is one.
link |
00:04:57.440
The other one I believe is working really hard.
link |
00:04:59.640
And I don't mean working exhaustively,
link |
00:05:01.520
but showing a real passion for the problem,
link |
00:05:07.200
not necessarily your solution to the problem,
link |
00:05:09.000
but the problem itself is just one that you really believe in.
link |
00:05:11.040
Like with discourse, for example,
link |
00:05:12.480
the problem that we're looking at,
link |
00:05:13.960
which is my current project, is how do you get people
link |
00:05:17.360
in groups to communicate in a way that doesn't break down
link |
00:05:20.040
into the howling of wolves?
link |
00:05:21.920
How do you deal with trolling?
link |
00:05:23.600
Not like technical problems.
link |
00:05:24.920
How do I get people to post paragraphs?
link |
00:05:26.440
How do I get people to use bold?
link |
00:05:27.480
How do I get people to use complete sentences,
link |
00:05:29.480
although those are problems as well?
link |
00:05:30.840
But how do I get people to get along with each other
link |
00:05:33.560
and then solve whatever problem it is they set out to solve,
link |
00:05:36.120
or reach some consensus on discussion,
link |
00:05:38.280
or just not hurt each other even?
link |
00:05:39.920
Maybe it's a discussion that doesn't really matter,
link |
00:05:41.920
but are people yelling at each other?
link |
00:05:43.560
And why?
link |
00:05:44.400
Like that's not the purpose of this kind of communication.
link |
00:05:46.720
So I would say leadership is about setting an example,
link |
00:05:52.960
doing the things that represent what you want to be,
link |
00:05:54.880
and making sure that you're actually doing those things.
link |
00:05:56.760
And there's a trick to that too,
link |
00:05:58.120
because the things you don't do
link |
00:05:59.720
also say a lot about what you are.
link |
00:06:02.400
Yeah, so let's pause on that one.
link |
00:06:03.960
So those two things are fascinating.
link |
00:06:05.160
So how do you have as a leader that self awareness?
link |
00:06:08.080
So you just said it's really hard to be self aware.
link |
00:06:10.200
So for you personally, or maybe for other leaders
link |
00:06:12.880
you've seen or look up to,
link |
00:06:14.160
how do you know both that the things you're doing
link |
00:06:18.600
are the wrong things to be doing,
link |
00:06:20.000
the way you speak to others, the way you behave,
link |
00:06:22.280
and the things you're not doing?
link |
00:06:23.600
How do you get that signal?
link |
00:06:24.440
I think there's two aspects to that.
link |
00:06:26.360
One is like processing feedback that you're getting, so.
link |
00:06:29.400
How do you get feedback?
link |
00:06:30.240
Well, right, so are you getting feedback, right?
link |
00:06:32.280
So one way we do it, for example, with discourse,
link |
00:06:33.640
we have three cofounders,
link |
00:06:34.800
and we periodically talk about decisions
link |
00:06:37.280
before we make them.
link |
00:06:38.120
So it's not like one person can make a mistake,
link |
00:06:40.720
or like, wow, there can be misunderstandings, things like that.
link |
00:06:43.160
So it's part of like group consensus of leadership
link |
00:06:45.520
is like it's good to have,
link |
00:06:47.000
I think systems where there's one leader,
link |
00:06:49.320
and that leader has the rule of absolute law
link |
00:06:50.920
are just really dangerous in my experience.
link |
00:06:53.480
For communities, for example,
link |
00:06:54.560
like if you have a community that's run by one person,
link |
00:06:56.120
that one person makes all the decisions,
link |
00:06:57.480
that person's gonna have a bad day.
link |
00:06:59.320
Something could happen to that person, something,
link |
00:07:02.480
there's a lot of variables.
link |
00:07:03.320
So like first, when you think about leadership,
link |
00:07:05.240
have multiple people doing leadership
link |
00:07:07.000
and have them talk amongst each other.
link |
00:07:08.880
So giving each other feedback about the decisions
link |
00:07:11.320
that they're making.
link |
00:07:12.160
And then when you do get feedback,
link |
00:07:13.640
I think there's that little voice in your head, right?
link |
00:07:16.240
Or your gut or wherever you wanna put it in your body.
link |
00:07:19.040
I think that voice is really important.
link |
00:07:22.320
Like I think most people who have any kind of moral compass
link |
00:07:25.120
or like want to do,
link |
00:07:25.960
most people want to do the right thing.
link |
00:07:27.280
I do believe that.
link |
00:07:28.360
I mean, there might be a handful of sociopaths
link |
00:07:30.640
out there that don't, but most people,
link |
00:07:32.520
they want other people to think of them as a good person.
link |
00:07:34.640
And why wouldn't you, right?
link |
00:07:35.560
Like, do you want people to despise you?
link |
00:07:36.800
I mean, that's just weird, right?
link |
00:07:38.040
So you have that little voice
link |
00:07:39.160
that sort of the angel and devil on your shoulder
link |
00:07:40.960
sort of talking to you about like what you're doing,
link |
00:07:43.000
how you're doing, how does it make you feel
link |
00:07:44.520
to make these decisions, right?
link |
00:07:46.240
And I think having some attunement to that voice
link |
00:07:49.200
is important.
link |
00:07:50.160
But you said that voice also for,
link |
00:07:52.280
I think this is a programmer situation too,
link |
00:07:55.080
where sometimes the devil on the shoulder
link |
00:07:57.080
is a little too loud.
link |
00:07:59.680
So you're a little too self critical
link |
00:08:02.000
for a lot of developers,
link |
00:08:03.320
and especially when you have introverted personality.
link |
00:08:05.520
How do you struggle with a self criticism
link |
00:08:07.520
or the criticism of others?
link |
00:08:09.720
So one of the things of leadership
link |
00:08:11.720
is to do something that's potentially unpopular
link |
00:08:14.360
or where people doubt you
link |
00:08:15.720
and you still go through with the decision.
link |
00:08:18.200
So what's that balance like?
link |
00:08:21.040
I think you have to walk people
link |
00:08:22.080
through your decision making, right?
link |
00:08:23.160
Like you have to, this is where blogging
link |
00:08:24.360
is really important and communication is so important.
link |
00:08:26.000
Again, code language is just another kind of code.
link |
00:08:27.800
It's like, here is the program
link |
00:08:29.600
by which I arrived at the conclusion
link |
00:08:31.640
that I'm gonna reach, right?
link |
00:08:33.200
It's one thing to say like,
link |
00:08:34.040
this is a decision, it's final, deal with it, right?
link |
00:08:36.680
That's not usually satisfying to people.
link |
00:08:38.720
But if you say, look,
link |
00:08:39.920
we've been thinking about this problem for a while.
link |
00:08:41.240
Here's some stuff that's happened.
link |
00:08:42.480
Here's what we think is right.
link |
00:08:43.880
Here's our goals.
link |
00:08:44.800
Here's what we wanna achieve.
link |
00:08:45.840
And we've looked at these options
link |
00:08:47.760
and we think this available options is the best option.
link |
00:08:50.440
People will be like, oh, okay, right?
link |
00:08:52.000
Maybe I don't totally agree with you,
link |
00:08:52.960
but I can kind of see where you're coming from
link |
00:08:54.240
and I see it's not just arbitrary decision
link |
00:08:56.760
delivered from a cloud of flames in the sky, right?
link |
00:09:00.160
It's like a human trying to reach
link |
00:09:02.280
some kind of consensus about goals.
link |
00:09:04.240
And their goals might be different than yours.
link |
00:09:05.640
That's completely legit, right?
link |
00:09:06.680
But if you're making that clear, it's like,
link |
00:09:08.760
oh, well, the reason we don't agree
link |
00:09:09.880
is because we have totally different goals, right?
link |
00:09:11.600
Like, how could we agree?
link |
00:09:12.840
It's not that you're a bad person.
link |
00:09:14.040
It's that we have radically different goals in mind
link |
00:09:16.640
when we started looking at this problem.
link |
00:09:18.040
And the other one you said is passion.
link |
00:09:19.640
So, or hard work, sorry.
link |
00:09:22.280
Well, those are tied together in my mind.
link |
00:09:24.040
Let's say hard work and passion.
link |
00:09:24.960
Like for me, like I just really love
link |
00:09:26.680
the problem discourse is setting out to solve
link |
00:09:28.280
because in a way it's like,
link |
00:09:30.520
there's a vision of the world
link |
00:09:32.080
where it all devolves into Facebook
link |
00:09:33.600
basically owning everything and every aspect
link |
00:09:35.920
of human communication, right?
link |
00:09:37.000
And this has always been kind of a scary world for me.
link |
00:09:39.880
First, cause I don't,
link |
00:09:40.800
I think Facebook is really good at execution.
link |
00:09:42.360
I got to compliment them.
link |
00:09:43.200
They're very competent in terms of what they're doing,
link |
00:09:45.360
but Facebook has not much of a moral compass
link |
00:09:48.120
in terms of Facebook cares about Facebook, really.
link |
00:09:50.960
They don't really care about you and your problems.
link |
00:09:53.480
What they care about is how big they can make Facebook,
link |
00:09:56.120
right?
link |
00:09:56.960
Is that you talking about the company
link |
00:09:57.800
or just the mechanism of how Facebook works?
link |
00:09:59.880
Kind of both really, right?
link |
00:10:01.000
Like, and the idea with discourse,
link |
00:10:02.680
the reason I'm so passionate about it
link |
00:10:03.840
is cause I believe every community
link |
00:10:05.320
should have the right to own themselves, right?
link |
00:10:07.000
Like they should have their own software that they can run
link |
00:10:09.560
that belongs to them.
link |
00:10:10.960
That's their space where they can set the rules.
link |
00:10:12.840
And if they don't like it,
link |
00:10:13.680
they can move to different hosting or,
link |
00:10:15.320
you know, whatever they need to happen can happen.
link |
00:10:18.040
But like this idea of a company town
link |
00:10:20.560
where all human communication is implicitly owned
link |
00:10:22.640
by WhatsApp, Instagram, and Facebook.
link |
00:10:25.240
And it's really disturbing too,
link |
00:10:26.160
cause Facebook is really smart.
link |
00:10:27.720
Like I said, they're great at execution.
link |
00:10:28.880
Buying in WhatsApp and buying Instagram
link |
00:10:30.600
were incredibly smart decisions.
link |
00:10:33.160
And they also do this thing, I don't know if you know,
link |
00:10:34.720
but they have this VPN software
link |
00:10:36.240
that they give away for free on smartphones
link |
00:10:38.760
and it indirectly feeds all the data
link |
00:10:40.960
about the traffic back to Facebook.
link |
00:10:42.760
So they can see what's actually getting popular
link |
00:10:44.560
through the VPNs, right?
link |
00:10:45.880
They have low level access to the network data
link |
00:10:48.320
because users have let them have that.
link |
00:10:50.360
So.
link |
00:10:51.360
So let's take a small pause here.
link |
00:10:54.040
First of all, discourse.
link |
00:10:55.280
Can you talk about, can you lay out the land
link |
00:10:59.000
of all the different ways you can have communities?
link |
00:11:01.800
So there's Stack Overflow that you've built.
link |
00:11:03.760
There's discourse.
link |
00:11:05.200
So Stack Overflow is kind of like a Wiki,
link |
00:11:07.200
Wikipedia you talk about.
link |
00:11:09.120
And it's a very specific scalpel, very focused.
link |
00:11:11.880
So what is the purpose of discourse
link |
00:11:13.440
and maybe contrast that with Facebook?
link |
00:11:16.000
First of all, say, what is discourse?
link |
00:11:17.960
Yeah.
link |
00:11:18.800
Start from the beginning.
link |
00:11:19.640
Well, let me start from the very beginning.
link |
00:11:20.480
So Stack Overflow is a very structured
link |
00:11:21.920
Wiki style Q and A for programmers, right?
link |
00:11:24.600
And that was the problem we first worked on.
link |
00:11:26.680
And when we started, we thought it was discussions
link |
00:11:28.840
because we looked at like programming forums
link |
00:11:30.760
and other things, but we quickly realized
link |
00:11:32.640
we were doing Q and A, which is a very narrow subset
link |
00:11:35.400
of human communication, right?
link |
00:11:36.880
Sorry, so when you started Stack Overflow,
link |
00:11:38.760
you thought you didn't even know the Q and A.
link |
00:11:41.760
Not really.
link |
00:11:42.600
You didn't know it would be Q and A.
link |
00:11:43.440
Well, we didn't know.
link |
00:11:44.280
We had an idea of like, okay, these are things
link |
00:11:45.720
that we see working online.
link |
00:11:46.840
We had a goal, right?
link |
00:11:47.680
Our goal was there was this site, Experts Exchange,
link |
00:11:50.960
with a very unfortunate name.
link |
00:11:52.560
Thank you for killing that site.
link |
00:11:53.800
Yeah, I know, right?
link |
00:11:54.680
Like a lot of people don't remember it anymore,
link |
00:11:56.400
which is great.
link |
00:11:57.240
Like that's the measure of success
link |
00:11:58.080
when people don't remember the thing
link |
00:11:59.280
that you were trying to replace, then you've totally won.
link |
00:12:02.600
So it was a place to get answers to programming questions,
link |
00:12:05.600
but it wasn't clear if it was like focused Q and A,
link |
00:12:07.440
if it was a discussion.
link |
00:12:08.760
There were plenty of programming forums.
link |
00:12:10.320
So we weren't really sure.
link |
00:12:11.320
We were like, okay, we'll take aspects of dig and Reddit,
link |
00:12:13.440
like voting were very important.
link |
00:12:15.720
Reordering answers based on votes.
link |
00:12:17.400
Wiki style stuff of like being able to edit posts,
link |
00:12:19.560
not just your posts, but other people's posts
link |
00:12:21.240
to make them better and keep them more up to date.
link |
00:12:23.840
Ownership of blogging of like, okay, this is me.
link |
00:12:26.160
I'm saying this in my voice, this is the stuff that I know.
link |
00:12:29.800
And your reputation accrues to you
link |
00:12:33.360
and it's peer recognition.
link |
00:12:34.880
So you asked earlier, like what motivates programmers?
link |
00:12:37.040
I think peer recognition motivates them a lot.
link |
00:12:40.040
That was one of the key insights of Stack Overflow
link |
00:12:41.840
was like recognition from your peers is why things get done.
link |
00:12:44.960
Not necessarily money, not necessarily your boss,
link |
00:12:46.400
but like your peers saying, wow,
link |
00:12:47.840
this person really knows their stuff, has a lot of value.
link |
00:12:50.360
So the reputation system came from that.
link |
00:12:53.280
So we were sort of Frankensteining a bunch of stuff together
link |
00:12:56.320
in Stack Overflow, like stuff we had seen working
link |
00:12:58.680
and we knew worked and that became Stack Overflow.
link |
00:13:04.400
Over time, we realized it wasn't really discussion.
link |
00:13:06.520
It was very focused questions and answers.
link |
00:13:08.760
There wasn't a lot of room on the page
link |
00:13:10.040
for let me talk about this tangential thing.
link |
00:13:12.520
It was more like, okay, is it answering the question?
link |
00:13:14.760
Is it clarifying the question?
link |
00:13:16.160
Or could it be an alternative answer to the same question?
link |
00:13:18.720
Because there's usually more than one way to do it
link |
00:13:20.560
in programming, there's like say five to 10 ways.
link |
00:13:22.640
And one of the patterns we got into early on
link |
00:13:24.400
with Stack Overflow was there were questions
link |
00:13:26.440
where there would be like hundreds of answers.
link |
00:13:28.440
And we're like, wow, how can there be a programming question
link |
00:13:31.800
with 500, 200, 500 answers?
link |
00:13:34.720
And we looked at those and we realized
link |
00:13:36.160
those were not really questions in the traditional sense.
link |
00:13:38.840
They were discussions.
link |
00:13:39.800
It was stuff that we allowed early on
link |
00:13:42.280
that we eventually decided wasn't allowed such as
link |
00:13:44.640
what's your favorite programming food?
link |
00:13:46.760
What's the funniest programming cartoon you've seen?
link |
00:13:49.560
And we had to sort of backfill a bunch of rules
link |
00:13:51.320
about like, why isn't this allowed?
link |
00:13:53.080
Such as, is this a real problem you're facing?
link |
00:13:55.160
Like nobody goes to work and says, wow, I can't work
link |
00:13:57.200
cause I don't know what the funniest programming cartoon is.
link |
00:13:59.080
So sorry, can't compile this code now, right?
link |
00:14:02.040
It's not a real problem you're facing in your job.
link |
00:14:04.600
So that was run rule.
link |
00:14:05.440
And the second, like, what can you really learn from that?
link |
00:14:07.320
It's like what I call accidental learning
link |
00:14:08.760
or Reddit style learning.
link |
00:14:10.200
Where you're just like, oh, I'll just browse some things
link |
00:14:11.640
and oh, wow, you know, did you know
link |
00:14:13.360
tree frogs only live three years?
link |
00:14:14.960
I mean, I just made that up.
link |
00:14:16.000
I don't know if that's true.
link |
00:14:16.920
But I didn't really set out to learn that.
link |
00:14:18.920
I don't need to know that, right?
link |
00:14:20.280
It's accidental learning.
link |
00:14:21.760
It was more intentional learning where you're like,
link |
00:14:23.840
okay, I have a problem.
link |
00:14:24.660
And I want to learn about stuff
link |
00:14:25.500
around this problem having, right?
link |
00:14:27.160
And it could be theory, it could be compiler theory,
link |
00:14:29.160
it could be other stuff, but I'm having a compiler problem.
link |
00:14:31.840
Hence, I need to know the compiler theory,
link |
00:14:34.320
that aspect of it that gets me to my answer, right?
link |
00:14:38.160
So kind of a directed learning.
link |
00:14:39.400
So we had to backfill all these rules
link |
00:14:40.960
as we sort of figured out what the heck it was we were doing.
link |
00:14:43.680
And the system came very strict over time.
link |
00:14:45.420
And a lot of people still complain about that.
link |
00:14:46.880
And I wrote my latest blog entry,
link |
00:14:49.040
what does Stack Overflow want to be when it grows up?
link |
00:14:52.360
Celebrating the 10 year anniversary, yeah.
link |
00:14:54.200
Yeah, so 10 years.
link |
00:14:55.240
And the system has trended towards strictness.
link |
00:14:57.680
There's a variety of reasons for this.
link |
00:14:58.900
One is people don't like to see other people
link |
00:15:01.320
get reputation for stuff as they view as frivolous,
link |
00:15:03.960
which I can actually understand.
link |
00:15:05.080
Because if you saw a programmer got like 500 upvotes
link |
00:15:07.880
for funniest programming cartoon
link |
00:15:10.360
or funniest comment they had seen in code,
link |
00:15:11.800
it's like, well, why do they have that reputation?
link |
00:15:13.820
Is it because they wrote the joke?
link |
00:15:15.040
Probably not.
link |
00:15:15.880
I mean, if they did, maybe, or the cartoon, right?
link |
00:15:18.240
They're getting a bunch of reputation
link |
00:15:19.440
based on someone else's work that's not even programming.
link |
00:15:22.640
It's just a joke, right?
link |
00:15:23.600
It's related to programming.
link |
00:15:24.800
So you begin to resent that.
link |
00:15:26.440
You're like, well, that's not fair.
link |
00:15:27.520
And it isn't.
link |
00:15:28.000
At some level, they're correct.
link |
00:15:29.080
I mean, I empathize.
link |
00:15:30.000
Because it's not correct to get reputation for that.
link |
00:15:32.200
Versus here's a really gnarly regular expression problem.
link |
00:15:36.040
And here's a really clever, insightful, detailed answer
link |
00:15:40.040
laying out, oh, here's why you're
link |
00:15:41.640
seeing the behavior that you're seeing.
link |
00:15:42.560
Here, let me teach you some things about how
link |
00:15:43.880
to avoid that in the future.
link |
00:15:44.920
That's great.
link |
00:15:45.680
That's gold, right?
link |
00:15:46.560
You want people to get reputation for that,
link |
00:15:47.920
not so much for, wow, look at this funny thing I saw, right?
link |
00:15:50.960
Great.
link |
00:15:51.480
So there's this very specific Q&A format.
link |
00:15:54.320
And then take me through the journey towards discourse
link |
00:15:57.440
and Facebook and Twitter.
link |
00:15:58.600
So you started at the beginning that Stack Overflow
link |
00:16:01.440
evolved to have a purpose.
link |
00:16:02.960
So what is discourse, this passion
link |
00:16:06.320
you have for creating community for discussion?
link |
00:16:10.800
When was that born and how?
link |
00:16:12.160
Well, part of it is based on the realization
link |
00:16:13.560
that Stack Overflow is only good for very specific subjects
link |
00:16:16.560
where it's based on data, facts, and science,
link |
00:16:19.680
where answers can be kind of verified to be true.
link |
00:16:22.480
Another form of that is there's the book of knowledge,
link |
00:16:24.840
like the tome of knowledge that defines whatever it is.
link |
00:16:28.440
You can refer to that book and it'll give you the answer.
link |
00:16:30.840
There has to be, it only works on subjects
link |
00:16:33.080
where there's like semi clear answers to things
link |
00:16:35.320
that can be verified in some form.
link |
00:16:37.520
Now again, there's always more than one way to do it.
link |
00:16:39.760
There's complete flexibility and system around that.
link |
00:16:41.880
But where it falls down is stuff like poker and LEGO.
link |
00:16:45.280
Like we had, if you go to stackexchange.com,
link |
00:16:48.720
we have an engine that tries to launch
link |
00:16:50.400
different Q&A topics, right?
link |
00:16:52.280
And people can propose Q&A topics, sample questions,
link |
00:16:56.960
and if it gets enough support within the network,
link |
00:16:59.040
we launched that Q&A site.
link |
00:17:00.080
So some of the ones we launched were poker and LEGO
link |
00:17:02.280
and they did horribly, right?
link |
00:17:03.360
Because I mean, they might still be there lingering on
link |
00:17:06.200
in some form, but it was an experiment.
link |
00:17:07.800
This is like a test, right?
link |
00:17:09.000
And some subjects work super well on the stack engine
link |
00:17:11.680
and some don't.
link |
00:17:12.720
But the reason LEGO and poker don't work
link |
00:17:14.600
is because they're so social, really.
link |
00:17:16.040
It's not about what's the rule here in poker.
link |
00:17:19.080
It's like, well, what kind of cigars
link |
00:17:21.440
do we like to smoke while playing poker?
link |
00:17:23.480
Or what's a cool set of cards to use when I'm playing poker?
link |
00:17:26.920
Or what's some strategies?
link |
00:17:28.680
Say I have this hand come up with some strategies
link |
00:17:30.760
I could use.
link |
00:17:31.200
It's more of a discussion around what's happening with LEGO.
link |
00:17:34.200
Same thing, here's this cool LEGO set I found.
link |
00:17:36.000
Look how awesome this is.
link |
00:17:36.880
And I'm like, yeah, that's freaking awesome, right?
link |
00:17:38.520
It's not a question, right?
link |
00:17:39.880
There's all these social components and discussions
link |
00:17:41.960
that don't fit at all.
link |
00:17:43.200
We literally have to disallow those in Stack Overflow
link |
00:17:45.280
because it's not about being social.
link |
00:17:46.780
It's about problems that you're facing in your work
link |
00:17:49.360
that you need concrete answers for.
link |
00:17:51.000
You have a real demonstrated problem that's
link |
00:17:52.880
blocking you in something.
link |
00:17:54.040
Nobody's blocked by, what should I
link |
00:17:56.200
do when I have a straight flush?
link |
00:17:58.200
It's not a blocking problem in the world.
link |
00:18:00.400
It's just an opportunity to hang out and discuss.
link |
00:18:02.320
So discourse was a way to address that and say, look,
link |
00:18:07.680
discussion forum software was very, very bad.
link |
00:18:10.680
And when I came out of Stack Overflow in early 2012,
link |
00:18:18.400
it was still very, very bad.
link |
00:18:19.800
I expected it improved in the four years since I last looked,
link |
00:18:22.800
but it had not improved at all.
link |
00:18:24.160
And I was like, well, that's kind of terrible
link |
00:18:26.000
because I love these communities of people talking about things
link |
00:18:29.880
that they love.
link |
00:18:31.120
They're just communities of interest, right?
link |
00:18:32.920
And there's no good software for them.
link |
00:18:35.320
Startups would come to me and say, hey, Jeff,
link |
00:18:37.360
I want to have this startup.
link |
00:18:39.720
Here's my idea.
link |
00:18:40.880
And the first thing I would say to them
link |
00:18:42.460
is, well, first, why are you asking me?
link |
00:18:44.160
I don't really know your field necessarily.
link |
00:18:47.440
Why aren't you asking the community,
link |
00:18:49.120
the people that are interested in this problem,
link |
00:18:51.240
the people that are using your product,
link |
00:18:52.440
why aren't you talking to them?
link |
00:18:53.960
And then they'd say, oh, great idea.
link |
00:18:55.320
How do I do that?
link |
00:18:56.080
And then that's when I started playing sad trombone
link |
00:18:58.080
because I realized all the software involving
link |
00:19:00.040
talking to your users, customers, audience, patrons,
link |
00:19:03.240
whatever it is, it was all really bad.
link |
00:19:04.880
It was stuff that I would be embarrassed
link |
00:19:06.640
to recommend to other people.
link |
00:19:08.320
And yet, that's where I felt they could get the biggest
link |
00:19:10.800
and strongest, most effective input
link |
00:19:12.760
for what they should be doing with their product, right?
link |
00:19:15.560
It's from their users, from their community, right?
link |
00:19:17.480
That's what we did on Stack Overflow.
link |
00:19:18.840
So what we're talking about with forums,
link |
00:19:21.320
the, what is it, the dark matter of the internet,
link |
00:19:25.440
it's still, I don't know if it's still,
link |
00:19:26.800
but for the longest time,
link |
00:19:28.720
it has some of the most passionate
link |
00:19:31.480
and fascinating discussions.
link |
00:19:32.760
And what's the usual structure?
link |
00:19:34.600
There's usually, it's linear, so it's sequential.
link |
00:19:38.160
So you're posting one after the other
link |
00:19:39.600
and there's pagination, so it's every,
link |
00:19:42.760
there's 10 posts and then you go to the next page.
link |
00:19:45.000
And that format still is used by,
link |
00:19:48.040
like I'm, we're doing a lot of research
link |
00:19:50.040
with Tesla vehicles and there's a Tesla Motors Club forum,
link |
00:19:53.560
which is extremely.
link |
00:19:54.400
We really wanted to run that actually.
link |
00:19:56.240
They pinged us about it, I don't think we got it,
link |
00:19:57.680
but I really would have liked to gotten that one.
link |
00:19:59.200
But they've started before even 2012, I believe.
link |
00:20:02.560
I mean, they've been running for a long time.
link |
00:20:04.160
It's still an extremely rich source of information.
link |
00:20:06.800
So what's broken about that system
link |
00:20:09.680
and how are you trying to fix it?
link |
00:20:12.120
I think there's a lot of power in connecting people
link |
00:20:15.840
that love the same stuff around that specific topic.
link |
00:20:19.120
Meaning Facebook's idea of connection is
link |
00:20:22.120
just any human that's related to another human, right?
link |
00:20:24.520
Like through friendship or any other reason.
link |
00:20:27.440
Facebook's idea of the world
link |
00:20:28.720
is sort of the status update, right?
link |
00:20:30.400
Like a friend of yours did something,
link |
00:20:32.440
ate at a restaurant, right?
link |
00:20:34.960
Whereas discussion forums were traditionally
link |
00:20:37.200
around the interest graph.
link |
00:20:38.240
Like I love electric cars,
link |
00:20:40.280
specifically I love Tesla, right?
link |
00:20:41.920
Like I love the way they approach the problem.
link |
00:20:44.240
I love the style of the founder.
link |
00:20:45.840
I just love the design ethic.
link |
00:20:48.120
And there's a lot to like about Tesla.
link |
00:20:49.200
I don't know if you saw the oatmeal,
link |
00:20:50.160
he did a whole love comic to Tesla.
link |
00:20:53.040
And it was actually kind of cool
link |
00:20:53.880
because I learned some stuff.
link |
00:20:54.720
He was talking about how great Tesla cars were specifically,
link |
00:20:56.960
like how they were built differently.
link |
00:20:58.280
And he went into a lot of great detail
link |
00:20:59.800
that was really interesting.
link |
00:21:00.640
And to me, that oatmeal post, if you read it,
link |
00:21:02.600
is the genesis of pretty much all interest communities.
link |
00:21:05.720
I just really love this stuff.
link |
00:21:06.960
So like for me, for example, there's yo yos, right?
link |
00:21:08.400
Like I'm into the yo yo communities.
link |
00:21:09.680
And these interest communities
link |
00:21:11.720
are just really fascinating to me.
link |
00:21:12.920
And I feel more connected to the yo yo communities
link |
00:21:15.200
than I do to friends that I don't see that often, right?
link |
00:21:18.600
Like to me, the powerful thing is the interest graph.
link |
00:21:21.720
And Facebook kind of dabbles in the interest graph.
link |
00:21:25.000
I mean, they have groups,
link |
00:21:25.920
you can sign up for groups and stuff,
link |
00:21:26.960
but it's really about the relationship graph.
link |
00:21:29.440
Like this is my coworker, this is my relative,
link |
00:21:32.080
this is my friend, but not so much about the interest.
link |
00:21:35.280
So I think that's the linchpin
link |
00:21:36.920
of which forums and communities are built on
link |
00:21:39.200
that I personally love.
link |
00:21:40.320
Like I said, leadership is about passion, right?
link |
00:21:44.240
And being passionate about stuff
link |
00:21:45.520
is a really valid way to look at the world.
link |
00:21:47.520
And I think it's a way a lot of stuff in the world
link |
00:21:50.560
gets done.
link |
00:21:51.400
Like I once had someone describe me as,
link |
00:21:52.880
he's like, Jeff, you're a guy who,
link |
00:21:54.640
you just get super passionate about a few things at a time,
link |
00:21:57.560
and you just go super deep in those things.
link |
00:21:59.760
And I was like, oh, that's kind of right.
link |
00:22:00.720
That's kind of what I do.
link |
00:22:01.560
I get into something and just be super into that
link |
00:22:03.400
for a couple of years or whatever,
link |
00:22:04.560
and just learn all I can about it,
link |
00:22:05.960
and go super deep in it.
link |
00:22:07.800
And that's how I enjoy experiencing the world, right?
link |
00:22:11.000
Like not being shallow on a bunch of things,
link |
00:22:12.400
but being really deep on a few things
link |
00:22:14.320
that I'm interested in.
link |
00:22:15.360
So forums kind of unlock that, right?
link |
00:22:17.200
And you don't want a world
link |
00:22:18.920
where everything belongs to Facebook, at least I don't.
link |
00:22:20.920
I want a world where communities can kind of own themselves,
link |
00:22:22.760
set their own norms, set their own rules,
link |
00:22:25.120
control the experience.
link |
00:22:26.320
Because community is also about ownership, right?
link |
00:22:28.720
Like if you're meeting at the Barnes and Noble every Thursday
link |
00:22:32.160
and Barnes and Noble says, get out of here,
link |
00:22:33.440
you guys don't buy enough books.
link |
00:22:34.600
Well, you know, you're kind of hosed, right?
link |
00:22:36.640
Barnes and Noble owns you, right?
link |
00:22:37.880
Like you can't.
link |
00:22:38.880
But if you have your own meeting space,
link |
00:22:40.320
you know, your own clubhouse,
link |
00:22:41.440
you can set your own rules,
link |
00:22:43.040
decide what you want to talk about there,
link |
00:22:44.560
and just really generate a lot better information
link |
00:22:47.800
than you could like hanging out at Barnes and Noble
link |
00:22:49.520
every Thursday at 3 p.m., right?
link |
00:22:51.920
So that's kind of the vision of Discourse,
link |
00:22:53.840
is a place where it's fully open source.
link |
00:22:57.160
You can take the software, you can install it anywhere,
link |
00:22:59.160
and, you know, you and a group of people
link |
00:23:00.920
can go deep on whatever it is that you're into.
link |
00:23:02.880
And this works for startups, right?
link |
00:23:04.440
Startups are a group of people
link |
00:23:05.960
who go super deep on a specific problem, right?
link |
00:23:08.440
And they want to talk to the community.
link |
00:23:09.600
It's like, well, install Discourse, right?
link |
00:23:11.040
That's what we do at Discourse.
link |
00:23:12.040
That's what I did at Stack Overflow.
link |
00:23:13.560
I spent a lot of time on Meta Stack Overflow,
link |
00:23:15.520
which is our internal, well, public community feedback site,
link |
00:23:20.200
and just experiencing what the users were experiencing,
link |
00:23:24.000
right, because they're the ones
link |
00:23:24.840
doing all the work in the system.
link |
00:23:26.080
And they had a lot of interesting feedback.
link |
00:23:27.600
And there's that 90, 10 rule of, like,
link |
00:23:29.240
90% of the feedback you get is not really actionable
link |
00:23:31.640
for a variety of reasons.
link |
00:23:32.480
It might be bad feedback, it might be crazy feedback,
link |
00:23:34.640
it might be feedback you just can't act on right now.
link |
00:23:36.400
But there's 10% of it that's like gold.
link |
00:23:38.320
It's like literally gold and diamonds,
link |
00:23:39.760
where it's like feedback of really good improvements
link |
00:23:42.440
to your core product that are not super hard to get to
link |
00:23:44.800
and actually make a lot of sense.
link |
00:23:45.800
And my favorite is about 5% of those stuff
link |
00:23:47.800
I didn't even see coming.
link |
00:23:48.680
It's like, oh my God, I never even thought of that.
link |
00:23:50.480
But that's a brilliant idea, right?
link |
00:23:52.560
And I can point to so many features of Stack Overflow
link |
00:23:54.560
that we derive from Meta Stack Overflow feedback
link |
00:23:56.680
and Meta discourse, right?
link |
00:23:58.000
Same exact principle of discourse, you know?
link |
00:24:01.220
We're getting ideas from the community.
link |
00:24:02.060
I was like, oh my God, I never thought of that,
link |
00:24:03.440
but that's fantastic, right?
link |
00:24:04.640
Like, I love that relationship with the community.
link |
00:24:06.920
From having built these communities,
link |
00:24:08.680
what have you learned about?
link |
00:24:11.080
What's the process of getting a critical mass of members
link |
00:24:13.320
in a community?
link |
00:24:14.160
Is it luck, skill, timing, persistence?
link |
00:24:17.000
What is, is it the tools, like discourse,
link |
00:24:20.340
that empower that community?
link |
00:24:21.840
What's the key aspect of starting for one guy or gal
link |
00:24:25.840
and then building it to two and then 10
link |
00:24:27.720
and a hundred and a thousand and so on?
link |
00:24:29.960
I think when you're starting with an N of one,
link |
00:24:32.280
I mean, I think it's persistence
link |
00:24:33.880
and also you have to be interesting.
link |
00:24:37.000
Like somebody I really admire once said something
link |
00:24:39.040
that I always liked about blogging.
link |
00:24:40.160
He's like, here's how you blog.
link |
00:24:41.800
You have to have something interesting to say
link |
00:24:44.400
and have an interesting way of saying it, right?
link |
00:24:46.920
And then do that for like 10 years.
link |
00:24:49.880
So that's the genesis,
link |
00:24:50.920
is like you have to have sort of something interesting
link |
00:24:53.280
to say that's not exactly what everybody else is saying
link |
00:24:55.260
and an interesting way of saying it,
link |
00:24:56.360
which is another way of saying,
link |
00:24:57.260
kind of entertaining way of saying it.
link |
00:24:59.240
And then as far as growing it, it's like ritual.
link |
00:25:01.920
You know, like you have to, like say you're starting a blog,
link |
00:25:04.240
you have to say, look, I'm gonna blog every week,
link |
00:25:06.680
three times a week,
link |
00:25:07.960
and you have to stick to that schedule, right?
link |
00:25:09.940
Because until you do that for like several years,
link |
00:25:12.840
you're never gonna get anywhere.
link |
00:25:14.360
Like it just takes years to get to where you need to get to.
link |
00:25:16.680
And part of that is having the discipline
link |
00:25:18.680
to stick with the schedule.
link |
00:25:19.720
And it helps, again, if it's something you're passionate
link |
00:25:21.440
about, this won't feel like work.
link |
00:25:22.720
You're like, I love this.
link |
00:25:23.560
I could talk about this all day, every day, right?
link |
00:25:26.840
You just have to do it in a way
link |
00:25:27.680
that's interesting to other people.
link |
00:25:28.640
And then as you're growing the community,
link |
00:25:30.640
that pattern of participation within the community
link |
00:25:32.480
of like generating these artifacts
link |
00:25:34.320
and inviting other people to help you
link |
00:25:35.720
like collaborate on these artifacts,
link |
00:25:36.960
like even in the case of blogging,
link |
00:25:38.280
like I felt in the early days of my blog,
link |
00:25:40.880
which I started in 2004,
link |
00:25:41.960
which is really the genesis of Stack Overflow.
link |
00:25:43.760
If you look at all my blog, it leads up to Stack Overflow,
link |
00:25:46.280
which was, I have all this energy in my blog,
link |
00:25:48.440
but I don't, like 40,000 people were subscribing to me.
link |
00:25:51.320
And I was like, I wanna do something.
link |
00:25:52.440
And then I met Joel and said, hey, Joel,
link |
00:25:54.160
I wanna do something,
link |
00:25:55.320
take this ball of energy from my blog and do something.
link |
00:25:57.360
And all the people reading my blog saw that.
link |
00:25:58.800
It's like, oh, cool.
link |
00:25:59.800
You're involving us.
link |
00:26:00.640
You're saying, look, you're part of this community.
link |
00:26:03.360
Let's build this thing together.
link |
00:26:04.560
Like they pick the name.
link |
00:26:05.520
Like we voted on the name for Stack Overflow on my blog.
link |
00:26:08.040
Like we came up, and naming is super hard.
link |
00:26:09.960
First of all, the hardest problem in computer science
link |
00:26:12.240
is coming up with a good name for stuff, right?
link |
00:26:14.520
But you can go back to my blog.
link |
00:26:15.880
There's the poll where we voted
link |
00:26:17.640
and Stack Overflow became the name of the site.
link |
00:26:19.240
And all the early beta users of Stack Overflow
link |
00:26:21.160
were audience of my blog plus Joel's blog, right?
link |
00:26:24.600
So we started from, like, if you look at the genesis,
link |
00:26:26.520
okay, I was just a programmer who said,
link |
00:26:28.160
hey, I love programming,
link |
00:26:29.680
but I have no outlet to talk about it.
link |
00:26:31.000
So I'm just gonna blog about it,
link |
00:26:31.920
because I don't have enough people to work
link |
00:26:33.320
to talk to about it.
link |
00:26:34.360
Because at the time I worked a place where,
link |
00:26:36.440
you know, programming wasn't the core output
link |
00:26:37.960
of the company, it was a pharmaceutical company.
link |
00:26:40.840
And I just love this stuff, you know, to an absurd degree.
link |
00:26:43.560
So I was like, I'll just blog about it.
link |
00:26:44.960
And then I'll find an audience
link |
00:26:45.960
and eventually found an audience,
link |
00:26:47.720
eventually found Joel,
link |
00:26:49.000
and eventually built Stack Overflow
link |
00:26:50.480
from that one core of activity, right?
link |
00:26:52.880
But it was that repetition of feeding back in feedback
link |
00:26:55.880
from my blog comments, feedback from Joel,
link |
00:26:58.080
feedback from the early Stack Overflow community.
link |
00:27:01.480
When people see that you're doing that,
link |
00:27:02.880
they will follow along with you, right?
link |
00:27:04.160
They'll say, cool, you're here in good faith.
link |
00:27:05.520
You're actually, you know, not listening to everything
link |
00:27:07.280
because that's impossible, that's impossible.
link |
00:27:09.320
But you're actually, you know,
link |
00:27:11.720
waiting our feedback and what you're doing.
link |
00:27:14.120
And why wouldn't I?
link |
00:27:14.960
Because who does all the work on Stack Overflow?
link |
00:27:16.720
Me, Joel?
link |
00:27:17.960
No, it's the other programmers
link |
00:27:19.680
that are doing all the work.
link |
00:27:20.560
So you gotta have some respect for that.
link |
00:27:22.400
And then, you know, discipline around,
link |
00:27:24.920
look, you know, we're trying to do a very specific thing
link |
00:27:26.480
here on Stack Overflow.
link |
00:27:27.320
We're not trying to solve all the world's problems.
link |
00:27:29.160
We're trying to solve this very specific Q and A problem
link |
00:27:31.000
in a very specific way.
link |
00:27:32.400
Not cause we're jerks about it,
link |
00:27:33.640
but because these strict set of rules
link |
00:27:36.040
help us get really good results, right?
link |
00:27:39.440
And programmers, that's an easy sell for the most part
link |
00:27:41.520
because programmers are used to dealing
link |
00:27:42.600
with ridiculous systems of rules like constantly.
link |
00:27:45.120
That's basically their job.
link |
00:27:46.840
So they're very, oh yeah, super strict system of rules
link |
00:27:49.520
that lets me get what I want.
link |
00:27:50.440
That's programming, right?
link |
00:27:51.620
That's what Stack Overflow is, so.
link |
00:27:53.680
So you're making it sound easy,
link |
00:27:54.920
but in 2004, let's go back there.
link |
00:27:58.000
In 2004, you started the blog, Coding Horror.
link |
00:28:01.520
Was it called that at the very beginning?
link |
00:28:03.600
It was.
link |
00:28:04.440
One of the smart things I did,
link |
00:28:05.280
it's from a book by Steve McConnell, Code Complete,
link |
00:28:06.720
which is one of my favorite programming books,
link |
00:28:08.240
still probably my number one programming book
link |
00:28:09.800
for anyone to read.
link |
00:28:10.800
So one of the smart things I did back then,
link |
00:28:13.840
I don't always do smart things when I start stuff.
link |
00:28:16.080
I contacted Steve and said, hey, I really like this.
link |
00:28:18.400
It was a sidebar illustration
link |
00:28:19.640
indicating danger in code, right?
link |
00:28:21.820
Coding Horror was like, watch out.
link |
00:28:25.320
And I love that illustration because it spoke to me.
link |
00:28:27.360
Because I saw that illustration go, oh my God, that's me.
link |
00:28:29.520
Like I'm always my own worst enemy.
link |
00:28:31.080
Like that's the key insight in programming is
link |
00:28:33.360
every time you write something,
link |
00:28:34.320
think how am I gonna screw myself?
link |
00:28:36.600
Because you will, constantly, right?
link |
00:28:39.280
So that icon was like, oh yeah,
link |
00:28:41.280
I need to constantly hold that mirror up and look,
link |
00:28:43.200
and say, look, you're very fallible.
link |
00:28:45.440
You're gonna screw this up.
link |
00:28:46.400
Like how can you build this in such a way
link |
00:28:48.040
that you're not gonna screw it up later?
link |
00:28:50.380
Like how can you get that discipline around
link |
00:28:53.040
making sure at every step I'm thinking through
link |
00:28:54.920
all the things that I could do wrong
link |
00:28:56.200
or that other people could do wrong?
link |
00:28:57.280
Because that is actually how you get to be
link |
00:28:58.920
a better programmer a lot of times, right?
link |
00:29:00.600
So that sidebar illustration, I loved it so much.
link |
00:29:03.400
And I wrote Steve before I started my blog and said,
link |
00:29:05.640
hey, can I have permission to use this
link |
00:29:06.800
because I just really like this illustration?
link |
00:29:08.460
And Steve was kind enough to give me permission to do that
link |
00:29:11.280
and just continues to give me permission, so yeah.
link |
00:29:13.280
Really, that's awesome.
link |
00:29:15.080
But in 2004, you started this blog.
link |
00:29:18.880
You know, you look at Stephen King, his book on writing,
link |
00:29:22.600
or Stephen Pressfield, War of Art book.
link |
00:29:26.460
I mean, it seems like writers suffer.
link |
00:29:30.040
I mean, it's a hard process of writing, right?
link |
00:29:32.080
There's gonna be suffering.
link |
00:29:34.200
I mean, I won't kid you.
link |
00:29:35.200
Well, the work is suffering, right?
link |
00:29:36.400
Like doing the work, like even when you're every week,
link |
00:29:38.680
you're like, okay, that blog post wasn't very good
link |
00:29:40.280
or people didn't like it or people said disparaging things
link |
00:29:43.360
about it.
link |
00:29:44.200
You have to like have the attitude like, you know,
link |
00:29:47.440
no matter what happens, I wanna do this for me, right?
link |
00:29:49.480
It's not about you, it's about me.
link |
00:29:51.220
I mean, in the end, it is about everyone
link |
00:29:53.320
because this is how good work gets out into the world.
link |
00:29:55.840
But you have to be pretty strict about saying like,
link |
00:29:59.780
you know, I'm selfish in the sense
link |
00:30:01.640
that I have to do this for me.
link |
00:30:03.260
You know, you mentioned Stephen King,
link |
00:30:04.360
like his book on writing.
link |
00:30:05.460
But like one of the things I do, for example,
link |
00:30:06.840
when writing is like, I read it out loud.
link |
00:30:08.680
One of the best pieces of advice for writing anything
link |
00:30:10.640
is read it out loud, like multiple times
link |
00:30:13.880
and make it sound like you're talking
link |
00:30:15.800
because that is the goal of good writing.
link |
00:30:17.840
It should sound like you said it
link |
00:30:19.200
with slightly better phrasing
link |
00:30:20.840
because you have more time to think about what you're saying
link |
00:30:22.080
but like, it should sound natural when you say it.
link |
00:30:24.360
And I think that's probably the single best
link |
00:30:26.560
writing advice I can give anyone.
link |
00:30:27.560
Just read it over and over out loud,
link |
00:30:29.760
make sure it sounds like something you would normally say
link |
00:30:32.600
and it sounds good.
link |
00:30:33.680
And what's your process of writing?
link |
00:30:35.600
See, there's usually a pretty good idea
link |
00:30:37.800
behind the blog post.
link |
00:30:39.360
So ideas, right.
link |
00:30:40.200
So I think you gotta have the concept
link |
00:30:43.300
that there's so many interesting things in the world.
link |
00:30:46.180
Like, I mean, my God, the world is amazing, right?
link |
00:30:48.800
Like you can never write about everything that's going on
link |
00:30:51.960
because it's so incredible.
link |
00:30:52.800
But if you can't come up with like,
link |
00:30:54.180
let's say one interesting thing per day to talk about,
link |
00:30:57.100
then you're not trying hard enough
link |
00:30:58.360
because the world is full of just super interesting stuff.
link |
00:31:00.720
And one great way to like mine stuff
link |
00:31:03.120
is go back to old books
link |
00:31:04.240
cause they bring up old stuff that's still super relevant.
link |
00:31:07.200
And I did that a lot
link |
00:31:08.160
cause I was like reading classic programming books
link |
00:31:09.880
and a lot of the early blog posts were like,
link |
00:31:11.260
oh, I was reading this programming book
link |
00:31:12.280
and they brought this really cool concept
link |
00:31:13.760
and I wanna talk about it some more.
link |
00:31:15.000
And you get the, I mean,
link |
00:31:16.080
you're not claiming credit for the idea
link |
00:31:17.280
but it gives you something interesting to talk about
link |
00:31:18.660
that's kind of evergreen, right?
link |
00:31:19.880
Like you don't have to go, what should I talk about?
link |
00:31:21.960
So we'll just go dig up some old classic programming books
link |
00:31:24.600
and find something that, oh, wow, that's interesting.
link |
00:31:26.980
Or how does that apply today?
link |
00:31:28.160
Or what about X and Y or compare these two concepts.
link |
00:31:30.960
So pull a couple of sentences from that book
link |
00:31:33.200
and then sort of play off of it,
link |
00:31:34.720
almost agree or disagree.
link |
00:31:36.160
So in 2007, you wrote that you were offered
link |
00:31:41.880
a significant amount of money to sell the blog.
link |
00:31:44.440
You chose not to.
link |
00:31:45.960
What were all the elements you were thinking about?
link |
00:31:48.960
Cause I'd like to take you back.
link |
00:31:50.520
It seems like there's a lot of nonlinear decisions
link |
00:31:52.520
you made through life.
link |
00:31:54.320
So what was that decision like?
link |
00:31:56.040
Right, so one of the things I love
link |
00:31:57.840
is the Choose Your Own Adventure books,
link |
00:31:59.360
which I loved as a kid
link |
00:32:00.280
and I feel like they're early programmer books
link |
00:32:01.720
cause they're all about if then statements, right?
link |
00:32:04.040
If this, then this.
link |
00:32:05.080
And they're also very, very unforgiving.
link |
00:32:07.240
Like there's all these sites that map
link |
00:32:08.920
the classic Choose Your Own Adventure books
link |
00:32:11.040
and how many outcomes are bad, a lot of bad outcomes.
link |
00:32:13.940
So part of the game is like, oh, I got a bad outcome.
link |
00:32:16.080
Go back one step, go back one further step.
link |
00:32:17.840
It's like, how did I get here, right?
link |
00:32:19.160
Like it's a sequence of decisions.
link |
00:32:21.900
And this is true of life, right?
link |
00:32:23.160
Like every decision is a sequence, right?
link |
00:32:24.960
Individually, any individual decision
link |
00:32:28.320
is not necessarily right or wrong,
link |
00:32:29.240
but they lead you down a path, right?
link |
00:32:31.040
So I do think there's some truth to that.
link |
00:32:32.760
So this particular decision,
link |
00:32:34.740
the blog had gotten fairly popular.
link |
00:32:36.320
There's a lot of RSS readers that I had discovered.
link |
00:32:39.080
And this guy contacted me out of the blue
link |
00:32:40.980
from this like bug tracking company.
link |
00:32:42.440
He's like, oh, I really wanna buy your blog
link |
00:32:43.840
for like, I think it was around,
link |
00:32:46.040
it was $100,000, it might have been like 80,000,
link |
00:32:47.920
but it was a lot, right?
link |
00:32:49.240
Like, and that's, you know, at the time,
link |
00:32:51.120
like I would have a year's worth of salary all at once.
link |
00:32:54.420
So I didn't really think about like, well, you know,
link |
00:32:57.720
and I remember talking to people at the time,
link |
00:32:58.560
I was like, wow, that's a lot of money.
link |
00:32:59.840
But then I'm like, I really like my blog, right?
link |
00:33:02.000
Like, do I wanna sell my blog?
link |
00:33:03.720
Cause it wouldn't really belong to me anymore at that point.
link |
00:33:05.940
And one of the guidelines that I like to,
link |
00:33:09.360
I don't like to give advice to people a lot,
link |
00:33:11.040
but one of the pieces of advice I do give,
link |
00:33:12.520
cause I do think it's really true and it's generally helpful
link |
00:33:15.560
is whenever you're looking at a set of decisions,
link |
00:33:17.600
like, oh gosh, should I do A, B or C,
link |
00:33:19.860
you gotta pick the thing that's a little scarier
link |
00:33:22.500
in that list because not, you know,
link |
00:33:24.540
not like jump off a cliff scary,
link |
00:33:25.680
but the thing that makes you nervous.
link |
00:33:27.000
Cause if you pick the safe choice,
link |
00:33:29.000
it's usually, you're not really pushing.
link |
00:33:30.380
You're not pushing yourself.
link |
00:33:31.400
You're not choosing the thing that's gonna help you grow.
link |
00:33:33.940
So for me, the scarier choice was to say no.
link |
00:33:36.160
I was like, well, no, let's just see where this is going.
link |
00:33:38.040
Right?
link |
00:33:38.880
Because then I own it.
link |
00:33:39.700
I mean, it belongs to me.
link |
00:33:40.540
It's my thing.
link |
00:33:42.000
And I can just take it
link |
00:33:43.120
and tell some other logical conclusion, right?
link |
00:33:45.360
Because imagine how different the world would have been
link |
00:33:46.880
had I said yes and sold the blog.
link |
00:33:49.040
It's like, there probably wouldn't be Stack Overflow.
link |
00:33:51.560
You know, a lot of other stuff would have changed.
link |
00:33:53.640
So for that particular decision,
link |
00:33:55.360
I think it was that same rule.
link |
00:33:56.280
Like what scares me a little bit more.
link |
00:33:57.920
Do the thing that scares you.
link |
00:33:59.200
Yeah.
link |
00:34:00.040
So speaking of which, startups.
link |
00:34:01.740
I think there's a specific, some more general questions
link |
00:34:05.000
that a lot of people would be interested in.
link |
00:34:07.560
You've started Stack Overflow.
link |
00:34:10.320
You started this course.
link |
00:34:12.080
So what's the, it was one, two, three guys,
link |
00:34:15.320
whatever it is in the beginning.
link |
00:34:17.200
What was that process like?
link |
00:34:19.360
Do you start talking about it?
link |
00:34:20.680
Do you start programming?
link |
00:34:21.800
Do you start, like, where's the birth
link |
00:34:24.560
and the catalyst that actually.
link |
00:34:25.880
Well, I can talk about it in the context
link |
00:34:27.040
of both Stack Overflow and Discourse.
link |
00:34:28.120
So I think the key thing initially is there is a problem.
link |
00:34:31.080
Something, there's some state of the world
link |
00:34:32.440
that's unsatisfactory to the point that, like,
link |
00:34:34.400
you're upset about it, right?
link |
00:34:35.960
Like, in that case, it was experts exchange.
link |
00:34:37.840
I mean, Joel's original idea,
link |
00:34:38.960
because I approached Joel as like,
link |
00:34:40.200
look, Joel, I have all this energy behind my blog.
link |
00:34:41.760
I want to do something.
link |
00:34:42.600
I want to build something.
link |
00:34:43.440
But I don't know what it is,
link |
00:34:44.260
because I'm honestly not a good idea person.
link |
00:34:45.720
I'm really not.
link |
00:34:46.560
I'm like the execution guy.
link |
00:34:47.760
I'm really good at execution,
link |
00:34:48.680
but I'm not good at, like, blue skying ideas.
link |
00:34:51.000
Not my forte.
link |
00:34:52.080
Which is another reason why I like the community feedback,
link |
00:34:54.080
because they blue sky all day long for you, right?
link |
00:34:56.320
So when I can just go in and cherry pick
link |
00:34:57.760
a blue sky idea from community,
link |
00:34:59.320
even if I have to spend three hours reading
link |
00:35:00.800
to get one good idea, it's worth it, man.
link |
00:35:02.720
But anyway, so the idea from Joel was,
link |
00:35:04.680
hey, experts exchange, it's got great data,
link |
00:35:07.400
but the experience is hideous, right?
link |
00:35:09.040
It's trying to trick you.
link |
00:35:09.920
It feels like used car salesman.
link |
00:35:11.040
It's just bad.
link |
00:35:12.040
So I was like, oh, that's awesome.
link |
00:35:13.080
It feeds into community.
link |
00:35:14.280
It feeds into, like, you know,
link |
00:35:15.120
we can make creative comments.
link |
00:35:16.680
So I think the core is to have a really good idea
link |
00:35:18.520
that you feel very strongly about in the beginning,
link |
00:35:20.280
that, like, there's a wrong in the world,
link |
00:35:22.000
an injustice that we will write
link |
00:35:24.240
through the process of building this thing.
link |
00:35:26.080
For Discourse, it was like, look,
link |
00:35:27.480
there's no good software for communities
link |
00:35:30.160
to just hang out and, like, do stuff, right?
link |
00:35:32.920
Like, whether it's problem solving, startup, whatever.
link |
00:35:35.440
Forums are such a great building block of online community,
link |
00:35:37.600
and they're hideous.
link |
00:35:38.560
They were so bad, right?
link |
00:35:39.720
It was embarrassing.
link |
00:35:40.720
Like, I literally was embarrassed
link |
00:35:42.000
to be associated with this software, right?
link |
00:35:43.920
I was like, we have to have software that you can be proud of.
link |
00:35:45.680
It's like, this is competitive with Reddit.
link |
00:35:47.080
This is competitive with Twitter.
link |
00:35:48.320
This is competitive with Facebook, right?
link |
00:35:50.320
I would be proud to have the software on my site.
link |
00:35:53.440
So that was the genesis of Discourse,
link |
00:35:54.840
was feeling very strongly about there needs to be
link |
00:35:59.840
a good solution for communities.
link |
00:36:01.680
So that's step one.
link |
00:36:02.640
Genesis of an idea you feel super strongly about, right?
link |
00:36:04.520
And then people galvanize around the idea.
link |
00:36:06.600
Like, Joel was already super excited about the idea.
link |
00:36:08.480
I was excited about the idea.
link |
00:36:09.920
So with the forum software, I was posting on Twitter.
link |
00:36:13.240
I had researched, as part of my research,
link |
00:36:15.000
I start researching the problem, right?
link |
00:36:16.600
And I found a game called Forum Wars,
link |
00:36:19.480
which was a parody of forum.
link |
00:36:21.480
It's still very, very funny, of forum behavior,
link |
00:36:23.680
circa, I would say, 2003.
link |
00:36:26.120
It's aged some, right?
link |
00:36:27.720
Like, the behavior's a little different in there of Twitter.
link |
00:36:29.880
But it was awesome.
link |
00:36:30.920
It was very funny.
link |
00:36:31.920
And it was like a game.
link |
00:36:32.800
It was like an RPG.
link |
00:36:33.520
And it had a forum attached to it.
link |
00:36:34.960
So it was like a game about forums with a forum attached.
link |
00:36:37.520
I was like, this is awesome, right?
link |
00:36:38.520
This is so cool.
link |
00:36:39.520
And the founder of that company, or that project,
link |
00:36:41.920
it wasn't really a company, contacted me,
link |
00:36:43.720
this guy Robin Ward from Toronto.
link |
00:36:45.440
He said, hey, I saw you've been talking about forums.
link |
00:36:47.400
And I really love that problem space.
link |
00:36:49.120
He was like, I'd still love to build really good forum
link |
00:36:51.280
software, because I don't think anything out there's any good.
link |
00:36:53.440
And I was like, awesome.
link |
00:36:54.200
At that point, I was like, we're starting a company.
link |
00:36:55.880
Because I couldn't have whooshed for a better person
link |
00:36:58.600
to walk through the door and say, I'm excited about this,
link |
00:37:01.000
too.
link |
00:37:01.560
Same thing with Joel, right?
link |
00:37:02.360
I mean, Joel is a legend in the industry, right?
link |
00:37:04.000
So when he walked through and said,
link |
00:37:04.760
I'm excited about this problem, I was like, me too, man.
link |
00:37:06.960
We can do this, right?
link |
00:37:08.200
So that, to me, is the most important step.
link |
00:37:10.600
It's like, having an idea you're super excited about,
link |
00:37:12.840
and another person, a cofounder, right?
link |
00:37:14.640
Because again, you get that dual leadership, right?
link |
00:37:16.760
Am I making a bad decision?
link |
00:37:19.120
Sometimes it's nice to have checks of like,
link |
00:37:21.500
is this a good idea?
link |
00:37:22.440
I don't know, right?
link |
00:37:23.680
So those are the crucial seeds.
link |
00:37:25.600
But then starting to build stuff,
link |
00:37:27.520
whether it's you programming or somebody else's.
link |
00:37:28.360
There is prototyping.
link |
00:37:29.360
So there's tons of research.
link |
00:37:30.600
There's tons of research, like, what's out there that failed?
link |
00:37:32.880
Because a lot of people look at the successes.
link |
00:37:34.360
Oh, look at how successful X is.
link |
00:37:36.080
Everybody looks at the successes.
link |
00:37:37.360
Those are boring.
link |
00:37:38.360
Show me the failures, because that is what's interesting.
link |
00:37:40.860
That's where people were experimenting.
link |
00:37:42.080
That's where people were pushing.
link |
00:37:43.960
And they failed, but they probably
link |
00:37:45.560
failed for reasons that weren't directly
link |
00:37:47.480
about the quality of their idea, right?
link |
00:37:50.040
So look at all the failures.
link |
00:37:51.400
Don't just look what everybody looks at, which is like, oh,
link |
00:37:53.200
gosh, look at all these successful people.
link |
00:37:54.620
Look at the failures.
link |
00:37:55.920
Look at the things that didn't work.
link |
00:37:57.240
Research the entire field.
link |
00:37:59.040
And so that's the research that I was doing
link |
00:38:01.440
that led me to Robin, right?
link |
00:38:02.720
Was that.
link |
00:38:03.560
And then when we, for example, when we did Stack Overflow,
link |
00:38:07.520
we're like, okay, well, I really like elements
link |
00:38:08.960
of voting and dig and read it.
link |
00:38:10.000
I like the Wikipedia, everything's up to date.
link |
00:38:12.760
Nothing is like an old tombstone
link |
00:38:14.280
that has horrible out of date information.
link |
00:38:16.940
We know that works.
link |
00:38:17.780
Wikipedia is an amazing resource.
link |
00:38:19.360
Blogging, the idea of ownership is so powerful, right?
link |
00:38:22.360
Like, oh, I, Joe wrote this,
link |
00:38:23.960
and look how good Joe's answer is, right?
link |
00:38:26.200
All these concepts were rolling together.
link |
00:38:27.720
Researching all the things that were out there
link |
00:38:29.040
that were working and why they were working
link |
00:38:30.600
and trying to fold them into, again,
link |
00:38:32.360
that Frankenstein's monster of what Stack Overflow is.
link |
00:38:35.280
And by the way, that wasn't a free decision
link |
00:38:37.040
because there's still a ton of tension
link |
00:38:38.720
in the Stack Overflow system.
link |
00:38:40.000
There's reasons people complain about Stack Overflow
link |
00:38:42.560
because it's so strict, right?
link |
00:38:43.640
Why is it so strict?
link |
00:38:44.640
Why are you guys always closing my questions?
link |
00:38:46.480
It's because there's so much tension
link |
00:38:47.880
that we built into the system
link |
00:38:49.120
around trying to get good, good results out of the system.
link |
00:38:51.880
And it's not a free.
link |
00:38:56.000
That stuff doesn't come for free, right?
link |
00:38:57.520
It's not like we, we all have perfect answers
link |
00:38:59.800
and nobody will have to get their feelings heard
link |
00:39:02.280
or nobody will have to get downvoted.
link |
00:39:04.560
It doesn't work that way, right?
link |
00:39:06.640
So this is an interesting point and a small tangent.
link |
00:39:09.400
You write about anxiety.
link |
00:39:12.000
So I've posted a lot of questions
link |
00:39:14.040
and written answers on Stack Overflow.
link |
00:39:16.040
On the question side, you usually go to
link |
00:39:18.320
something very specific to something I'm working on.
link |
00:39:21.160
And this is something you talk about
link |
00:39:22.280
that really the goal of Stack Overflow isn't about,
link |
00:39:26.120
is to write a question that's not about you,
link |
00:39:29.360
it's about the question that will help
link |
00:39:33.480
the community in the future.
link |
00:39:35.800
Right, but that's a tough sell, right?
link |
00:39:37.520
Because people are like, well,
link |
00:39:39.160
I don't really care about the community.
link |
00:39:40.280
What I care about is my problem.
link |
00:39:41.520
And that's fair, right?
link |
00:39:43.400
It's sort of that, again, that tension,
link |
00:39:44.880
that balancing act of we wanna help you,
link |
00:39:46.680
but we also wanna help everybody that comes behind you.
link |
00:39:48.640
The long line of people are gonna come up and say,
link |
00:39:49.880
oh, I kinda have that problem too, right?
link |
00:39:52.240
And if nobody's ever gonna come up and say,
link |
00:39:54.040
I have this problem too,
link |
00:39:54.880
then that question shouldn't exist on Stack Overflow
link |
00:39:57.000
because the question is too specific.
link |
00:39:58.840
And even that's tension, right?
link |
00:40:00.040
How do you judge that?
link |
00:40:00.880
How do you know that nobody's ever gonna have
link |
00:40:02.600
this particular question again?
link |
00:40:04.680
So there's a lot of tension in the system.
link |
00:40:06.800
Do you think that anxiety of asking the question,
link |
00:40:09.560
the anxiety of answering,
link |
00:40:11.560
that tension is inherent to programmers,
link |
00:40:14.200
is inherent to this kind of process?
link |
00:40:16.960
Or can it be improved?
link |
00:40:20.320
Can it be happy land
link |
00:40:22.440
where that tension is not quite so harsh?
link |
00:40:26.880
I don't think Stack Overflow
link |
00:40:28.120
can totally change the way it works.
link |
00:40:30.040
One thing they are working on finally
link |
00:40:31.800
is the ask page had not changed since 2011.
link |
00:40:35.200
I'm still kind of bitter about this
link |
00:40:36.760
because I feel like you have a Q&A system
link |
00:40:39.360
and what are the core pages in a Q&A system?
link |
00:40:41.400
Well, first of all, the question,
link |
00:40:42.240
all the answers and also the ask page,
link |
00:40:43.760
particularly when you're a new user
link |
00:40:45.120
or someone trying to ask a question,
link |
00:40:46.520
that's the point at which you need the most help.
link |
00:40:48.400
And we just didn't adapt with the times.
link |
00:40:50.760
But the good news is they're working on this,
link |
00:40:52.320
from what I understand,
link |
00:40:53.200
and it's gonna be a more wizard based format.
link |
00:40:55.180
And you could envision a world
link |
00:40:56.820
where as part of this wizard based program,
link |
00:40:58.420
when you're asking questions,
link |
00:40:59.360
okay, come up with a good title,
link |
00:41:01.080
what are good words to put in the title?
link |
00:41:02.560
One word that's not good to put in the title
link |
00:41:04.280
is problem, for example.
link |
00:41:05.880
I have a problem.
link |
00:41:06.700
Oh, you have a problem.
link |
00:41:07.760
Okay, a problem, that's great.
link |
00:41:10.400
You need specifics.
link |
00:41:11.400
So it's trying to help you make a good question title,
link |
00:41:13.440
for example, that step will be broken out, all that stuff.
link |
00:41:17.280
But one of those steps in that wizard of asking
link |
00:41:19.560
could say, hey, I'm a little nervous.
link |
00:41:21.600
I've never done this before.
link |
00:41:22.660
Can you put me in a queue for special mentoring?
link |
00:41:26.080
You could opt in to a special mentor.
link |
00:41:27.560
I think that would be fantastic.
link |
00:41:28.960
I don't have any objection to that at all
link |
00:41:31.360
in terms of being an opt in system.
link |
00:41:32.600
Because there are people that are like,
link |
00:41:33.920
I just wanna help them.
link |
00:41:35.480
I wanna help a person no matter what.
link |
00:41:36.720
I wanna go above and beyond.
link |
00:41:37.920
I wanna spend hours with this person.
link |
00:41:41.320
It depends what their goals are.
link |
00:41:42.960
It's a great idea.
link |
00:41:43.780
Who am I to judge?
link |
00:41:44.620
So that's fine.
link |
00:41:45.460
It's not precluded from happening.
link |
00:41:47.320
But there's a certain big city ethos
link |
00:41:49.000
that we started with.
link |
00:41:49.840
Like, look, we're in New York City.
link |
00:41:51.080
You don't come to New York City
link |
00:41:52.040
and expect them to be, oh, welcome to the city, Joe.
link |
00:41:54.360
How's it going?
link |
00:41:55.200
Come on in.
link |
00:41:56.020
Let me show you around.
link |
00:41:57.120
That's not how New York City works.
link |
00:42:01.480
Again, New York City has a reputation for being rude,
link |
00:42:03.060
which I actually don't think it is,
link |
00:42:04.080
having been there fairly recently.
link |
00:42:05.240
It's not rude.
link |
00:42:06.080
It's just like going about their business.
link |
00:42:07.240
Like, look, I have things to do.
link |
00:42:08.980
I'm busy.
link |
00:42:09.820
I'm a busy professional, as are you.
link |
00:42:11.840
And since you're a busy professional,
link |
00:42:13.440
certainly when you ask a question,
link |
00:42:14.680
you're gonna ask the best possible question.
link |
00:42:16.440
Because you're a busy professional
link |
00:42:18.220
and you would not accept anything less
link |
00:42:20.160
than a very well written question
link |
00:42:21.420
with a lot of detail about why you're doing it,
link |
00:42:23.280
what you're doing, what you researched,
link |
00:42:25.060
what you found,
link |
00:42:26.200
because you're a professional like me.
link |
00:42:28.600
And this rubs people sometimes the wrong way.
link |
00:42:31.000
And I don't think it's wrong to say,
link |
00:42:32.320
look, I don't want that experience.
link |
00:42:33.680
I want just a more chill place for beginners.
link |
00:42:37.600
And I still think Stack Overflow
link |
00:42:39.160
is not, was never designed for beginners, right?
link |
00:42:41.960
There's this misconception that,
link |
00:42:43.840
even Joel says sometimes,
link |
00:42:44.800
oh yeah, Stack Overflow for beginners.
link |
00:42:46.120
And I think if you're a prodigy, it can be.
link |
00:42:48.840
Right.
link |
00:42:49.660
But for the most part, not.
link |
00:42:50.500
But that's not really representative, right?
link |
00:42:51.760
Like, I think as a beginner,
link |
00:42:53.060
you want a totally different set of tools.
link |
00:42:55.120
You want like live screen sharing, live chat.
link |
00:42:58.060
You want access to resources.
link |
00:42:59.220
You want a playground,
link |
00:43:00.260
like a playground you can experiment in
link |
00:43:02.360
and like test and all this stuff
link |
00:43:04.480
that we just don't give people
link |
00:43:05.640
because that was never really the audience
link |
00:43:07.780
that we were designing Stack Overflow for.
link |
00:43:09.280
That doesn't mean it's wrong.
link |
00:43:10.680
And I think it would be awesome
link |
00:43:11.800
if there was a site like that on the internet,
link |
00:43:13.280
or if Stack Overflow said,
link |
00:43:14.320
hey, you know, we're gonna start doing this.
link |
00:43:15.800
That's fine too.
link |
00:43:16.960
You know, I'm not there.
link |
00:43:17.800
I'm not making those decisions.
link |
00:43:18.680
But I do think the pressure,
link |
00:43:20.640
the tension that you described is there for people to be,
link |
00:43:22.800
look, I'm a little nervous
link |
00:43:24.480
because I know I gotta do my best work, right?
link |
00:43:26.400
The other one is something you talk about,
link |
00:43:28.040
which is also really interesting to me,
link |
00:43:30.320
is duplicate questions or it's a really difficult problem
link |
00:43:37.160
that you highlight.
link |
00:43:38.080
It's super hard.
link |
00:43:39.480
Like you could take one little topic
link |
00:43:41.720
and you could probably write 10, 20, 30 ways
link |
00:43:44.960
of asking about that topic
link |
00:43:46.640
and there will be all different.
link |
00:43:48.220
I don't know if there should be one page
link |
00:43:50.200
that answers all of it.
link |
00:43:51.880
Is there a way that Stack Overflow can help disambiguate,
link |
00:43:56.880
like separate these duplicate questions
link |
00:44:01.160
or connect them together?
link |
00:44:02.820
Or is it a totally hopeless, difficult, impossible task?
link |
00:44:06.220
I think it's a very, very hard computer science problem.
link |
00:44:08.480
And partly because people are very good
link |
00:44:10.280
at using completely different words.
link |
00:44:11.760
It always amazed me on Stack Overflow.
link |
00:44:13.160
You'd have two questions that were functionally identical
link |
00:44:15.440
and one question had like zero words in common
link |
00:44:17.520
with the other question.
link |
00:44:18.360
Like, oh my God, from a computer science perspective,
link |
00:44:20.920
how do you even begin to solve that?
link |
00:44:22.960
And it happens all the time.
link |
00:44:24.480
People are super good at this, right?
link |
00:44:26.280
Accidentally at asking the same thing
link |
00:44:28.360
in like 10, 20 different ways.
link |
00:44:31.200
And the other complexity is we want some
link |
00:44:32.760
of those duplicates to exist
link |
00:44:33.900
because if there's five versions with different words,
link |
00:44:36.000
have those five versions point
link |
00:44:37.280
to the one centralized answer, right?
link |
00:44:39.560
It's like, okay, this is a duplicate, no worries.
link |
00:44:41.880
Here's the answer that you wanted over here
link |
00:44:43.460
on the prime example that we want to have,
link |
00:44:48.000
rather than having 10 copies of the question and the answer.
link |
00:44:50.680
Because if you have 10 copies of the question and answer,
link |
00:44:52.400
this also devalues the reputation system,
link |
00:44:54.120
which programmers hate, as I previously mentioned.
link |
00:44:56.880
You're getting reputation for an answer
link |
00:44:58.320
that somebody else already gave.
link |
00:44:59.320
It's like, well, it's an answer,
link |
00:45:00.440
but somebody else already gave that answer.
link |
00:45:02.200
So why are you getting reputation for the same answer
link |
00:45:04.560
as the other guy who gave it four years ago?
link |
00:45:06.480
People get offended by that, right?
link |
00:45:07.760
So the reputation system itself adds tension to the system
link |
00:45:11.920
in that the people who have a lot of reputation
link |
00:45:14.040
become very incentivized to enforce the reputation system.
link |
00:45:17.600
And for the most part, that's good.
link |
00:45:18.920
I know it sounds weird, but for most parts,
link |
00:45:20.520
like look, strict systems, I think to use Stack Overflow,
link |
00:45:23.880
you have to have the idea that, OK, strict systems ultimately
link |
00:45:26.000
work better.
link |
00:45:26.720
And I do think in programming, you're
link |
00:45:28.440
familiar with loose typing versus strict typing, right?
link |
00:45:31.320
The idea that you can declare a variable,
link |
00:45:33.000
not declare a variable, rather, just start using a variable.
link |
00:45:34.840
And OK, I see it's implicitly an integer.
link |
00:45:36.280
Bam, awesome.
link |
00:45:37.200
Duck equals 5.
link |
00:45:38.120
Well, duck is now an integer of 5, right?
link |
00:45:40.360
And you're like, cool, awesome, simpler, right?
link |
00:45:42.320
Why would I want to worry about typing?
link |
00:45:43.840
And for a long time, in the Ruby community,
link |
00:45:45.800
they're like, yeah, this is awesome.
link |
00:45:46.920
You just do a bunch of unit testing,
link |
00:45:48.320
which is testing your program's validity after the fact
link |
00:45:50.960
to catch any bugs that strict typing of variables
link |
00:45:54.160
would have caught.
link |
00:45:55.040
And now you have this thing called
link |
00:45:56.080
TypeScript for Microsoft from the guy who
link |
00:45:58.080
built C Sharp Anders, who's one of the greatest
link |
00:46:01.120
minds in software development, right,
link |
00:46:02.840
like in terms of language design.
link |
00:46:04.480
And says, no, no, no, we want to bolt on a strict type
link |
00:46:06.560
system to JavaScript because it makes things better.
link |
00:46:08.200
And now everybody's like, oh my god, we deployed TypeScript
link |
00:46:11.480
and found 50 latent bugs that we didn't know about, right?
link |
00:46:14.480
Like, this is super common.
link |
00:46:15.840
So I think there is a truth in programming
link |
00:46:19.960
that strictness, it's not the goal.
link |
00:46:22.280
We're not saying be super strict because strictness is correct.
link |
00:46:25.720
No, it's no, no.
link |
00:46:26.600
Strictness produces better results.
link |
00:46:28.640
That's what I'm saying, right?
link |
00:46:29.880
So strict typing of variables, I would
link |
00:46:32.000
say you almost universally have consensus now
link |
00:46:33.920
is basically correct.
link |
00:46:35.440
Should be that way in every language, right?
link |
00:46:37.720
Duck equals five should generate an error
link |
00:46:39.480
because no, you didn't declare.
link |
00:46:40.720
You didn't tell me that duck was an integer, right?
link |
00:46:42.960
That's a bug, right?
link |
00:46:43.840
Or maybe you mistyped.
link |
00:46:44.720
You typed deck instead of duck, right?
link |
00:46:46.480
You never know.
link |
00:46:47.120
This happens all the time, right?
link |
00:46:48.840
So with that in mind, I will say that the strictness
link |
00:46:51.600
of the system is correct.
link |
00:46:52.720
Now, that doesn't mean cruel.
link |
00:46:53.960
That doesn't mean mean.
link |
00:46:55.040
That doesn't mean angry.
link |
00:46:56.080
It just means strict, OK?
link |
00:46:57.560
So I think where there's misunderstanding
link |
00:46:59.280
is people get cranky, right?
link |
00:47:00.720
Like, another question you asked is like, why are programmers
link |
00:47:03.920
kind of mean sometimes?
link |
00:47:05.160
Well, who do programmers work with all day long?
link |
00:47:07.480
So I have a theory that if you're at a job
link |
00:47:10.080
and you work with assholes all day long,
link |
00:47:12.440
what do you eventually become?
link |
00:47:14.400
An asshole.
link |
00:47:15.000
An asshole.
link |
00:47:15.800
And what is the computer except the world's biggest asshole?
link |
00:47:19.280
Because the computer has no time for your bullshit.
link |
00:47:21.800
The computer, the minute you make a mistake,
link |
00:47:24.040
everything is crashing down, right?
link |
00:47:25.480
One semicolon has crashed space missions, right?
link |
00:47:28.160
So that's normal.
link |
00:47:29.040
So you begin to internalize that.
link |
00:47:30.640
You begin to think, oh, my coworker, the computer,
link |
00:47:34.640
is super strict and kind of a jerk about everything.
link |
00:47:37.520
So that's kind of how I'm going to be.
link |
00:47:40.000
Because I work with this computer,
link |
00:47:41.840
and I have to exceed to its terms on everything.
link |
00:47:44.600
So therefore, you start to absorb that.
link |
00:47:46.400
You start to think, oh, well, being really strict arbitrarily
link |
00:47:49.400
is really good.
link |
00:47:50.440
An error of error code 56249 is a completely good error message
link |
00:47:54.120
because that's what the computer gave me, right?
link |
00:47:56.120
So you kind of forget to be a person at some level.
link |
00:47:59.440
And you know how they say great detectives internalize
link |
00:48:02.200
criminals and kind of are criminals themselves,
link |
00:48:04.200
like this trope of the master detective
link |
00:48:06.700
is good because he can think like the criminal.
link |
00:48:08.720
Well, I do think that's true of programmers.
link |
00:48:10.520
Really good programmers think like the computer
link |
00:48:12.720
because that's their job.
link |
00:48:14.200
But if you internalize it too much, you become the computer.
link |
00:48:17.080
You kind of become a jerk to everybody
link |
00:48:19.560
because that's what you've internalized.
link |
00:48:21.720
You're almost not a jerk, but you have no patience
link |
00:48:24.240
for a lack of strictness, as you said.
link |
00:48:26.240
It's not out of a sense of meanness.
link |
00:48:27.840
It's accidental.
link |
00:48:28.640
But I do believe it's an occupational hazard
link |
00:48:30.400
of being a programmer is you start
link |
00:48:32.000
to behave like the computer.
link |
00:48:33.760
You're very unforgiving.
link |
00:48:34.800
You're very terse.
link |
00:48:35.920
You're very, oh, wrong, incorrect, move on.
link |
00:48:38.400
It's like, well, can you help me?
link |
00:48:40.040
What could I do to fix?
link |
00:48:41.240
No, wrong, next question.
link |
00:48:44.000
Like, that's normal for the computer.
link |
00:48:46.440
Just fail, next.
link |
00:48:49.280
I don't know if you remember in Saturday Night Live,
link |
00:48:51.600
in the 90s, they had this character who was an IT guy.
link |
00:48:54.640
The move guy.
link |
00:48:55.520
Move.
link |
00:48:56.040
Move.
link |
00:48:56.720
Was that Jimmy Fallon?
link |
00:48:58.080
No.
link |
00:48:58.640
No.
link |
00:48:59.760
Who played him?
link |
00:49:01.160
OK, yeah, I remember.
link |
00:49:02.120
Move.
link |
00:49:02.620
Right.
link |
00:49:03.120
He had no patience for it.
link |
00:49:04.160
Might have been Mad TV, actually.
link |
00:49:05.720
Wasn't it Mad TV?
link |
00:49:06.680
Might have been.
link |
00:49:07.600
But anyway, that's always been the perception.
link |
00:49:10.940
You start to behave like the computer.
link |
00:49:12.560
It's like, oh, you're wrong, out of the way, you know?
link |
00:49:14.880
You've written so many blog posts about programming,
link |
00:49:17.560
about programs, programming, programmers.
link |
00:49:22.720
What do you think makes a good, let's start with,
link |
00:49:26.920
what makes a good solo programmer?
link |
00:49:29.360
Well, I don't think you should be a solo programmer.
link |
00:49:31.600
I think to be a good solo programmer,
link |
00:49:33.400
it's kind of like what I talked about, well, not on Mike,
link |
00:49:35.800
but one of the things John Carmack, one of the best
link |
00:49:39.240
points he makes in the book Masters of Doom, which
link |
00:49:41.120
is a fantastic book, and anybody listening to this
link |
00:49:43.200
who hasn't read it, please read it.
link |
00:49:44.700
It's such a great book, is that at the time,
link |
00:49:47.400
they were working on stuff like Wolfenstein and Doom.
link |
00:49:50.720
They didn't have the resources that we have today.
link |
00:49:52.780
They didn't have Stack Overflow.
link |
00:49:53.940
They didn't have Wikipedia.
link |
00:49:54.860
They didn't have discourse forums.
link |
00:49:56.680
They didn't have places to go to get people to help them.
link |
00:50:00.200
They had to work on their own.
link |
00:50:01.880
And that's why it took a genius like Carmack
link |
00:50:03.760
to do this stuff, because you had
link |
00:50:05.120
to be a genius to invent from first principles.
link |
00:50:07.160
A lot of the stuff he was like, the hacks he was coming up
link |
00:50:09.560
with were genius, genius level stuff.
link |
00:50:11.900
But you don't need to be a genius anymore,
link |
00:50:13.880
and that means not working by yourself.
link |
00:50:15.540
You have to be good at researching stuff online.
link |
00:50:17.420
You have to be good at asking questions, really good
link |
00:50:19.680
questions that are really well researched, which implies,
link |
00:50:21.440
oh, I went out and researched for three hours
link |
00:50:23.080
before I wrote these questions.
link |
00:50:24.240
That's what you should be doing, because that's
link |
00:50:26.200
what's going to make you good.
link |
00:50:28.160
To me, this is the big difference
link |
00:50:29.360
between programming in the 80s versus programming today,
link |
00:50:32.120
is you kind of had to be by yourself back then.
link |
00:50:35.040
Where would you go for answers?
link |
00:50:36.560
I remember in the early days when
link |
00:50:38.060
I was learning Visual Basic for Windows,
link |
00:50:41.320
I would call the Microsoft Helpline on the phone
link |
00:50:44.600
when I had programming.
link |
00:50:45.680
Because I was like, I don't know what to do.
link |
00:50:47.040
So I would go and call, and they had these huge phone banks.
link |
00:50:49.640
And I'm like, can you imagine how alien that is now?
link |
00:50:51.480
Who would do that?
link |
00:50:52.480
That's crazy.
link |
00:50:53.560
So there was just nowhere else to go when you got stuck.
link |
00:50:57.720
I had the books that came with it.
link |
00:50:59.560
I read those, studied those religiously.
link |
00:51:01.320
I just saw a post from Steve Sanofsky
link |
00:51:03.320
that said the C++ version 7 came with 10,000 pages
link |
00:51:08.880
of written material.
link |
00:51:10.640
Because where else were you going to figure that stuff out?
link |
00:51:13.600
Go to the library?
link |
00:51:14.640
I mean, you didn't have Wikipedia.
link |
00:51:16.100
You didn't have Reddit.
link |
00:51:17.880
You didn't have anywhere to go to answer these questions.
link |
00:51:20.760
So you've talked about, through the years,
link |
00:51:24.160
basically not having an ego and not
link |
00:51:26.200
thinking that you're the best programmer in the world.
link |
00:51:29.920
So always kind of just looking to improve,
link |
00:51:34.040
to become a better programmer than you were yesterday.
link |
00:51:36.520
So how have you changed as a programmer
link |
00:51:39.160
and as a thinker, designer around programming
link |
00:51:43.280
over the past, what is it, 15 years, really,
link |
00:51:47.600
of being a public figure?
link |
00:51:48.960
I would say the big insight that I had is, eventually,
link |
00:51:51.960
as a programmer, you have to stop writing code
link |
00:51:54.000
to be effective, which is kind of disturbing.
link |
00:51:56.880
Because you really love it.
link |
00:51:58.240
But you realize being effective at programming,
link |
00:52:01.600
at programming in the general sense,
link |
00:52:03.960
doesn't mean writing code.
link |
00:52:05.120
And a lot of times, you can be much more successful by not
link |
00:52:07.000
writing code and writing code in terms of just solving
link |
00:52:09.840
the problems you have, essentially hiring people
link |
00:52:11.680
that are really good and setting them free
link |
00:52:13.780
and giving them basic direction on strategy and stuff.
link |
00:52:18.000
Because a lot of the problems you encounter
link |
00:52:19.680
aren't necessarily solved through really gnarly code.
link |
00:52:22.360
They're solved by conceptual solutions, which can then
link |
00:52:25.720
be turned into code.
link |
00:52:26.520
But are you even solving the right problem?
link |
00:52:29.720
So I would say, for me, the main insight I have
link |
00:52:32.880
is, to succeed as a programmer, you eventually
link |
00:52:36.080
kind of stop writing code.
link |
00:52:37.560
That's going to sound discouraging, probably,
link |
00:52:39.160
to people hearing.
link |
00:52:39.680
But I don't mean it that way.
link |
00:52:40.760
What I mean is that you're coding
link |
00:52:42.120
at a higher level language.
link |
00:52:43.360
Eventually, like, OK, so we're coding in assembly language.
link |
00:52:45.600
That's the beginning, right?
link |
00:52:46.800
You're hardcoded to the architecture.
link |
00:52:48.960
Then you have stuff like C, where it's like, wow,
link |
00:52:50.280
we can abstract across the architecture.
link |
00:52:52.080
We can write code.
link |
00:52:52.880
I can then compile that code for ARM
link |
00:52:54.640
or whatever x86 or whatever else is out there.
link |
00:52:58.400
And then even higher level than that,
link |
00:53:00.600
you're looking at Python, Ruby, interpreted languages.
link |
00:53:03.160
And then, to me, as a programmer,
link |
00:53:04.680
I'm like, OK, I want to go even higher.
link |
00:53:06.000
I want to go higher than that.
link |
00:53:07.200
How do I abstract higher than the language?
link |
00:53:08.560
It's like, well, you abstract in spoken language
link |
00:53:11.120
and written language, right?
link |
00:53:12.560
You're sort of inspiring people to get things done,
link |
00:53:14.640
giving them guidance, like, what if we did this?
link |
00:53:16.080
What if we did this?
link |
00:53:17.240
You're writing in the highest level language
link |
00:53:19.120
that there is, which is, for me, English,
link |
00:53:21.360
whatever your spoken language is.
link |
00:53:23.120
So it's all about being effective, right?
link |
00:53:25.960
And I think Patrick McKenzie, patio11 on Hacker News
link |
00:53:31.000
and works at Stripe, has a great post about this,
link |
00:53:33.600
of how calling yourself a programmer
link |
00:53:35.880
is a career limiting move at some level
link |
00:53:38.160
once you get far enough from your career.
link |
00:53:39.800
And I really believe that.
link |
00:53:40.800
And again, I apologize.
link |
00:53:41.840
This is sound discouraging.
link |
00:53:43.080
I don't mean it to be, but he's so right.
link |
00:53:45.240
Because all the stuff that goes on around the code,
link |
00:53:47.720
like the people, that's another thing,
link |
00:53:49.760
if you look at my early blog entries, is about, wow,
link |
00:53:52.200
programming is about people more than it's
link |
00:53:54.720
about code, which doesn't really make sense.
link |
00:53:56.680
But it's about, can these people even get along together?
link |
00:53:59.160
Can they understand each other?
link |
00:54:00.720
Can you even explain to me what it is you're working on?
link |
00:54:03.000
Are you solving the right problem?
link |
00:54:04.560
PeopleWare, another classic programming book,
link |
00:54:06.600
which, again, up there with Code Complete,
link |
00:54:08.480
please read PeopleWare.
link |
00:54:09.960
It's that software is people.
link |
00:54:11.560
People are the software, first and foremost.
link |
00:54:13.440
So a lot of the skills that I was working on early
link |
00:54:15.860
in the blog were about figuring out the people
link |
00:54:18.560
parts of programming, which were the harder parts.
link |
00:54:20.680
The hard part of programming, once you
link |
00:54:21.880
get a certain skill level in programming,
link |
00:54:23.040
you can pretty much solve any reasonable problem that's
link |
00:54:25.360
put in front of you.
link |
00:54:26.320
You're not writing algorithms from scratch.
link |
00:54:28.120
That just doesn't happen.
link |
00:54:29.280
So any sort of reasonable problem put in front of you,
link |
00:54:31.360
you're going to be able to solve.
link |
00:54:32.760
But what you can't solve is, our manager is a total jerk.
link |
00:54:36.920
You cannot solve that with code.
link |
00:54:38.600
That is not a code solvable problem.
link |
00:54:40.800
And yet, that will cripple you way more than, oh, we
link |
00:54:44.040
had to use this stupid framework I don't like,
link |
00:54:45.800
or Sam keeps writing bad code that I hate,
link |
00:54:49.320
or Dave is off there in the wilderness writing
link |
00:54:52.440
God knows what.
link |
00:54:53.280
These are not your problems.
link |
00:54:54.440
Your problem is your manager or a co worker
link |
00:54:56.800
is so toxic to everybody else in your team
link |
00:54:58.760
that nobody can get anything done,
link |
00:55:00.080
because everybody's so stressed out and freaked out.
link |
00:55:02.320
These are the problems that you have to attack.
link |
00:55:04.520
Absolutely.
link |
00:55:05.040
And so as you go to these higher level abstractions,
link |
00:55:07.360
as you've developed as a programmer
link |
00:55:09.060
to higher and higher level abstractions
link |
00:55:10.600
and go into natural language, you're
link |
00:55:12.680
also the guy who preached building it, diving in
link |
00:55:17.560
and doing it, and learn by doing.
link |
00:55:21.720
Yes.
link |
00:55:22.840
Do you worry that as you get to higher and higher level
link |
00:55:29.120
abstractions, you lose track of the lower level of just
link |
00:55:34.320
building?
link |
00:55:35.880
Do you worry about that, even not maybe now,
link |
00:55:38.560
but 10 years from now, 20 years from now?
link |
00:55:41.560
Well, no.
link |
00:55:42.480
I mean, there is always that paranoia around, oh, gosh,
link |
00:55:44.360
I don't feel it's valuable since I'm not writing code.
link |
00:55:46.240
But for me, when we started the discourse project,
link |
00:55:48.280
it was Ruby, which I didn't really know Ruby.
link |
00:55:50.280
I mean, as you pointed out, and this
link |
00:55:51.840
is another valuable observation in Stack Overflow,
link |
00:55:53.840
you can be super proficient in, for example, C Sharp,
link |
00:55:56.040
which I was working in.
link |
00:55:56.760
That's what we built Stack Overflow in and still
link |
00:55:58.400
is written in.
link |
00:55:59.360
And then switch to Ruby, and you're a newbie again.
link |
00:56:01.920
But you have the framework.
link |
00:56:03.240
I know what a for loop is.
link |
00:56:04.440
I know what recursion is.
link |
00:56:05.800
I know what a stack trace is.
link |
00:56:10.040
I have all the fundamental concepts to be a programmer.
link |
00:56:12.040
I just don't know Ruby.
link |
00:56:13.040
So I'm still on a higher level.
link |
00:56:14.800
I'm not like a beginner beginner, like you're saying.
link |
00:56:16.600
I'm just like, I need to apply my programming concepts I already
link |
00:56:19.140
know to Ruby.
link |
00:56:20.360
Well, so there's a question that's really interesting.
link |
00:56:23.280
So looking at Ruby, how do you go about learning enough
link |
00:56:26.840
that your intuition can be applied, carried over?
link |
00:56:29.640
That's what I was trying to get to.
link |
00:56:30.360
It's like what I realized, particularly when I started
link |
00:56:31.600
with just me and Robin, I realized if I bother Robin,
link |
00:56:34.840
I am now costing us productivity.
link |
00:56:37.120
Every time I go to Robin, rather than building our first alpha
link |
00:56:42.160
version of discourse, he's now answering my stupid questions
link |
00:56:45.540
about Ruby.
link |
00:56:46.040
Is that a good use of his time?
link |
00:56:47.600
Is that a good use of my time?
link |
00:56:49.160
And the answer to both of those was resoundingly no.
link |
00:56:53.080
We were getting to an alpha, and it was pretty much just,
link |
00:56:55.080
OK, we'll hire more programmers.
link |
00:56:56.880
We eventually hired Neil, and then eventually Sam,
link |
00:57:00.240
who came in as a cofounder.
link |
00:57:02.920
Actually, it was Sam first, then Neil later.
link |
00:57:05.000
But the answer to the problem is just
link |
00:57:06.400
hire other competent programmers.
link |
00:57:08.200
Now I shall pull myself up by my bootstraps
link |
00:57:11.080
and learn Ruby.
link |
00:57:12.320
But at some point, writing code becomes a liability to you
link |
00:57:15.960
in terms of getting things done.
link |
00:57:17.360
There's so many other things that
link |
00:57:18.460
go on in the project, like building the prototype.
link |
00:57:20.800
You mentioned, well, how do you, if you're not writing code,
link |
00:57:23.120
how does everybody keep focus on what are we building?
link |
00:57:25.680
Well, first, basic mockups and research.
link |
00:57:28.440
What do we even want to build?
link |
00:57:30.160
There's a little bit of that that goes on.
link |
00:57:31.240
But then very quickly, you get to the prototype stage.
link |
00:57:32.800
Like, build a prototype.
link |
00:57:33.760
Let's iterate on the prototype really, really rapidly.
link |
00:57:35.920
And that's what we do with discourse.
link |
00:57:36.840
And that's what we demoed to get our seed funding
link |
00:57:38.960
for discourse was the alpha version of discourse
link |
00:57:42.320
that we had running and ready to go.
link |
00:57:43.800
And it was very, it was bad.
link |
00:57:45.160
I mean, it was, I'll just tell you it was bad.
link |
00:57:47.360
We have screenshots of it.
link |
00:57:48.440
I'm just embarrassed to look at it now.
link |
00:57:50.280
But it was the prototype.
link |
00:57:51.320
We were figuring out what's working, what's not working.
link |
00:57:53.740
Because there's such a broad gap between the way
link |
00:57:58.040
you think things will work in your mind or even on paper
link |
00:58:00.400
and the way they work once you sit and live in the software,
link |
00:58:03.040
like actually spend time living and breathing in software,
link |
00:58:05.560
so different.
link |
00:58:06.720
So my philosophy is get to a prototype.
link |
00:58:10.800
And then what you're really optimizing
link |
00:58:12.380
for is speed of iteration, like how you can turn the crank.
link |
00:58:14.800
How quickly can we iterate?
link |
00:58:16.120
That's the absolutely critical metric
link |
00:58:18.000
of any software project.
link |
00:58:19.160
And I had a tweet recently that people liked.
link |
00:58:20.920
And I totally, this is so fundamental to what I do,
link |
00:58:23.160
is like if you want to measure the core competency of any
link |
00:58:26.160
software tech company, it's the speed at which somebody
link |
00:58:28.960
can say, hey, we really need this word in the product.
link |
00:58:31.200
Change this word, right?
link |
00:58:32.280
Because it will be more clear to the user.
link |
00:58:34.280
Like, instead of respond, it's reply or something.
link |
00:58:36.400
But there's some, from the conception of that idea
link |
00:58:39.760
to how quickly that single word can be changed in your software
link |
00:58:42.640
and rolled out to users, that is your life cycle.
link |
00:58:44.920
That's your health, your heartbeat.
link |
00:58:47.320
If your heartbeat is like super slow, you're basically dead.
link |
00:58:51.640
No, seriously.
link |
00:58:52.200
Like, if it takes two weeks or even a month
link |
00:58:54.880
to get that single word changed, everybody's like, oh my god,
link |
00:58:56.840
this is a great idea.
link |
00:58:57.760
That word is so much clearer.
link |
00:58:59.000
I'm talking about like a super, like everybody's
link |
00:59:00.700
on board for this change.
link |
00:59:01.660
It's not like, let's just change a word because we're bored.
link |
00:59:03.500
It's like, this is an awesome change.
link |
00:59:05.600
And then it takes months to roll out.
link |
00:59:07.000
It's like, well, you're dead.
link |
00:59:08.120
You can't iterate.
link |
00:59:09.200
You can't, how are you going to do anything, right?
link |
00:59:12.360
So anyway, about the heartbeat, it's
link |
00:59:13.800
like, get the prototype and then iterate on it.
link |
00:59:15.960
That's what I view as the central tenet of modern software
link |
00:59:19.880
development.
link |
00:59:20.480
That's fascinating that you put it that way.
link |
00:59:22.480
So I work and I build autonomous vehicles.
link |
00:59:24.440
And when you look at what, maybe compare Tesla
link |
00:59:28.160
to most other automakers, the heart beat for Tesla
link |
00:59:34.120
is literally days now in terms of they can over the air
link |
00:59:38.120
deploy software updates to all their vehicles, which
link |
00:59:41.360
is markedly different than every other automaker, which takes
link |
00:59:46.040
years to update a piece of software.
link |
00:59:49.160
And that's reflected in everything
link |
00:59:52.120
that's the final product.
link |
00:59:54.840
That's reflected in really how slowly they
link |
00:59:57.280
adapt to the times.
link |
00:59:58.200
And to be clear, I'm not saying being a hummingbird
link |
00:59:59.900
is the goal either.
link |
01:00:00.680
It's like, you don't want a heartbeat that's like so fast.
link |
01:00:02.400
It's like you're just freaking out.
link |
01:00:04.440
But it is a measure of health.
link |
01:00:05.720
You should have a healthy heartbeat.
link |
01:00:07.320
It's up to people listening to decide what that means.
link |
01:00:09.560
But it has to be healthy.
link |
01:00:10.880
It has to be reasonable.
link |
01:00:11.680
Because otherwise, you're just going
link |
01:00:12.840
to be frustrated because that's how you build software.
link |
01:00:15.140
You make mistakes.
link |
01:00:15.940
You roll it out.
link |
01:00:16.600
You live with it.
link |
01:00:17.760
You see what it feels like and say, oh, God,
link |
01:00:19.160
that was a terrible idea.
link |
01:00:20.160
Oh, my gosh, this could be even better if we did Y, right?
link |
01:00:22.720
You turn the crank.
link |
01:00:23.480
And then the more you do that, the faster
link |
01:00:25.920
you get ahead of your competitors ultimately.
link |
01:00:28.640
It's rate of change, right?
link |
01:00:29.680
Delta V, right?
link |
01:00:30.920
How fast are you moving?
link |
01:00:32.660
Well, within a year, you're going to be miles away
link |
01:00:34.760
by the time they catch up with you, right?
link |
01:00:36.760
That's the way it works.
link |
01:00:37.880
And plus, as a software developer and user,
link |
01:00:40.800
I love software that's constantly changing.
link |
01:00:42.800
Because I don't understand people who get super pissed off
link |
01:00:45.600
when like, oh, they changed the software on me.
link |
01:00:47.180
How dare they?
link |
01:00:47.720
I'm like, yes, change the software.
link |
01:00:49.520
Change it all the time, man.
link |
01:00:51.280
That's what makes this stuff great
link |
01:00:52.720
is that it can be changed so rapidly
link |
01:00:55.320
and become something that is greater than it is now.
link |
01:00:58.120
Now, granted, there are some changes that suck.
link |
01:01:00.040
I admit.
link |
01:01:01.160
I've seen it many times.
link |
01:01:02.240
But in general, that's what makes software cool, right?
link |
01:01:05.040
It's that it is so malleable.
link |
01:01:06.640
Fighting that is weird to me.
link |
01:01:08.440
Because it's like, well, you're fighting
link |
01:01:10.120
the essence of the thing that you're building.
link |
01:01:12.200
That doesn't make sense.
link |
01:01:13.000
You want to really embrace that.
link |
01:01:14.200
Not to be a hummingbird, but embrace it
link |
01:01:16.280
to a healthy cycle of your heartbeat, right?
link |
01:01:18.200
So you talk about that people really don't change.
link |
01:01:21.040
It's true.
link |
01:01:22.520
That's why probably a lot of the stuff you write about in your blog
link |
01:01:25.720
probably will remain true.
link |
01:01:27.200
Well, there's a flip side of the coin.
link |
01:01:28.780
People don't change.
link |
01:01:29.580
Like, investing and understanding people
link |
01:01:31.640
is like learning Unix in 1970.
link |
01:01:34.840
Because nothing has changed, right?
link |
01:01:36.960
All those things you've learned about people
link |
01:01:38.880
will still be valid 34 years from now.
link |
01:01:40.680
Whereas if you learn the latest JavaScript framework,
link |
01:01:43.180
that's going to be good for like two years, right?
link |
01:01:45.360
Exactly.
link |
01:01:46.720
But if you look at the future of programming,
link |
01:01:49.800
so there's a people component, but there's also
link |
01:01:52.980
the technology itself.
link |
01:01:55.040
What do you see as the future of programming?
link |
01:01:57.320
Will it change significantly, or as far as you can tell,
link |
01:02:01.840
people are ultimately programming,
link |
01:02:04.800
and so it's not something that you foresee changing
link |
01:02:08.720
in any fundamental way?
link |
01:02:10.040
Well, you've got to go look back on sort
link |
01:02:12.880
of the basics of programming.
link |
01:02:14.440
And one of things that always shocked me
link |
01:02:15.520
is like source control.
link |
01:02:16.400
Like, I didn't learn anything about source control.
link |
01:02:18.680
Granted, I graduated from college in 1992.
link |
01:02:22.400
But I remember hearing from people as late as like 1998,
link |
01:02:25.800
1999, like even maybe today, they're
link |
01:02:27.760
not learning source control.
link |
01:02:28.960
And to me, it's like, well, how can you not
link |
01:02:30.240
learn source control?
link |
01:02:31.600
That is so fundamental to working with other programmers,
link |
01:02:34.320
working in a way that you don't lose your work.
link |
01:02:36.280
Just basic software, the literal bedrock of software
link |
01:02:39.720
development is source control.
link |
01:02:41.280
Now, you compare it today, like GitHub, right?
link |
01:02:42.840
Like Microsoft bought GitHub, which
link |
01:02:44.080
I think was an incredibly smart acquisition move
link |
01:02:46.000
on their part.
link |
01:02:47.000
Now they have anybody who wants reasonable source control
link |
01:02:49.880
to go sign up on GitHub.
link |
01:02:50.960
It's all set up for you, right?
link |
01:02:52.440
There's tons of walkthroughs, tons of tutorials.
link |
01:02:55.360
So from the concept of like, has programming
link |
01:02:57.320
advanced from, say, 1999, it's like, well, hell, we have GitHub.
link |
01:03:00.320
I mean, my god, yes, right?
link |
01:03:01.600
Like, it's massively advanced over what it was.
link |
01:03:04.880
Now, as to whether programming is significantly different,
link |
01:03:08.880
I'm going to say no.
link |
01:03:09.720
But I think the baseline of what we view as fundamentals
link |
01:03:14.560
will continue to go up and actually get better,
link |
01:03:16.560
like source control.
link |
01:03:17.520
That's one of the fundamentals that has gotten hundreds
link |
01:03:20.880
of orders of magnitude better than it was 10, 20 years ago.
link |
01:03:23.800
So those are the fundamentals.
link |
01:03:25.000
Let me introduce two things that maybe you can comment on.
link |
01:03:28.320
So one is mobile phones.
link |
01:03:31.080
So that could fundamentally transform what programming is,
link |
01:03:37.160
or maybe not.
link |
01:03:38.000
Maybe you can comment on that.
link |
01:03:39.320
And the other one is artificial intelligence,
link |
01:03:41.560
which promises to, in some ways, to do
link |
01:03:46.560
some of the programming for you is one way to think about it.
link |
01:03:49.600
So it's really what a programmer is,
link |
01:03:52.360
is using the intelligence that's inside your skull
link |
01:03:55.720
to do something useful.
link |
01:03:57.880
The hope with artificial intelligence
link |
01:03:59.520
is that it does some of the useful parts for you
link |
01:04:02.080
where you don't have to think about it.
link |
01:04:03.720
So do you see smartphones, the fact that everybody has one,
link |
01:04:07.720
and they're getting more and more powerful as potentially
link |
01:04:10.080
changing programming?
link |
01:04:11.640
And do you see AI as potentially changing programming?
link |
01:04:14.360
OK, so that's good.
link |
01:04:15.640
So smartphones have definitely changed.
link |
01:04:17.560
I mean, since, I guess, 2010 is when they really
link |
01:04:20.020
started getting super popular.
link |
01:04:21.840
I mean, in the last eight years, the world
link |
01:04:24.760
has literally changed, right?
link |
01:04:25.920
Everybody carries a computer around, and that's normal.
link |
01:04:28.520
I mean, that is such a huge change in society.
link |
01:04:30.920
I think we're still dealing with a lot
link |
01:04:32.460
of the positive and negative ramifications of that, right?
link |
01:04:35.260
Everybody's connected all the time.
link |
01:04:36.280
Everybody's on the computer all the time.
link |
01:04:37.980
That was my dream world as a geek, right?
link |
01:04:40.360
But it's like, be careful what you ask for, right?
link |
01:04:42.560
Like, wow, now everybody has a computer.
link |
01:04:44.200
It's not quite the utopia that we thought it would be, right?
link |
01:04:47.040
Computers can be used for a lot of stuff that's not necessarily
link |
01:04:49.720
great.
link |
01:04:51.200
So to me, that's the central focus of the smartphone,
link |
01:04:53.160
is just that it puts a computer in front of everyone.
link |
01:04:55.720
Granted, a small, touch screen, smallish,
link |
01:04:57.800
touch screen computer.
link |
01:04:59.080
But as for programming, I don't know.
link |
01:05:00.560
I don't think that I've kind of, over time,
link |
01:05:03.080
come to subscribe to the Unix view of the world
link |
01:05:05.360
when it comes to programming.
link |
01:05:06.600
You want to teach these basic command line things,
link |
01:05:09.960
and that is just what programming
link |
01:05:11.280
is going to be for, I think, a long, long time.
link |
01:05:14.440
I don't think there's any magical visual programming
link |
01:05:17.120
that's going to happen.
link |
01:05:20.160
I don't know.
link |
01:05:20.680
I've, over time, have become a believer in that Unix
link |
01:05:23.180
philosophy of just, you know, they kind of had
link |
01:05:25.120
to write with Unix.
link |
01:05:26.440
That's going to be the way it is for a long, long time.
link |
01:05:28.960
And we'll continue to, like I said, raise the baseline.
link |
01:05:31.640
The tools will get better.
link |
01:05:32.440
It'll get simpler.
link |
01:05:33.020
But it's still fundamentally going
link |
01:05:34.440
to be command line tools, fancy IDEs.
link |
01:05:37.200
That's kind of it for the foreseeable future.
link |
01:05:39.240
I'm not seeing any visual programming stuff
link |
01:05:41.440
on the horizon.
link |
01:05:42.240
Because you kind of think, like, what
link |
01:05:43.200
do you do on a smartphone that will be directly
link |
01:05:45.200
analogous to programming?
link |
01:05:46.480
Like, I'm trying to think, right?
link |
01:05:48.240
And there's really not much.
link |
01:05:52.200
So not necessarily analogous to programming,
link |
01:05:55.160
but the kind of things that, the kind of programs
link |
01:06:01.680
you would need to write might need to be very different.
link |
01:06:07.360
Yeah.
link |
01:06:08.040
And the kind of languages.
link |
01:06:09.480
I mean, but I probably also subscribe to the same,
link |
01:06:12.400
just because everything in this world
link |
01:06:14.260
might be written in JavaScript.
link |
01:06:16.200
Oh, yeah.
link |
01:06:16.720
That's already happening.
link |
01:06:17.760
I mean, discourse is a bet.
link |
01:06:18.960
Discourse itself, JavaScript, is another bet
link |
01:06:20.840
on that side of the table.
link |
01:06:21.920
And I still try and believe in that.
link |
01:06:23.680
So I would say smartphones have mostly a cultural shift more
link |
01:06:26.220
than a programming shift.
link |
01:06:27.720
Now, your other question was about artificial intelligence
link |
01:06:30.080
and sort of devices predicting what you're going to do.
link |
01:06:32.760
And I do think there's some strength to that.
link |
01:06:34.640
I think artificial intelligence is kind of overselling it
link |
01:06:37.040
in terms of what it's doing.
link |
01:06:37.680
It's more like, people are predictable, right?
link |
01:06:39.720
People do the same things.
link |
01:06:41.120
Let me give you an example.
link |
01:06:43.120
One check we put in a discourse that's
link |
01:06:44.720
been a lot of big commercial websites is,
link |
01:06:48.280
say you log in from New York City now.
link |
01:06:51.160
And then an hour later, you log in from San Francisco.
link |
01:06:54.200
It's like, well, hmm, that's interesting.
link |
01:06:56.600
How did you get from New York to San Francisco in one hour?
link |
01:06:59.560
So at that point, you're like, OK, this
link |
01:07:01.220
is a suspicious login at that point.
link |
01:07:02.680
So we would alert you.
link |
01:07:03.520
It's like, OK.
link |
01:07:04.200
But that's not AI, right?
link |
01:07:05.360
That's just a heuristic of like, how did you, in one hour,
link |
01:07:09.080
get 2,000 miles, right?
link |
01:07:10.880
That doesn't.
link |
01:07:11.440
I mean, you're grand.
link |
01:07:12.040
Maybe you're on a VPN.
link |
01:07:12.680
There's other ways to happen.
link |
01:07:14.040
That's just a basic prediction based on the idea
link |
01:07:16.040
that people pretty much don't move around that much.
link |
01:07:19.440
They may travel occasionally.
link |
01:07:20.920
But nobody, unless you're a traveling salesman that's
link |
01:07:23.160
literally traveling the world every day,
link |
01:07:26.280
there's so much repetition and predictability
link |
01:07:28.280
in terms of things you're going to do.
link |
01:07:29.740
And I think good software anticipates your needs.
link |
01:07:32.240
For example, Google, I think it's
link |
01:07:33.560
called Google Now or whatever that Google thing is
link |
01:07:35.320
that predicts your commute and predicts,
link |
01:07:36.800
based on your phone location, where are you every day?
link |
01:07:39.200
Well, that's probably where you work, that kind of stuff.
link |
01:07:41.840
I do think computers can get a lot better at that.
link |
01:07:43.920
I hesitate to call it full blown AI.
link |
01:07:46.320
It's just computers getting better at like, first of all,
link |
01:07:48.880
they have a ton of data because everybody has a smartphone.
link |
01:07:50.560
Now, all of a sudden, we have all this data
link |
01:07:52.080
that we didn't have before about location,
link |
01:07:53.880
about communication, and feeding that into some basic heuristics
link |
01:07:59.240
and maybe some fancy algorithms that turn it
link |
01:08:01.080
into predictions of anticipating your needs,
link |
01:08:03.160
like a friend would, right?
link |
01:08:04.520
Like, oh, hey, I see your home.
link |
01:08:06.160
Would you like some dinner, right?
link |
01:08:07.540
Like, let's go get some food, because that's usually
link |
01:08:09.320
what we do at this time of day, right?
link |
01:08:10.840
In the context of actually the act of programming,
link |
01:08:13.680
do you see IDEs improving and making
link |
01:08:15.680
the life of programming as better?
link |
01:08:17.400
I do think that is possible, because there's
link |
01:08:19.160
a lot of repetition in programming, right?
link |
01:08:20.760
Oh, you know, Clippy would be the bad example of, oh, I see.
link |
01:08:23.680
It looks like you're writing a for loop.
link |
01:08:25.960
But there are patterns in code, right?
link |
01:08:28.400
And actually, libraries are kind of like that, right?
link |
01:08:30.880
Rather than go code up your own HTTP request library,
link |
01:08:35.440
it's like, well, you'd use one of the existing ones
link |
01:08:37.560
that we have.
link |
01:08:38.400
That's already a troubleshot, right?
link |
01:08:39.800
It's not AI, per se.
link |
01:08:41.440
It's just building better LEGO bricks, bigger LEGO bricks,
link |
01:08:46.180
that have more functionality in them,
link |
01:08:47.760
so people don't have to worry about the low level
link |
01:08:49.460
stuff as much anymore.
link |
01:08:50.560
Like, WordPress, for example, to me,
link |
01:08:52.040
is like a tool for somebody who isn't a programmer
link |
01:08:54.160
to do something.
link |
01:08:55.800
I mean, you can turn WordPress into anything.
link |
01:08:57.680
It's kind of crazy, actually, through plugins, right?
link |
01:08:59.800
And that's not programming, per se.
link |
01:09:01.400
It's just LEGO bricks stacking WordPress elements, right?
link |
01:09:04.560
And a little bit of configuration glue.
link |
01:09:06.620
So I would say, maybe in a broader sense, what I'm seeing,
link |
01:09:09.040
like, there'll be more gluing and less actual programming.
link |
01:09:14.200
And that's a good thing, right?
link |
01:09:15.600
Because most of the stuff you need
link |
01:09:16.720
is kind of out there already.
link |
01:09:17.960
You said 1970s, Unix.
link |
01:09:20.120
Do you see PHP and these kind of old remnants
link |
01:09:28.240
of the early birth of programming
link |
01:09:31.760
remaining with us for a long time?
link |
01:09:33.760
Like you said, Unix in itself.
link |
01:09:35.640
Do you see, ultimately, this stuff just being there
link |
01:09:41.120
out of momentum?
link |
01:09:42.940
I kind of do.
link |
01:09:44.160
I mean, I was a big believer in Windows early on.
link |
01:09:46.200
And I was a big, you know, I was like,
link |
01:09:47.400
Unix, what a waste of time.
link |
01:09:48.780
But over time, I've completely flipped on that,
link |
01:09:50.120
where I was like, okay, the Unix guys were right.
link |
01:09:51.720
And pretty much Microsoft and Windows were kind of wrong,
link |
01:09:54.640
at least on the server side.
link |
01:09:55.760
Now, on the desktop, right, you need a GUI,
link |
01:09:57.400
you need all that stuff.
link |
01:09:58.240
And you have the two philosophies,
link |
01:09:59.200
like Apple built on Unix, effectively, Darwin.
link |
01:10:02.680
And on the desktop, it's a slightly different story.
link |
01:10:04.600
But on the server side, where you're gonna be programming.
link |
01:10:07.000
Now, it's a question of where the programming's gonna be.
link |
01:10:08.480
There's gonna be a lot more like client side programming,
link |
01:10:10.760
because technically, discourse is client side programming.
link |
01:10:13.620
The way you get discourse,
link |
01:10:14.520
we deliver a big ball of JavaScript,
link |
01:10:16.200
which is then executed locally.
link |
01:10:18.260
So we're really using a lot more local computing power.
link |
01:10:20.980
We'll still retrieve the data, obviously,
link |
01:10:22.360
we have to display the posts on the screen and so forth.
link |
01:10:24.320
But in terms of like sorting and a lot of the basic stuff,
link |
01:10:27.040
we're using the host processor.
link |
01:10:29.480
But to the extent that a lot of programming
link |
01:10:31.280
is still gonna be server side, I would say, yeah,
link |
01:10:33.680
the Unix philosophy definitely won.
link |
01:10:35.320
And there'll be different veneers over Unix,
link |
01:10:38.640
but it's still, if you peel away one or two layers,
link |
01:10:40.800
it's gonna be Unixy for a long, I think Unix won.
link |
01:10:44.340
I mean, so definitively.
link |
01:10:45.520
It's interesting to hear you say that,
link |
01:10:47.440
because you've done so much excellent work
link |
01:10:49.080
on the Microsoft side in terms of backend development.
link |
01:10:52.840
Cool.
link |
01:10:53.680
So what's the future hold for Jeff Atwood?
link |
01:10:56.960
I mean, the discourse, continuing the discourse
link |
01:11:01.820
in trying to improve conversation on the web?
link |
01:11:03.960
Well, discourse is what I've viewed as a,
link |
01:11:05.640
and originally I called it a five year project,
link |
01:11:07.040
then really quickly revised that to a 10 year project.
link |
01:11:08.800
So we started in early 2013,
link |
01:11:12.280
that's when we launched the first version.
link |
01:11:13.640
So we're still five years in.
link |
01:11:16.120
This is the part where it starts getting good.
link |
01:11:17.400
Like we have a good product now.
link |
01:11:18.540
Discourse, there's any project you build in software,
link |
01:11:21.760
it takes three years to build what you want it
link |
01:11:23.280
to build anyway.
link |
01:11:24.100
Like V1 is gonna be terrible, which it was.
link |
01:11:26.560
But you ship it anyway,
link |
01:11:27.400
because that's how you get better at stuff.
link |
01:11:29.000
It's about turning the crank.
link |
01:11:29.920
It's not about V1 being perfect,
link |
01:11:31.400
because that's ridiculous.
link |
01:11:32.800
It's about V1, then let's get really good at V1.1,
link |
01:11:35.560
1.2, 1.3, like how fast can we iterate?
link |
01:11:38.000
And I think we're iterating like crazy on discourse,
link |
01:11:40.120
to the point that like, it's a really good product now.
link |
01:11:41.920
We have serious momentum.
link |
01:11:44.640
And my original vision was,
link |
01:11:46.240
I wanna be the WordPress of discussion.
link |
01:11:48.120
Meaning someone came to you and said,
link |
01:11:49.860
I wanna start a blog.
link |
01:11:50.760
Although the very question is kind of archaic now.
link |
01:11:53.000
It's like, who actually blogs anymore?
link |
01:11:55.320
But I wanted the answer to that to be,
link |
01:11:59.000
it would be WordPress normally,
link |
01:12:01.360
because that's the obvious choice
link |
01:12:02.240
for blogging most of the time.
link |
01:12:04.200
But if someone said, hey, I need a group of people
link |
01:12:06.960
to get together and do something,
link |
01:12:08.760
the answer should be discourse, right?
link |
01:12:10.400
That should be the default answer for people.
link |
01:12:11.800
Because it's open source, it's free,
link |
01:12:13.360
doesn't cost you anything.
link |
01:12:14.200
You control it, you can run it.
link |
01:12:15.960
Your minimum server cost for discourse
link |
01:12:17.400
is five bucks a month at this point.
link |
01:12:19.560
They actually got the VPS prices down.
link |
01:12:21.560
It used to be $10 a month for one gigabyte of RAM,
link |
01:12:23.860
which we have a kind of heavy stack.
link |
01:12:28.400
Like there's a lot of stuff in discourse.
link |
01:12:30.280
You need Postgres, you need Redis, you need Ruby,
link |
01:12:32.520
and Rails, you need a sidekick for scheduling.
link |
01:12:35.760
It's not a trivial amount of stuff
link |
01:12:36.960
because we were architected for like,
link |
01:12:38.040
look, we're building for the next 10 years.
link |
01:12:39.460
I don't care about shared PHP hosting.
link |
01:12:41.960
That's not my model.
link |
01:12:44.160
My idea is like, hey, eventually,
link |
01:12:45.880
this is gonna be very cheap for everybody
link |
01:12:47.480
and I wanna build it right.
link |
01:12:49.120
Using again, higher, bigger building block levels, right?
link |
01:12:53.460
That have more requirements.
link |
01:12:54.440
And there's a WordPress model of WordPress.org,
link |
01:12:56.600
WordPress.com.
link |
01:12:57.680
Is there a central hosting for discourse or no?
link |
01:13:00.960
There is.
link |
01:13:01.800
We're not strictly segmenting into the open source
link |
01:13:03.600
versus the commercial side.
link |
01:13:05.080
We have a hosting business.
link |
01:13:06.000
That's how discourse makes money
link |
01:13:07.080
is we host discourse instances
link |
01:13:08.840
and we have really close relationship with our customers
link |
01:13:10.640
of the symbiosis of them giving us feedback on the product.
link |
01:13:14.640
We definitely wait feedback from customers
link |
01:13:16.440
a lot heavier than feedback from somebody
link |
01:13:18.360
who just wanders by and gives feedback.
link |
01:13:20.880
But that's where we make all our money.
link |
01:13:22.440
But we don't have a strict division.
link |
01:13:24.600
We encourage people to use discourse.
link |
01:13:26.600
Like the whole point is that it's free, right?
link |
01:13:29.040
Anybody can set it up.
link |
01:13:29.960
I don't wanna be the only person that hosts discourse.
link |
01:13:32.600
That's absolutely not the goal.
link |
01:13:34.200
But it is a primary way for us to build a business
link |
01:13:36.280
and it's actually kind of a great business.
link |
01:13:37.600
I mean, the business is going really, really well
link |
01:13:40.280
in terms of hosting.
link |
01:13:41.340
So I used to work at Google Research.
link |
01:13:44.280
It's a company that's basically funded on advertisements.
link |
01:13:47.040
So it's Facebook.
link |
01:13:48.120
Let me ask if you can comment on it.
link |
01:13:50.360
I think advertisement is best.
link |
01:13:53.500
So you'd be extremely critical on what ads are
link |
01:13:56.580
but at its best, it's actually serving you.
link |
01:13:59.700
In a sense, it's giving you, it's connecting you
link |
01:14:02.000
to what you would want to explore.
link |
01:14:05.640
So it's like related posts or related content.
link |
01:14:08.040
It's the same, that's the best of advertisement.
link |
01:14:10.200
So discourse is connecting people based on their interests.
link |
01:14:16.040
It seems like a place where advertisement at its best
link |
01:14:20.080
could actually serve the users.
link |
01:14:21.740
Is that something that you're considering thinking about
link |
01:14:24.880
as a way to bring, to financially support the platform?
link |
01:14:29.440
That's interesting because I actually have
link |
01:14:31.360
a contrarian view of advertising,
link |
01:14:32.560
which I kind of agree with you.
link |
01:14:33.760
I recently installed AdBlocker reluctantly
link |
01:14:36.800
because I don't like to do that.
link |
01:14:38.280
But the performance of the ads, man,
link |
01:14:40.580
they're so heavy now and it's just crazy.
link |
01:14:43.280
So it's almost like a performance argument
link |
01:14:45.040
more than like, I actually am pro ads
link |
01:14:47.200
and I have a contrarian viewpoint.
link |
01:14:49.480
I agree with you.
link |
01:14:50.320
If you do ads right, it's serving you stuff
link |
01:14:51.960
you would be interested in anyway.
link |
01:14:53.300
I don't mind that, that actually is kind of a good thing.
link |
01:14:56.520
So plus I think it's rational to wanna support
link |
01:15:00.000
the people that are doing this work
link |
01:15:01.680
through seeing their ads.
link |
01:15:02.600
But that said, I run AdBlock now,
link |
01:15:04.040
which I didn't wanna do, but I was convinced
link |
01:15:07.520
by all these articles, like 30, 40 megabytes of stuff
link |
01:15:10.080
just to serve you ads.
link |
01:15:12.480
Yeah, it feels like ads now are like the experts exchange
link |
01:15:15.980
of whenever you start a stock overflow.
link |
01:15:18.240
It's a little bit, it's overwhelming.
link |
01:15:19.440
Oh, there's so many companies in ad tech
link |
01:15:21.040
that it's embarrassing.
link |
01:15:21.880
Like you can do that, have you seen those logo charts
link |
01:15:23.180
of like just the whole page?
link |
01:15:24.280
It's like you can't even see them, they're so small.
link |
01:15:26.200
There's so many companies in the space.
link |
01:15:27.800
But since you brought it up, I do wanna point out
link |
01:15:29.640
that very, very few discourse sites actually run
link |
01:15:31.840
using an ad supported model.
link |
01:15:33.080
It's not effective.
link |
01:15:34.680
Like it's too diluted, it's too weird,
link |
01:15:37.600
it doesn't pay well, and like users hate it.
link |
01:15:40.560
So it's a combination of like users hate it,
link |
01:15:42.800
it doesn't actually work that well in practice.
link |
01:15:44.440
Like in theory, yes, I agree with you.
link |
01:15:45.760
If you had clean, fast ads that were exactly
link |
01:15:48.400
the stuff you would be interested in, awesome.
link |
01:15:50.320
We're so far from that though, right?
link |
01:15:52.440
Like, and Google does an okay job.
link |
01:15:53.800
They do retargeting and stuff like that,
link |
01:15:55.380
but in the real world, discourse sites
link |
01:15:59.280
rarely can make ads work.
link |
01:16:01.020
It just doesn't work for so many reasons.
link |
01:16:03.020
But you know what does work is subscriptions,
link |
01:16:05.600
Patreon, affiliate codes for like Amazon,
link |
01:16:10.660
of like just, oh, here's a cool yo yo, click,
link |
01:16:13.080
and then you click and go to Amazon,
link |
01:16:14.360
they get a small percentage of that,
link |
01:16:15.680
which is fair, I think.
link |
01:16:17.120
I mean, because you saw the yo yo on that site
link |
01:16:19.120
and you clicked through and you bought it, right?
link |
01:16:21.080
That's fair for them to get 5% of that
link |
01:16:22.560
or 2% of that, whatever it is.
link |
01:16:24.200
Those things definitely work.
link |
01:16:25.960
In fact, a site that I used to participate on a lot,
link |
01:16:28.580
I helped the owner.
link |
01:16:29.880
One of the things, I got them to switch to discourse.
link |
01:16:32.440
I basically paid them to switch to discourse
link |
01:16:34.200
because I was like, look, you guys got to switch.
link |
01:16:35.320
I can't come here anymore on this terrible software.
link |
01:16:38.520
But I was like, look, and on top of that,
link |
01:16:40.120
like you're serving people ads that they hate.
link |
01:16:42.280
Like you should just go full on Patreon
link |
01:16:43.920
because he had a little bit of Patreon.
link |
01:16:45.320
Go full on Patreon, do the Amazon affiliates thing
link |
01:16:49.720
for any Amazon links that get posted and just do that
link |
01:16:51.960
and just triple down on that stuff.
link |
01:16:53.600
And that's worked really well for them
link |
01:16:55.320
and this creator in particular.
link |
01:16:56.780
So that stuff works, but traditional ads,
link |
01:16:59.480
I mean, definitely not working, at least on discourse.
link |
01:17:01.720
So last question.
link |
01:17:03.400
You've created the code keyboard.
link |
01:17:05.920
I've programmed most of my adult life on a Kinesis keyboard.
link |
01:17:09.860
I have one upstairs now.
link |
01:17:12.080
Can you describe what a mechanical keyboard is
link |
01:17:14.520
and why is it something that makes you happy?
link |
01:17:16.720
Well, you know, this is another fetish item, really.
link |
01:17:18.800
Like, it's not required.
link |
01:17:20.160
You can do programming on any kind of keyboard,
link |
01:17:22.240
even like an onscreen keyboard.
link |
01:17:23.880
Oh, god, that's terrifying.
link |
01:17:25.960
But you could.
link |
01:17:27.000
I mean, if you look back at the early days of computing,
link |
01:17:28.760
there were chiclet keyboards, which are awful.
link |
01:17:31.400
But what's a chiclet keyboard?
link |
01:17:32.520
Oh, god.
link |
01:17:33.120
OK, well, it's just like thin rubber membranes.
link |
01:17:36.200
Oh, the rubber ones, oh, no.
link |
01:17:37.680
Super bad, right?
link |
01:17:38.840
So it's a fetish item.
link |
01:17:40.360
All that really says is, look, I care really about keyboards
link |
01:17:43.280
because the keyboard is the primary method of communication
link |
01:17:45.080
with the computer.
link |
01:17:46.240
So it's just like having a nice mic for this podcast.
link |
01:17:49.320
You want a nice keyboard, right?
link |
01:17:50.600
Because it has a very tactile feel.
link |
01:17:52.200
I can tell exactly when I press the key.
link |
01:17:54.040
I get that little click.
link |
01:17:55.080
So, oh, and it feels good.
link |
01:17:56.480
And it's also kind of a fetish item.
link |
01:17:57.980
It's like, wow, I care enough about programming
link |
01:18:00.320
that I care about the tool, the primary tool,
link |
01:18:02.440
that I use to communicate with the computer,
link |
01:18:03.320
make sure it's as good as it feels good to use for me.
link |
01:18:06.440
And I can be very productive with it.
link |
01:18:08.360
So to be honest, it's a little bit of a fetish item,
link |
01:18:10.720
but a good one.
link |
01:18:11.320
It indicates that you're serious.
link |
01:18:12.560
It indicates you're interested.
link |
01:18:13.640
It indicates that you care about the fundamentals.
link |
01:18:15.280
Because you know what makes you a good programmer?
link |
01:18:17.520
Being able to type really fast, right?
link |
01:18:19.360
This is true, right?
link |
01:18:20.600
So a core skill is just being able to type fast enough
link |
01:18:23.480
to get your ideas out of your head into the code base.
link |
01:18:26.120
So just practicing your typing can make you
link |
01:18:28.400
a better programmer.
link |
01:18:29.760
It is also something that makes you,
link |
01:18:33.720
well, makes you enjoy typing, correct?
link |
01:18:36.640
The actual act, something about the process.
link |
01:18:39.940
Like I play piano.
link |
01:18:41.220
It's tactile.
link |
01:18:42.060
There's a tactile feel that ultimately feeds the passion,
link |
01:18:46.200
makes you happy.
link |
01:18:47.000
Right.
link |
01:18:47.400
No, totally.
link |
01:18:47.840
That's it.
link |
01:18:48.160
I mean, and it's funny because artisanal keyboards have
link |
01:18:50.000
exploded.
link |
01:18:50.640
Like Massdrop has gone ballistic with this stuff.
link |
01:18:53.400
There's probably like 500 keyboard projects
link |
01:18:55.560
on Massdrop alone.
link |
01:18:56.520
And there's some other guy I follow on Twitter.
link |
01:18:58.120
I used to write for the site The Tech Report way
link |
01:19:00.400
back in the day.
link |
01:19:01.360
And he's like, every week he's just
link |
01:19:02.440
posting what I call keyboard porn of just cool keyboards.
link |
01:19:05.000
Like, oh my god, those look really cool, right?
link |
01:19:07.160
It's like, how many keyboards does this guy have, right?
link |
01:19:09.760
It's kind of like me with yo yos.
link |
01:19:10.680
How many yo yos do you have?
link |
01:19:11.480
How many do you need?
link |
01:19:12.320
Well, technically one, but I like a lot.
link |
01:19:14.880
I don't know why.
link |
01:19:15.800
So same thing with keyboards.
link |
01:19:17.200
So yeah, they're awesome.
link |
01:19:18.880
Like, I highly recommend anybody that
link |
01:19:20.720
doesn't have a mechanical to research it, look into it,
link |
01:19:23.040
and see what you like.
link |
01:19:24.360
And it's ultimately a fetish item.
link |
01:19:26.260
But I think these sort of items, these religious artifacts
link |
01:19:30.120
that we have, are part of what make us human.
link |
01:19:32.160
Like, that part's important, right?
link |
01:19:33.800
It's kind of what makes life worth living.
link |
01:19:35.720
Yeah.
link |
01:19:37.000
It's not necessary in the strictest sense,
link |
01:19:38.840
but ain't nothing necessary if you think about it, right?
link |
01:19:42.280
Like, so yeah, why not?
link |
01:19:44.240
So sure.
link |
01:19:45.320
Jeff, thank you so much for talking today.
link |
01:19:47.440
Yeah, you're welcome.
link |
01:19:48.280
Thanks for having me.