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.240
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 project
link |
00:00:27.640
that seeks to improve the quality of our online community
link |
00:00:31.600
discussions.
link |
00:00:33.440
This conversation is part of the MIT course
link |
00:00:36.640
on artificial journal 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.680
or your podcast provider of choice,
link |
00:00:45.640
or simply connect with me on Twitter
link |
00:00:47.480
at Lex Friedman, spelled FRID.
link |
00:00:51.000
And now, here's my conversation with Jeff Atwood.
link |
00:00:56.200
Having cocreated and managed for a few years the world's
link |
00:00:59.560
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.360
It's puzzles, really.
link |
00:01:18.000
I think it's this idea of working on puzzles
link |
00:01:22.280
independently of other people and just solving a problem,
link |
00:01:25.800
sort of on your own, almost, although nobody really
link |
00:01:29.720
works alone in programming anymore.
link |
00:01:32.240
But I will say there's an aspect of hiding yourself away
link |
00:01:36.520
and just beating on a problem until you solve it.
link |
00:01:39.600
Like, brute force, basically, to me,
link |
00:01:41.040
is what a lot of programming is.
link |
00:01:42.200
It's like, the computer's so fast that you can do things
link |
00:01:45.040
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.240
that you get the answer.
link |
00:01:52.000
You're saying just the pure act of tinkering with the code
link |
00:01:55.520
is the thing that drives most probably the joy, the struggle
link |
00:01:59.600
balance within the joy of overcoming the brute force
link |
00:02:03.880
process of pain and suffering that eventually leads
link |
00:02:06.760
to something that actually works?
link |
00:02:09.040
Well, data's fun, too.
link |
00:02:10.080
Like, there's this thing called the shuffling problem.
link |
00:02:12.240
Like, the naive shuffle that most programmers write
link |
00:02:14.960
has a huge flaw.
link |
00:02:15.800
And there's a lot of articles online about this
link |
00:02:17.520
because it can be really bad if you're like a casino
link |
00:02:20.040
and you have an unsophisticated programmer writing
link |
00:02:22.240
your shuffle algorithm.
link |
00:02:23.480
There's surprising ways to get this wrong.
link |
00:02:25.120
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.480
if you just look at the data, if you just brute force it
link |
00:02:38.400
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.080
And the money haul problem is another example of that,
link |
00:02:48.200
where you have three doors and somebody gives you
link |
00:02:50.640
information about another door.
link |
00:02:52.720
So the correct answer is you should always switch.
link |
00:02:55.000
The money haul problem, which is not intuitive.
link |
00:02:56.720
It freaks people out all the time.
link |
00:02:58.080
But you can solve it with data.
link |
00:02:59.800
If you write a program that does the money haul game
link |
00:03:04.400
and then never switches, then always switches, just compare,
link |
00:03:06.880
you would immediately see that you don't have to be smart.
link |
00:03:09.680
You don't have to figure out the answer algorithmically.
link |
00:03:11.600
You can just brute force it out with data
link |
00:03:13.000
and say, well, I know the answer is this
link |
00:03:14.400
because I ran the program a billion times
link |
00:03:16.160
and these are the data buckets that I got from it.
link |
00:03:18.960
So empirically, you find it.
link |
00:03:20.280
But what's the joy of that?
link |
00:03:22.320
So for you, for you personally, outside of family,
link |
00:03:26.320
what motivates you in this process?
link |
00:03:29.440
Well, to be honest, I don't really
link |
00:03:31.000
write a lot of code anymore.
link |
00:03:32.520
What I do at discourse is like, managerry stuff, which
link |
00:03:35.240
I always kind of despise as a programmer.
link |
00:03:38.240
You think of managers as people who don't really
link |
00:03:40.000
do anything themselves.
link |
00:03:42.320
But the weird thing about code is you
link |
00:03:44.000
realize that language is code.
link |
00:03:45.880
The ability to direct other people
link |
00:03:48.320
lets you get more stuff done than you could by yourself
link |
00:03:51.480
anyway.
link |
00:03:52.280
You said language is code?
link |
00:03:53.680
Language is code.
link |
00:03:54.200
Meaning communication with other humans?
link |
00:03:56.040
Yes, it is.
link |
00:03:56.640
You can think of it as a systematic.
link |
00:03:58.480
So what does it like to be?
link |
00:04:01.320
What makes, before we get into programming,
link |
00:04:03.160
what makes a good manager?
link |
00:04:04.320
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.320
first of all, like sort of doing and being the things
link |
00:04:11.440
that you want to be.
link |
00:04:12.480
Now, this can be kind of exhausting.
link |
00:04:13.640
Particularly if you have kids because you realize
link |
00:04:15.120
that your kids are watching you all the time,
link |
00:04:17.600
like even in ways that you've stopped seeing yourself.
link |
00:04:20.600
Like the hardest person to see on the planet
link |
00:04:22.160
is really yourself.
link |
00:04:23.640
It's a lot of you see other people and make judgments
link |
00:04:25.960
about them, but yourself, like you're super biased.
link |
00:04:28.520
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.040
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:39.560
like, am I behaving in a way that
link |
00:04:41.480
represents 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.
link |
00:04:49.320
Like they make decisions that are like, wow, that's why.
link |
00:04:52.080
It's just it's a bad example for other people.
link |
00:04:55.000
So I think leading by example is one.
link |
00:04:57.440
The other one, I believe it is working really hard.
link |
00:04:59.680
I don't mean like working exhaustively,
link |
00:05:01.560
but like showing a real passion for the problem.
link |
00:05:06.760
Like not necessarily your solution to the problem,
link |
00:05:09.040
but the problem itself is just one that you really believe in.
link |
00:05:11.240
With discourse, for example, the problem
link |
00:05:13.120
that we're looking at, which is my current project,
link |
00:05:15.040
is how do you get people in groups
link |
00:05:17.920
to communicate in a way that doesn't like break down
link |
00:05:20.080
into the howling of wolves, right?
link |
00:05:21.800
Like how do you deal with trolling?
link |
00:05:23.600
Not like technical problems of how
link |
00:05:25.080
do I get people to post paragraphs?
link |
00:05:26.440
How do I get people to use bold?
link |
00:05:27.520
How do I get people to use complete sentences?
link |
00:05:29.520
Although those are problems as well.
link |
00:05:30.920
But how do I get people to get along with each other, right?
link |
00:05:33.560
And then solve whatever problem it is they set out to solve,
link |
00:05:35.920
or reach some consensus on discussion,
link |
00:05:38.280
or just not hurt each other, even, right?
link |
00:05:40.080
Like maybe it's a discussion that doesn't really matter,
link |
00:05:41.960
but are people yelling at each other, right?
link |
00:05:43.600
And why, right?
link |
00:05:44.280
Like that's not the purpose of this kind of communication.
link |
00:05:46.760
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.920
and making sure that you're actually doing those things.
link |
00:05:57.000
And there's a trick to that too, because the things you don't
link |
00:05:59.360
do 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.360
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.280
So for you personally, or maybe for other leaders
link |
00:06:12.920
you've seen or look up to, how do you
link |
00:06:14.760
know both that the things you're doing
link |
00:06:18.680
are the wrong things to be doing, the way you speak
link |
00:06:20.920
to others, the way you behave, and the things you're not doing?
link |
00:06:23.640
How do you get that signal?
link |
00:06:25.200
There's two aspects to that.
link |
00:06:26.440
One is like processing feedback that you're getting.
link |
00:06:28.760
So how do you get feedback?
link |
00:06:30.240
Well, right.
link |
00:06:30.640
So are you getting feedback, right?
link |
00:06:32.280
Like so one way we do it, for example,
link |
00:06:33.480
at discourse we have three cofounders,
link |
00:06:34.840
and we periodically talk about decisions before we make them.
link |
00:06:38.160
So it's not like one person can make a mistake, or like,
link |
00:06:41.080
wow, they're going to be misunderstanding things.
link |
00:06:43.240
So it's part of group consensus of leadership
link |
00:06:45.560
is like it's good to have, I think, systems
link |
00:06:47.800
where there's one leader, and that leader has the rule
link |
00:06:50.320
of absolute law, are just really dangerous in my experience.
link |
00:06:53.240
For communities, for example, if you have a community that's
link |
00:06:55.400
run by one person, that one person makes all decisions,
link |
00:06:57.560
that person's going to have a bad day.
link |
00:06:59.400
Something can happen to that person.
link |
00:07:02.360
There's a lot of variables.
link |
00:07:03.280
So first, when you think about leadership,
link |
00:07:05.080
have multiple people doing leadership,
link |
00:07:07.080
and have them talk amongst each other.
link |
00:07:08.920
So you're giving each other feedback about the decisions
link |
00:07:11.360
that they're making.
link |
00:07:12.200
And then when you do get feedback,
link |
00:07:13.720
I think there's that little voice in your head, right?
link |
00:07:16.320
Or your gut, or wherever you want to put it in your body.
link |
00:07:19.120
I think that voice is really important.
link |
00:07:22.600
I think most people who have any kind of moral compass
link |
00:07:25.200
or want to do, most people want to do the right thing.
link |
00:07:27.360
I do believe that.
link |
00:07:28.440
I mean, there might be a handful of sociopaths out there
link |
00:07:30.920
that don't, but most people, they
link |
00:07:32.760
want other people to think of them as a good person.
link |
00:07:34.960
Why wouldn't you, right?
link |
00:07:35.720
Do you want people to despise you?
link |
00:07:36.920
I mean, that's just weird, right?
link |
00:07:38.120
So you have that little voice that the angel and devil
link |
00:07:40.520
on your shoulder talking to you about what you're doing,
link |
00:07:43.040
how you're doing, how does it make you feel
link |
00:07:44.600
to make these decisions, right?
link |
00:07:46.320
And I think having some attunement to that voice
link |
00:07:49.280
is important.
link |
00:07:50.240
But you said that voice also for,
link |
00:07:52.400
I think it's a programmer situation, too,
link |
00:07:55.160
where sometimes the devil on the shoulder
link |
00:07:57.120
is a little too loud.
link |
00:07:59.800
So you're a little too self critical for a lot of developers,
link |
00:08:03.480
especially when you have introverted personality.
link |
00:08:05.600
How do you struggle with the self criticism
link |
00:08:07.600
or the criticism of others?
link |
00:08:10.680
One of the things of leadership is
link |
00:08:11.920
to do something that's potentially unpopular
link |
00:08:14.480
or what people doubt you and you still
link |
00:08:16.240
go through with the decision.
link |
00:08:18.320
So what's that balance like?
link |
00:08:20.720
I think you have to walk people through your decision
link |
00:08:22.760
making, right?
link |
00:08:23.640
This is where blogging is really important in communication.
link |
00:08:25.600
It's so important.
link |
00:08:26.080
Again, code language is just another kind of code.
link |
00:08:27.960
It's like, here is the program by which
link |
00:08:30.240
I arrived at the conclusion that I'm going to reach, right?
link |
00:08:32.960
It's one thing to say, this is a decision.
link |
00:08:34.720
It's final.
link |
00:08:35.680
Deal with it, right?
link |
00:08:36.760
That's not usually satisfying to people.
link |
00:08:38.760
But if you say, look, we've been thinking
link |
00:08:40.360
on this problem for a while.
link |
00:08:41.360
Here's some stuff that's happened.
link |
00:08:42.720
Here's what we think is right.
link |
00:08:44.080
Here's our goals.
link |
00:08:44.920
Here's what we want to achieve.
link |
00:08:46.120
And we've looked at these options.
link |
00:08:47.920
And we think this of the available options is the best option.
link |
00:08:50.560
People will be like, oh, OK.
link |
00:08:51.800
Maybe I don't totally agree with you,
link |
00:08:53.080
but I can kind of see where you're coming from.
link |
00:08:54.840
And I see it's not just arbitrary decision delivered
link |
00:08:57.320
from a cloud of flames in the sky.
link |
00:09:00.240
It's like a human trying to reach some kind of consensus
link |
00:09:03.400
about goals.
link |
00:09:04.320
And their goals might be different than yours.
link |
00:09:05.760
That's completely legit, right?
link |
00:09:06.840
But if you're making that clear, it's like, oh, well,
link |
00:09:09.200
the reason we don't agree is because we have totally
link |
00:09:11.080
different goals, right?
link |
00:09:11.840
How could we agree?
link |
00:09:12.840
It's not that you're a bad person.
link |
00:09:14.240
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.240
And the other one you said is passion or hard work, sorry.
link |
00:09:22.040
Well, those are tied together in my mind.
link |
00:09:23.920
Let's say hard work and passion.
link |
00:09:25.240
For me, I just really love the problem discourse
link |
00:09:27.520
is setting out to solve because, in a way,
link |
00:09:29.720
it's like there's a vision of the world where it all devolves
link |
00:09:33.000
into Facebook basically owning everything
link |
00:09:35.160
in every aspect of human communication, right?
link |
00:09:37.040
And this has always been kind of a scary world for me.
link |
00:09:39.920
First, because I think Facebook is really good at execution.
link |
00:09:42.400
I got to compliment them.
link |
00:09:43.280
They're very competent in terms of what they're doing.
link |
00:09:45.400
But Facebook has not much of a moral compass
link |
00:09:48.160
in terms of Facebook cares about Facebook, really.
link |
00:09:51.040
They don't really care about you and your problems.
link |
00:09:53.560
What they care about is how big they can make Facebook, right?
link |
00:09:56.520
Is that you talking about the company or just the mechanism
link |
00:09:58.760
of how Facebook works?
link |
00:09:59.960
Kind of both, really, right?
link |
00:10:01.320
And the idea with discourse, the reason I'm so passionate
link |
00:10:03.640
about it is because I believe every community should have
link |
00:10:05.600
the right to own themselves, right?
link |
00:10:07.120
Like they should have their own software that they can run
link |
00:10:09.680
that belongs to them.
link |
00:10:11.080
That's their space where they can set the rules.
link |
00:10:12.920
And if they don't like it, they can move to different hosting
link |
00:10:15.200
or whatever they need to happen can happen.
link |
00:10:18.120
But this idea of a company town where all human communication
link |
00:10:21.880
is implicitly owned by WhatsApp, Instagram, and Facebook.
link |
00:10:25.000
And it's really disturbing, too, because Facebook
link |
00:10:27.120
is really smart.
link |
00:10:27.840
Like I said, they're great at execution.
link |
00:10:29.360
Buying in WhatsApp and buying Instagram
link |
00:10:30.720
were incredibly smart decisions.
link |
00:10:33.600
And they also do this thing on, if you know,
link |
00:10:35.080
but they have this VPN software that they give away
link |
00:10:37.480
for free on smartphones.
link |
00:10:38.840
And it indirectly feeds all the data about the traffic
link |
00:10:42.000
back to Facebook.
link |
00:10:42.880
So they can see what's actually getting popular
link |
00:10:44.640
through the VPNs, right?
link |
00:10:46.000
They have low level access to the network data
link |
00:10:48.400
because users have let them have that.
link |
00:10:50.480
So let's take a small pause here.
link |
00:10:54.160
First of all, discourse, can you talk about,
link |
00:10:56.760
can you lay out the land of all the different ways
link |
00:11:00.920
you can have communities?
link |
00:11:01.880
So there's Stack Overflow that you've built.
link |
00:11:03.880
There's discourse.
link |
00:11:05.320
So Stack Overflow is kind of like a Wiki.
link |
00:11:07.320
Wikipedia you talk about.
link |
00:11:09.240
And it's a very specific scalpel, very focused.
link |
00:11:12.000
So what is the purpose of discourse?
link |
00:11:13.560
And maybe contrast that with Facebook.
link |
00:11:16.120
First of all, say what is discourse?
link |
00:11:18.120
Yeah.
link |
00:11:18.960
Start from the beginning.
link |
00:11:19.800
Well, let me start from the very beginning.
link |
00:11:20.620
So Stack Overflow is very structured,
link |
00:11:22.040
Wiki style Q&A for programmers, right?
link |
00:11:24.720
And that was the problem we first worked on.
link |
00:11:26.800
And when we started, we thought it was discussions
link |
00:11:29.080
because we looked at like programming forums and other things,
link |
00:11:32.080
but we quickly realized we were doing Q&A,
link |
00:11:33.520
which is a very narrow subset of human communication, right?
link |
00:11:37.040
So when you started Stack Overflow,
link |
00:11:38.920
you thought you didn't even know the Q&A.
link |
00:11:41.920
You didn't know it would be Q&A.
link |
00:11:43.400
Well, we didn't know.
link |
00:11:44.320
We had an idea of like, okay,
link |
00:11:45.280
these are things that we see working online.
link |
00:11:47.000
We had a goal, right?
link |
00:11:47.840
Our goal was there was this site,
link |
00:11:50.120
Experts Exchange with a very unfortunate name.
link |
00:11:52.680
Thank you for killing that site.
link |
00:11:53.960
Yeah, I know, right?
link |
00:11:54.840
Like a lot of people don't remember it anymore,
link |
00:11:56.520
which is great.
link |
00:11:57.360
Like that's the measure of success.
link |
00:11:58.200
If people don't remember the thing
link |
00:11:59.360
that you were trying to replace, then you've totally won.
link |
00:12:02.680
So it was a place to get answers to programming questions,
link |
00:12:05.680
but it wasn't clear if it was like focused Q&A,
link |
00:12:07.520
if it was a discussion,
link |
00:12:08.840
there were plenty of programming forums.
link |
00:12:10.400
So we weren't really sure.
link |
00:12:11.400
We were like, okay, we'll take aspects of dig and Reddit,
link |
00:12:13.520
like voting were very important,
link |
00:12:15.800
reordering answers based on votes,
link |
00:12:17.480
Wiki style stuff of like being able to edit posts,
link |
00:12:19.640
not just your posts, but other people's posts
link |
00:12:21.320
to make them better and keep them more up to date.
link |
00:12:23.920
Ownership of blogging of like, okay, this is me.
link |
00:12:26.240
I'm saying this in my voice, you know,
link |
00:12:28.120
this is the stuff that I know.
link |
00:12:29.840
And you know, you get your reputation accrues to you
link |
00:12:33.360
and it's pure recognition.
link |
00:12:34.880
So you asked earlier, like what motivates programmers?
link |
00:12:37.080
I think pure recognition motivates them a lot.
link |
00:12:40.080
That was one of the key insights of Stack Overflow
link |
00:12:41.880
was like recognition from your peers
link |
00:12:43.720
is why things get done.
link |
00:12:44.960
Initially money, not necessarily your boss,
link |
00:12:46.400
but like your peers saying, wow,
link |
00:12:47.880
this person really knows their stuff has a lot of value.
link |
00:12:50.400
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:03.760
And 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 for,
link |
00:13:10.840
let me talk about this tangential thing.
link |
00:13:12.560
It was more like, okay, is it answering the question?
link |
00:13:14.800
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
Cause there's usually more than one way to do it in program.
link |
00:13:21.040
There's like, say five to 10 ways.
link |
00:13:22.680
And one of the patterns we got into early on
link |
00:13:24.360
in 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, well,
link |
00:13:30.160
how can there be a programming question
link |
00:13:31.840
with 100, 200, 500 answers?
link |
00:13:34.760
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,
link |
00:13:43.840
such as what's your favorite programming food?
link |
00:13:46.760
What's the funniest programming cartoon you've seen?
link |
00:13:49.280
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
link |
00:13:56.000
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,
link |
00:14:12.720
did you know tree frogs only live three years?
link |
00:14:14.920
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.720
It was more intentional learning
link |
00:14:23.440
where you're like, okay, I have a problem
link |
00:14:24.600
and I wanna learn about stuff around this problem having,
link |
00:14:26.880
right?
link |
00:14:27.720
And it could be theory, it could be compiler theory,
link |
00:14:29.160
it could be other stuff,
link |
00:14:29.960
but I'm having a compiler problem,
link |
00:14:31.800
hence I need to know the compiler theory,
link |
00:14:34.280
that aspect of it that gets me to my answer, right?
link |
00:14:38.120
So kind of a directed learning.
link |
00:14:39.360
So we had to backfill all these rules
link |
00:14:40.920
as we sort of figured out what the heck it was we were doing.
link |
00:14:43.640
And the system came very strict over time
link |
00:14:45.360
and a lot of people still complain about that.
link |
00:14:46.840
And I wrote my latest blog entry,
link |
00:14:49.080
what does Stack Overflow want to be?
link |
00:14:51.000
What does it want to be when it grows up?
link |
00:14:52.400
Celebrating the 10 year anniversary, yeah.
link |
00:14:54.240
Yeah, so 10 years and the system
link |
00:14:56.320
has trended towards strictness.
link |
00:14:57.760
There's a variety of reasons for this.
link |
00:14:58.960
One is people don't like to see other people
link |
00:15:01.400
get reputation for stuff as they view as frivolous,
link |
00:15:04.040
which I can actually understand
link |
00:15:05.160
because if you saw a programmer got like 500 upvotes
link |
00:15:07.920
for funniest programming cartoon
link |
00:15:10.440
or funniest comment they had seen in code.
link |
00:15:11.840
It's like, well, why do they have that reputation?
link |
00:15:13.880
Is it because they wrote the joke?
link |
00:15:15.120
Probably not.
link |
00:15:15.960
I mean, if they did, maybe, or the cartoon, right?
link |
00:15:18.320
They're getting a bunch of reputation
link |
00:15:19.520
based on someone else's work.
link |
00:15:20.800
It's not even like programming.
link |
00:15:22.720
It's just a joke, right?
link |
00:15:23.640
It's a related program.
link |
00:15:24.840
So you begin to resent that.
link |
00:15:26.480
You're like, well, that's not fair.
link |
00:15:27.560
And it isn't.
link |
00:15:28.400
At some level, they're correct.
link |
00:15:29.240
I empathize because it's not correct
link |
00:15:31.280
to get reputation for that.
link |
00:15:32.120
Versus here's a really gnarly, regular expression problem.
link |
00:15:36.080
And here's a really clever, insightful, detailed answer
link |
00:15:40.520
laying out, oh, here's why you're seeing the behavior
link |
00:15:42.240
that you're seeing.
link |
00:15:43.080
And here, let me teach you some things
link |
00:15:43.920
about how to avoid that in the future.
link |
00:15:44.760
That's great, that's gold, right?
link |
00:15:46.560
You want people to get reputation for that,
link |
00:15:48.000
not so much for, wow, look at this funny thing I saw, right?
link |
00:15:51.040
Great, so there's this very specific Q&A format,
link |
00:15:54.400
and then take me through the journey
link |
00:15:56.680
towards discourse in Facebook and Twitter.
link |
00:15:58.680
So you start at the beginning,
link |
00:16:00.520
that Stack Overflow evolved to have a purpose.
link |
00:16:03.040
So what is discourse, this passion you have
link |
00:16:06.800
for creating community for discussion?
link |
00:16:09.840
What is that, when was that born?
link |
00:16:12.200
Well, part of it is based on the realization
link |
00:16:13.680
that Stack Overflow is only good
link |
00:16:15.040
for very specific subjects where there's sort of,
link |
00:16:17.680
it's based on data, facts, and science,
link |
00:16:19.760
where answers can be kind of verified to be true.
link |
00:16:22.560
Another form of that is there's the book of knowledge,
link |
00:16:24.920
like the tome of knowledge that defines like whatever it is,
link |
00:16:28.760
you can refer to that book and it'll give you the answer.
link |
00:16:30.920
There has to be, it only works on subjects
link |
00:16:33.160
where there's like semi clear answers to things
link |
00:16:35.400
that can be verified in some form.
link |
00:16:37.880
Now again, there's always more than one way to do it.
link |
00:16:39.840
There's complete flexibility and system around that.
link |
00:16:42.000
But where it falls down is stuff like poker and Lego.
link |
00:16:45.360
Like we had, if you go to stackexchange.com,
link |
00:16:48.800
we have an engine that tries to launch
link |
00:16:50.480
different Q&A topics, right?
link |
00:16:52.360
And people can propose Q&A topics, sample questions,
link |
00:16:57.040
and if it gets enough support within the network,
link |
00:16:59.120
we launch that Q&A site.
link |
00:17:00.160
So some of the ones we launched were poker and Lego,
link |
00:17:02.360
and they did horribly, right?
link |
00:17:03.440
Because, I mean, they might still be there
link |
00:17:05.720
lingering on in some form, but it was an experiment.
link |
00:17:07.880
This is like a test, right?
link |
00:17:09.080
And some subjects work super well in the stack engine,
link |
00:17:11.720
and some don't.
link |
00:17:12.840
But the reason Lego and poker don't work
link |
00:17:14.680
is because they're so social, really.
link |
00:17:16.080
It's not about what's the rule here in poker.
link |
00:17:19.120
It's like, well, what kind of cigars
link |
00:17:21.480
do we like to smoke while playing poker?
link |
00:17:23.520
Or what's a cool set of cards to use when I'm playing poker?
link |
00:17:26.960
Or what's some strategies?
link |
00:17:28.760
Like say I have this hand come up,
link |
00:17:30.120
what's some strategies I could use?
link |
00:17:31.280
It's more of a discussion around what's happening.
link |
00:17:33.120
Like with Lego, same thing, like here's
link |
00:17:34.960
this cool Lego set I found.
link |
00:17:36.040
Look how awesome this is.
link |
00:17:36.920
And I'm like, yeah, that's freaking awesome, right?
link |
00:17:38.600
It's not a question, right?
link |
00:17:39.920
There's all these social components to the discussions
link |
00:17:41.840
that don't fit at all.
link |
00:17:43.080
Like we literally have to disallow those in Stack Overflow
link |
00:17:45.400
because it's not about being social.
link |
00:17:46.560
It's about problems that you're facing in your work
link |
00:17:49.440
that you need concrete answers for, right?
link |
00:17:51.400
Like you have a real demonstrated problem
link |
00:17:52.840
that's sort of blocking you and something.
link |
00:17:54.000
Nobody's blocked by what should I do
link |
00:17:56.520
when I have a straight flush, right?
link |
00:17:58.040
Like it's not a blocking problem in the world.
link |
00:18:00.520
It's just an opportunity to hang out and discuss.
link |
00:18:02.400
So discourse was a way to address that and say, look,
link |
00:18:05.920
you know, discussion form software was very, very bad.
link |
00:18:10.800
And when I came out of Stack Overflow in late 20,
link |
00:18:13.560
early 20, early 2013, early 2012,
link |
00:18:18.480
it was still very, very bad.
link |
00:18:19.880
I expected it improved in the four years
link |
00:18:22.120
since I last looked, but it had not improved at all.
link |
00:18:24.600
And I was like, well, that's kind of terrible
link |
00:18:26.000
because I love these communities of people
link |
00:18:29.040
talking about things that they love, you know,
link |
00:18:30.920
that there's just communities of interest, right?
link |
00:18:32.920
And there's no good software for them.
link |
00:18:34.600
Like startups would come to me and say, hey, Jeff,
link |
00:18:37.440
I wanna, you know, I have this startup.
link |
00:18:39.760
Here's my idea.
link |
00:18:41.080
And the first thing I would say to them is like, well,
link |
00:18:42.960
first, why are you asking me?
link |
00:18:44.000
Like I don't really know your field, right?
link |
00:18:46.440
Linus, sincerely, like, why aren't you asking
link |
00:18:48.320
like the community, like the people
link |
00:18:49.760
that are interested in this problem,
link |
00:18:51.280
the people that are using your product,
link |
00:18:52.480
why aren't you talking to them?
link |
00:18:53.840
And then they'd say, oh, great idea.
link |
00:18:55.200
Like how do I do that?
link |
00:18:56.120
And then that's when I started playing sad trombone
link |
00:18:58.120
because I realized all the software involving
link |
00:19:00.080
talking to your users, customers, audience, patrons,
link |
00:19:03.320
whatever it is, it was all really bad.
link |
00:19:05.200
You know, it was like stuff that I would be embarrassed
link |
00:19:06.680
to recommend to other people.
link |
00:19:08.240
And yet that's where I felt they could get
link |
00:19:09.960
the biggest and strongest, most effective input
link |
00:19:12.800
for what they should be doing with their product, right?
link |
00:19:15.600
It's from their users, from their community, right?
link |
00:19:17.520
That's what we did on Stack Overflow.
link |
00:19:18.880
So what we're talking about with forums,
link |
00:19:21.360
the, what is it, the dark matter of the internet,
link |
00:19:25.480
it's still, I don't know if it's still,
link |
00:19:26.840
but for the longest time, it has some of the most
link |
00:19:30.920
passionate and fascinating discussions.
link |
00:19:32.800
And what's the usual structure?
link |
00:19:34.640
There's usually what, it's linear.
link |
00:19:37.000
So it's sequential, so you're posting one after the other
link |
00:19:39.640
and there's Paging Nation, so it's every,
link |
00:19:42.800
there's a 10 posts and you go to the next page
link |
00:19:45.040
and that format still is used by, like I'm,
link |
00:19:49.080
we're doing a lot of research with Tesla of vehicles
link |
00:19:51.480
and there's a Tesla Motors Club forum,
link |
00:19:53.600
which is extremely,
link |
00:19:54.440
We really wanted to run that actually.
link |
00:19:56.280
They pinged us about it, I don't think we got it,
link |
00:19:57.720
but I really would have liked to gotten that one.
link |
00:19:59.240
But they've started before even 2012, I believe.
link |
00:20:02.640
I mean, they've been running for a long time.
link |
00:20:04.200
It's still an extremely rich source of information.
link |
00:20:06.840
So what's broken about that system
link |
00:20:09.760
and how are you trying to fix it?
link |
00:20:12.160
I think there's a lot of power in connecting people
link |
00:20:15.920
that love the same stuff around that specific topic,
link |
00:20:19.240
meaning Facebook's idea of connection is just any human
link |
00:20:22.800
that's related to another human, right?
link |
00:20:24.560
Like through friendship or any other reason.
link |
00:20:27.520
Facebook's idea of the world is sort of the status update,
link |
00:20:30.280
right?
link |
00:20:31.120
Like a friend of yours did something at a restaurant, right?
link |
00:20:35.040
Whereas discussion forums were traditionally
link |
00:20:37.280
around the interest graph.
link |
00:20:38.320
Like I love electric cars, specifically I love Tesla, right?
link |
00:20:42.000
Like I love the way they approach the problem.
link |
00:20:44.320
I love the style of the founder.
link |
00:20:45.920
I just love the design ethic.
link |
00:20:48.200
There's a lot to like about Tesla.
link |
00:20:49.280
I don't know if you saw the oatmeal,
link |
00:20:50.280
he did a whole love comic to Tesla.
link |
00:20:53.120
And it was actually kind of cool
link |
00:20:53.960
because I learned some stuff.
link |
00:20:54.800
He was talking about how great Tesla cars were specifically,
link |
00:20:57.000
like how they were built differently.
link |
00:20:58.360
And he went into a lot of great detail
link |
00:20:59.880
that was really interesting.
link |
00:21:00.720
And to me, that oatmeal post, if you read it,
link |
00:21:02.640
is the genesis of pretty much all interest communities.
link |
00:21:05.760
I just really love this stuff.
link |
00:21:07.000
So for me, for example, there's yoyos, right?
link |
00:21:08.400
Like I'm into the yoyo communities
link |
00:21:09.720
and these interest communities are just really fascinating
link |
00:21:12.800
to me and I feel more connected to the yoyo communities
link |
00:21:15.240
than I do to friends that I don't see that often, right?
link |
00:21:18.640
Like to me, the powerful thing is the interest graph
link |
00:21:21.760
and Facebook kind of dabbles in the interest graph.
link |
00:21:25.040
I mean, they have groups, you can sign up for groups
link |
00:21:26.720
and stuff, but it's really about the relationship graph.
link |
00:21:29.480
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,
link |
00:21:49.800
a lot of stuff in the world gets done.
link |
00:21:51.240
Like I once had someone describe me as,
link |
00:21:52.960
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 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 where everything belongs
link |
00:22:19.680
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 & Noble
link |
00:22:31.520
every Thursday and Barnes & Noble says,
link |
00:22:33.000
get out of here, you guys don't buy enough books,
link |
00:22:34.600
well, you're kind of hoes, right?
link |
00:22:36.640
Barnes & 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.520
and just really generate a lot better information
link |
00:22:47.800
than you could like hanging out at Barnes & Noble
link |
00:22:49.520
every Thursday at 3 p.m., right?
link |
00:22:51.880
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.880
can go deep on whatever it is that you're into.
link |
00:23:02.840
And this works for startups, right?
link |
00:23:04.440
Startups are a group of people
link |
00:23:05.920
who go super deep on a specific problem, right?
link |
00:23:08.400
And they want to talk to their communities
link |
00:23:09.600
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 MetaStack Overflow,
link |
00:23:15.520
which is our internal, well,
link |
00:23:17.920
public community feedback site.
link |
00:23:20.200
And just experiencing what the users were experiencing, right?
link |
00:23:24.160
Because they're the ones doing all the work in the system.
link |
00:23:26.040
And they had a lot of interesting feedback.
link |
00:23:27.600
And there's that 90, 10 rule of like 90% of the feedback
link |
00:23:30.200
you get is not really actionable for a variety of reasons.
link |
00:23:32.360
It might be bad feedback.
link |
00:23:33.560
It might be crazy feedback.
link |
00:23:34.600
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.720
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 drive from MetaStack Overflow feedback
link |
00:23:56.720
and MetaDiscourse, right, same exact principle of discourse.
link |
00:24:00.280
You know, we're getting ideas from the community.
link |
00:24:02.280
I was like, oh my God, I never thought of that.
link |
00:24:03.480
But that's fantastic, right?
link |
00:24:04.680
Like I love that relationship with the community.
link |
00:24:06.920
From having built these communities, what have you,
link |
00:24:10.200
what have you learned about?
link |
00:24:11.120
What's the process of getting a critical mass
link |
00:24:12.880
of members in a community?
link |
00:24:14.160
Is it luck, skill, timing, persistence?
link |
00:24:17.040
What is, is it the tools, like discourse
link |
00:24:20.400
that empower that community?
link |
00:24:21.880
What's the key aspect of starting for one guy or gal
link |
00:24:25.880
and then building it to two, one and 10
link |
00:24:27.760
and a hundred and a thousand and so on?
link |
00:24:30.000
I think we're starting with an end of one.
link |
00:24:32.320
I mean, I think it's persistence
link |
00:24:33.920
and also you have to be interesting.
link |
00:24:37.040
Like somebody I really admire
link |
00:24:38.520
once said something that I always liked about blogging.
link |
00:24:40.200
He's like, here's how you blog.
link |
00:24:41.880
You have to have something interesting to say
link |
00:24:44.440
and have an interesting way of saying it, right?
link |
00:24:46.960
And then do that for like 10 years.
link |
00:24:49.920
So that's the genesis is like you have to have
link |
00:24:52.360
sort of something interesting to say
link |
00:24:53.560
that's not exactly what everybody else is saying.
link |
00:24:55.280
And an interesting way of saying it,
link |
00:24:56.440
which is another way of saying kind of entertaining
link |
00:24:57.920
way of saying it.
link |
00:24:59.280
And then as far as growing it, it's like ritual, you know,
link |
00:25:02.200
like you have to like say you're starting a blog,
link |
00:25:04.280
you have to say, look, I'm gonna blog every week,
link |
00:25:06.720
three times a week and you have to stick to that schedule,
link |
00:25:09.320
right?
link |
00:25:10.160
Because until you do that for like several years,
link |
00:25:12.880
you're never gonna get anywhere.
link |
00:25:14.400
Like it just takes years to get to where you need to get to.
link |
00:25:16.720
And part of that is having the discipline
link |
00:25:18.720
to stick with the schedule.
link |
00:25:19.760
And it helps again, if it's something you're passionate about,
link |
00:25:21.720
this won't feel like work.
link |
00:25:22.760
Like, I love this.
link |
00:25:23.600
I can talk about this all day, every day, right?
link |
00:25:26.840
You just have to do it in a way that's interesting
link |
00:25:28.000
to other people.
link |
00:25:28.840
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, take this ball of energy
link |
00:25:56.240
from my blog and do something.
link |
00:25:57.360
And all the people who read my blog saw that,
link |
00:25:58.800
it's like, oh, cool, you're involving us.
link |
00:26:00.560
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.520
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 with a good name for stuff, right?
link |
00:26:14.480
But you can go back to my blog.
link |
00:26:15.880
There's the poll where we voted
link |
00:26:17.600
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.560
So we started from like, if you look at the Genesis,
link |
00:26:26.480
okay, I was just a programmer who said,
link |
00:26:28.120
hey, I love programming, but I have no outlet
link |
00:26:30.400
to talk about it.
link |
00:26:31.240
So I'm just gonna blog about it
link |
00:26:32.080
because I don't have enough people to work
link |
00:26:33.320
to talk to about it.
link |
00:26:34.320
Cause at the time I worked place where,
link |
00:26:36.480
you know, programming wasn't the core output of the company.
link |
00:26:38.880
It was a pharmaceutical company.
link |
00:26:40.800
And I just love this stuff, you know, to an absurd degree.
link |
00:26:43.520
So I was like, I'll just blog about it
link |
00:26:44.920
and then I'll find an audience
link |
00:26:45.920
and eventually found an audience,
link |
00:26:47.680
eventually found Joel and eventually built Stack Overflow
link |
00:26:50.440
from that one core of activity, right?
link |
00:26:52.840
But it was that repetition of feeding back in,
link |
00:26:55.400
feedback from my blog comments, feedback from Joel,
link |
00:26:58.040
feedback from the early Stack Overflow community.
link |
00:27:01.440
When people see that you're doing that,
link |
00:27:02.840
they will follow along with you, right?
link |
00:27:04.120
They say, cool, you're here in good faith.
link |
00:27:05.480
You're actually, you know, not listening to everything
link |
00:27:07.240
because that's impossible, that's impossible,
link |
00:27:09.280
but you're actually, you know, waiting our feedback
link |
00:27:13.000
in what you're doing because, and why wouldn't I?
link |
00:27:14.720
Because who does all the work on Stack Overflow?
link |
00:27:16.680
Me, Joel?
link |
00:27:17.920
No, it's the other programmers
link |
00:27:19.600
that are doing all the work.
link |
00:27:20.480
So you gotta have some respect for that.
link |
00:27:22.480
And then, you know, discipline around, look,
link |
00:27:25.080
you know, we're trying to do a very specific thing
link |
00:27:26.400
here on Stack Overflow.
link |
00:27:27.240
We're not trying to solve all the world's problems.
link |
00:27:29.080
We're trying to solve this very specific Q&A problem
link |
00:27:30.920
in a very specific way.
link |
00:27:32.320
Not because we're jerks about it,
link |
00:27:33.560
but because these strict set of rules
link |
00:27:35.960
help us get really good results, right?
link |
00:27:39.360
And programmers, that's an easy sell for the most part
link |
00:27:41.440
because programmers are used to dealing
link |
00:27:42.520
with ridiculous systems of rules like constantly.
link |
00:27:45.080
That's basically their job.
link |
00:27:46.760
So they're very, oh yeah, super strict system of rules
link |
00:27:49.480
that lets me get what I want.
link |
00:27:50.400
That's programming, right?
link |
00:27:51.560
That's what Stack Overflow is, so.
link |
00:27:53.640
So you're making it sound easy,
link |
00:27:54.880
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.520
It was.
link |
00:28:04.360
One of the smart things I did,
link |
00:28:05.200
it's from a book by Steve McConnell, Code Complete,
link |
00:28:06.680
which is one of my favorite programming books,
link |
00:28:08.200
still probably my number one programming book
link |
00:28:09.760
for anyone to read.
link |
00:28:12.080
One of the smart things I did back then,
link |
00:28:13.800
I don't always do smart things when I start stuff.
link |
00:28:16.040
I contacted Steve and said, hey, I really like this.
link |
00:28:18.360
It was a sidebar illustration,
link |
00:28:19.600
indicating danger in code, right?
link |
00:28:21.800
Coding Horror was like, watch out.
link |
00:28:25.280
And I love that illustration because it spoke to me.
link |
00:28:27.400
Because I saw that illustration go, oh my God,
link |
00:28:28.840
that's me, like I'm always my own worst enemy.
link |
00:28:31.040
Like that's the key insight in programming is,
link |
00:28:33.320
every time you write something,
link |
00:28:34.280
think how am I gonna screw myself?
link |
00:28:36.560
Because you will, constantly, right?
link |
00:28:39.240
So that icon was like, oh yeah,
link |
00:28:41.240
I need to constantly hold that mirror up and look
link |
00:28:43.160
and say, look, you're very fallible.
link |
00:28:45.400
You're gonna screw this up.
link |
00:28:46.360
Like how can you build this in such a way
link |
00:28:48.000
that you're not gonna screw it up later?
link |
00:28:50.320
Like how can you get that discipline around
link |
00:28:52.960
making sure at every step,
link |
00:28:54.280
I'm thinking through all the things that I could do wrong
link |
00:28:56.160
or that other people could do wrong.
link |
00:28:57.200
Cause that is actually how you get to be a better programmer
link |
00:28:59.520
a lot of times, right?
link |
00:29:00.560
So that sidebar illustration, I loved it so much.
link |
00:29:03.360
And I wrote Steve before I started my blog,
link |
00:29:05.440
and said, hey, can I have permission to use this?
link |
00:29:06.760
Cause I just really like this illustration.
link |
00:29:08.400
And Steve was kind enough to let me permission to do that
link |
00:29:11.240
and just continues to give me permission.
link |
00:29:12.640
So yeah.
link |
00:29:13.480
Really, that's awesome.
link |
00:29:15.040
But in 2004, you started this blog.
link |
00:29:18.840
You know, you look at Stephen King's book on writing
link |
00:29:22.560
or Stephen Pressfield's War of Art book.
link |
00:29:26.400
I mean, it seems like writers suffer.
link |
00:29:30.000
I mean, it's a hard process of writing, right?
link |
00:29:32.480
There's a lot of, there's gonna be suffering.
link |
00:29:34.160
I mean, I won't kid you like,
link |
00:29:35.160
well, the work is suffering, right?
link |
00:29:36.360
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.240
or you know, people didn't like it
link |
00:29:41.440
or people said disparaging things about it.
link |
00:29:44.040
You have to like have the attitude is like, you know,
link |
00:29:47.400
no matter what happens, I want to do this for me, right?
link |
00:29:49.440
It's not about you, it's about me.
link |
00:29:51.200
I mean, in the end, it is about everyone
link |
00:29:53.280
because this is how good work gets out into the world.
link |
00:29:55.800
But you have to be pretty strict about saying like,
link |
00:29:59.760
you know, I'm selfish in the sense
link |
00:30:01.600
that I have to do this for me.
link |
00:30:03.240
You know, you mentioned Stephen King,
link |
00:30:04.320
like his book on writing,
link |
00:30:05.440
but like one of the things I do, for example,
link |
00:30:06.800
when writing is like, I read it out loud,
link |
00:30:08.640
one of the best pieces of advice for writing anything
link |
00:30:10.600
is read it out loud, like multiple times.
link |
00:30:13.840
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 with,
link |
00:30:19.520
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 writing advice
link |
00:30:27.120
I can give anyone.
link |
00:30:27.960
It's just, 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
So there's usually a pretty good idea 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 that
link |
00:30:44.480
there's so many interesting things in the world.
link |
00:30:46.160
Like, I mean, my God, the world is amazing, right?
link |
00:30:48.760
Like you could never write about everything that's going on
link |
00:30:51.920
because it's so incredible.
link |
00:30:52.760
But if you can't come up with like,
link |
00:30:54.160
let's say one interesting thing per day to talk about,
link |
00:30:57.080
then you're not trying hard enough
link |
00:30:58.320
because the world is full of just super interesting stuff.
link |
00:31:00.600
And one great way to like mine stuff
link |
00:31:03.080
is go back to old books
link |
00:31:04.240
because they bring up old stuff that's still super relevant.
link |
00:31:07.160
And I did that a lot
link |
00:31:08.120
because I was like reading classic programming books
link |
00:31:09.840
and a lot of the early blog posts were like,
link |
00:31:11.240
oh, I was reading this programming book
link |
00:31:12.240
and they brought this really cool concept
link |
00:31:13.720
and I want to talk about it some more.
link |
00:31:14.960
And you get the, I mean, you're not claiming credit
link |
00:31:16.960
for the idea, but it gives you something interesting
link |
00:31:18.080
to talk about that's kind of evergreen, right?
link |
00:31:19.840
Like you don't have to go, what should I talk about?
link |
00:31:21.920
So we'll just go dig up some old classic programming books
link |
00:31:24.560
and find something that, oh, wow, that's interesting.
link |
00:31:26.960
Or how does that apply today?
link |
00:31:28.120
Or what about X and Y or compare these two concepts?
link |
00:31:30.920
So pull a couple of sentences from that book
link |
00:31:32.720
and then sort of play off of it, almost agree or disagree.
link |
00:31:35.960
That 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.480
You chose not to.
link |
00:31:46.000
What were all the elements you were thinking about?
link |
00:31:49.000
Because I'd like to take you back.
link |
00:31:50.560
It seems like there's a lot of nonlinear decisions
link |
00:31:52.560
you made through life.
link |
00:31:54.600
So what was that decision like?
link |
00:31:56.080
Right, so one of the things I love
link |
00:31:57.880
is the Choose Your Own Adventure books,
link |
00:31:59.400
which I loved as a kid.
link |
00:32:00.320
And I feel like they're early programmer books
link |
00:32:01.760
because they're all about if then statements, right?
link |
00:32:04.080
If this then this, and they're also very, very unforgiving.
link |
00:32:07.280
Like there's all these sites that map
link |
00:32:08.960
the classic Choose Your Own Adventure books
link |
00:32:11.080
and how many outcomes are bad, a lot of bad outcomes.
link |
00:32:13.960
So part of the game is like, oh, I got an outcome.
link |
00:32:16.120
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.640
It's a sequence of decisions.
link |
00:32:21.920
And this is true of life, right?
link |
00:32:23.200
Like every decision is a sequence, right?
link |
00:32:25.600
Individually, any individual decision
link |
00:32:28.360
is not actually right or wrong,
link |
00:32:29.280
but they lead you down a path, right?
link |
00:32:31.080
So I do think there's some truth there.
link |
00:32:32.800
So this particular decision,
link |
00:32:34.800
the blogging I'm fairly popular.
link |
00:32:36.360
There's a lot of RSS readers that I discovered.
link |
00:32:39.120
And this guy contacted me out of the blue
link |
00:32:41.040
from this like bug tracking company.
link |
00:32:42.480
He's like, oh, I really want to buy your blog for like,
link |
00:32:44.480
I think it was around, it was $100,000,
link |
00:32:47.040
might've been like 80,000, but it was a lot, right?
link |
00:32:49.280
Like, and that's, you know, at the time,
link |
00:32:51.160
like I would have a year's worth of salary all at once.
link |
00:32:54.480
So I really think about like, well, you know,
link |
00:32:57.760
and I remember talking to people at the time,
link |
00:32:58.920
I was like, wow, that's a lot of money.
link |
00:32:59.880
But then the other thing, like I really like my blog, right?
link |
00:33:02.040
Like, do I want to sell my blog?
link |
00:33:03.760
Because it wouldn't really belong to me anymore
link |
00:33:05.320
at that point.
link |
00:33:06.160
And one of the guidelines that I like to,
link |
00:33:09.400
I don't like to give advice to people a lot,
link |
00:33:11.080
but one of the pieces of advice I do give,
link |
00:33:12.560
because I do think it's really true
link |
00:33:13.760
and it's generally helpful,
link |
00:33:15.600
is whenever you're looking at a set of decisions,
link |
00:33:17.640
like, oh gosh, should I do A, B or C?
link |
00:33:19.920
You got to pick the thing that's a little scarier
link |
00:33:22.560
in that list, because not, you know,
link |
00:33:24.560
not like jump off a cliff scary,
link |
00:33:25.720
but the thing that makes you nervous.
link |
00:33:27.040
Because if you pick the safe choice,
link |
00:33:29.000
it's usually you're not really pushing.
link |
00:33:30.360
You're not pushing yourself.
link |
00:33:31.400
You're not choosing the thing that's going to help you grow.
link |
00:33:33.960
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, right?
link |
00:33:38.360
Because then I own it.
link |
00:33:39.520
I mean, it belongs to me.
link |
00:33:40.520
It's my thing.
link |
00:33:41.760
And I can just take it
link |
00:33:43.160
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.840
had I said yes and sold the blog.
link |
00:33:49.080
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.320
like what scares me a little bit more?
link |
00:33:57.960
Do the thing that scares you.
link |
00:33:59.240
Yeah.
link |
00:34:00.080
Which startups?
link |
00:34:01.760
I think there's a specific,
link |
00:34:03.280
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've started Discourse.
link |
00:34:12.080
So what's the, you know, 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.720
Do you start programming?
link |
00:34:21.800
Do you start, like where is the birth
link |
00:34:24.520
and the catalyst that actually exists?
link |
00:34:25.840
Well, I can talk about it in the context
link |
00:34:27.000
of both Stack Overflow and Discourse.
link |
00:34:28.080
So I think the key thing initially is there is a problem.
link |
00:34:31.040
Something, there's some state of the world
link |
00:34:32.400
that's unsatisfactory to the point
link |
00:34:33.920
that like you're upset about it, right?
link |
00:34:35.960
Like in that case, it was experts exchange.
link |
00:34:37.800
I mean, Joel's original idea,
link |
00:34:38.920
cause I approached Joel's like, look, Joel,
link |
00:34:40.560
I have all this energy behind my blog.
link |
00:34:41.720
I want to do something.
link |
00:34:42.560
I want to build something, but I don't know what it is.
link |
00:34:43.880
Cause I'm not, I'm honestly not a good idea person.
link |
00:34:45.680
I'm really not.
link |
00:34:46.520
I'm like the execution guy.
link |
00:34:47.720
I'm really good at execution,
link |
00:34:48.640
but I'm not good at like blue skying ideas.
link |
00:34:51.000
Not my forte.
link |
00:34:52.040
Which is another reason why I like the community feedback.
link |
00:34:54.040
Cause they blue sky all day long for you, right?
link |
00:34:56.320
So when I can just go in and cherry pick a blue sky idea
link |
00:34:58.400
from community, 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:08.880
It's, it's trying to trick you.
link |
00:35:09.920
It feels like you use car sales, but 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 a creative commons.
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 that we will,
link |
00:35:22.680
an injustice that we will write
link |
00:35:24.280
through the process of building this thing.
link |
00:35:26.120
For discourse, it was like, look,
link |
00:35:27.520
there's no good software for communities
link |
00:35:30.200
to just hang out and like do stuff, right?
link |
00:35:32.960
Like whether it's problem solving, startup, whatever.
link |
00:35:35.480
Forms are such a great building block of online community
link |
00:35:37.640
and they're hideous.
link |
00:35:38.600
They were so bad, right?
link |
00:35:39.760
It was embarrassing.
link |
00:35:40.760
Like I literally was embarrassed to be associated
link |
00:35:43.000
with this software, right?
link |
00:35:43.960
I was like, we have to have software that you can be proud of.
link |
00:35:45.720
It's like, this is competitive with Reddit.
link |
00:35:47.120
This is competitive with Twitter.
link |
00:35:48.360
This is competitive with Facebook, right?
link |
00:35:50.360
I would be proud to have the software on my site.
link |
00:35:53.520
So that was the genesis of discourse,
link |
00:35:54.920
was feeling very strongly about their needs to be
link |
00:35:59.920
a good solution for communities.
link |
00:36:01.760
So that's step one, genesis funny idea
link |
00:36:03.280
you feel super strongly about, right?
link |
00:36:04.600
And then people galvanize around the idea.
link |
00:36:06.680
Like Joel was already super excited about the idea.
link |
00:36:08.520
I was excited about the idea.
link |
00:36:10.000
So with the forum software, I was posting on Twitter,
link |
00:36:13.280
I had researched, as part of my research,
link |
00:36:15.040
I start researching the problem, right?
link |
00:36:16.640
And I found a game called forum wars,
link |
00:36:19.520
which was a parody of forum.
link |
00:36:21.480
It's still very, very funny of like forum behavior
link |
00:36:23.640
a circle, like I would say 2003.
link |
00:36:26.120
It's age some, right?
link |
00:36:27.720
Like the behavior is a little different
link |
00:36:29.200
in the air of Twitter, but it was awesome.
link |
00:36:30.880
It was very funny and it was like a game,
link |
00:36:32.760
it was like an RPG and it had a forum attached to it.
link |
00:36:34.840
So it was like a game about forums with a forum attached.
link |
00:36:37.520
It 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,
link |
00:36:43.040
contacted me, this guy Robin Ward from Toronto.
link |
00:36:45.680
It's like, hey, you know, I saw you've been talking
link |
00:36:46.880
about forums and like, I really love that problem space.
link |
00:36:49.320
It's like, I'd still love to build really good forum software
link |
00:36:51.600
because I don't think anything out there is any good.
link |
00:36:53.360
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 like, I couldn't have wished for a better person
link |
00:36:58.560
to walk through the door and say,
link |
00:37:00.080
I'm excited about this too.
link |
00:37:01.480
Same thing with Joel, right?
link |
00:37:02.360
I mean, Joel is a legend in the industry, right?
link |
00:37:03.960
So when he walked through and said,
link |
00:37:04.800
I'm excited about this problem,
link |
00:37:05.640
I was like, me too, man, we can do this, right?
link |
00:37:08.160
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.040
and another person, a co founder, right?
link |
00:37:14.600
Cause again, you get that dual leadership, right?
link |
00:37:16.200
Of like, am I making a bad decision?
link |
00:37:19.080
Sometimes it's nice to have checks of like,
link |
00:37:21.480
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.
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.920
Cause a lot of people look at it with successes.
link |
00:37:34.360
Oh, look at how successful X is.
link |
00:37:36.040
Everybody looks at the successes.
link |
00:37:37.360
Those are boring.
link |
00:37:38.360
Show me the failures.
link |
00:37:39.560
Cause that is what's interesting.
link |
00:37:40.880
That's where people were experimenting.
link |
00:37:42.080
That's where people were pushing,
link |
00:37:43.520
but they failed, but they probably failed for reasons
link |
00:37:46.640
that weren't directly about the quality of their idea, right?
link |
00:37:50.080
So look at all the failures.
link |
00:37:51.440
Don't just look what everybody looks at,
link |
00:37:52.720
which is like, oh gosh,
link |
00:37:53.560
look at all these successful people.
link |
00:37:54.680
Look at the failures.
link |
00:37:55.960
Look at the things that didn't work.
link |
00:37:57.280
Research the entire field.
link |
00:37:59.080
And so that's the research that I was doing
link |
00:38:01.480
that led me to Robin, right?
link |
00:38:02.760
Was that.
link |
00:38:03.600
And then when we, for example,
link |
00:38:04.800
when we did Stack Overflow,
link |
00:38:07.560
we're like, okay, well I really like elements
link |
00:38:09.000
of voting and digging Reddit.
link |
00:38:10.040
I like the Wikipedia, everything's up to date.
link |
00:38:12.800
Nothing is like an old tombstone
link |
00:38:14.320
that like has horrible out of date information.
link |
00:38:16.980
We know that works.
link |
00:38:17.820
Wikipedia is an amazing resource.
link |
00:38:19.400
Blogging the idea of ownership is so powerful, right?
link |
00:38:22.400
Like, oh, I Joe wrote this
link |
00:38:24.000
and look how good Joe's answer is, right?
link |
00:38:25.520
Like all these concepts were rolling together,
link |
00:38:27.760
researching all the things that were out there
link |
00:38:29.080
that were working and why they were working
link |
00:38:30.640
and trying to like fold them into that.
link |
00:38:32.240
Again, that Frankenstein's monster
link |
00:38:34.040
of what Stack Overflow is.
link |
00:38:35.280
And by the way, that wasn't a free decision
link |
00:38:37.080
because there's still a ton of tension
link |
00:38:38.760
in the Stack Overflow system.
link |
00:38:40.040
There's reasons people complain about Stack Overflow
link |
00:38:42.600
because it's so strict, right?
link |
00:38:43.680
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 like trying to get good, good results
link |
00:38:51.240
out of the system and, you know, it's not a free.
link |
00:38:56.000
That stuff doesn't come for free, right?
link |
00:38:57.480
It's not like 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.160
Like it doesn't work that way, right?
link |
00:39:05.800
Like, so this is an interesting point
link |
00:39:07.960
and a small tangent.
link |
00:39:09.400
Yeah, you're right 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, usually go to something very specific
link |
00:39:19.800
to something I'm working on.
link |
00:39:21.200
This is something you talk about
link |
00:39:22.280
that really the goal of Stack Overflow
link |
00:39:25.000
isn't about, is to write a question not,
link |
00:39:27.840
that's not about you, it's about the question
link |
00:39:31.800
that will help the community in the future.
link |
00:39:35.800
Right, that's a tough sell, right?
link |
00:39:37.520
Because people are like, well, you know,
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
My problem.
link |
00:39:42.400
And that's fair, right?
link |
00:39:43.480
It's sort of that, again, that tension,
link |
00:39:44.960
that balancing act.
link |
00:39:45.800
I want to help you,
link |
00:39:46.760
but we also want to help everybody that comes behind you.
link |
00:39:48.480
Right, the long line of people are gonna come up and say,
link |
00:39:49.960
oh, I kind of have that problem too, right?
link |
00:39:52.320
And if nobody's ever gonna come up
link |
00:39:53.680
and say I have this problem too,
link |
00:39:54.880
then that question shouldn't exist on Stack Overflow
link |
00:39:57.040
because the question is too specific.
link |
00:39:58.920
And even that's tension, right?
link |
00:40:00.120
How do you judge that?
link |
00:40:00.960
How do you know that nobody's ever gonna have
link |
00:40:02.640
this particular question again?
link |
00:40:04.720
So there's a lot of tension in the system.
link |
00:40:06.840
Do you think that anxiety of asking the question,
link |
00:40:09.640
the anxiety of answering that tension
link |
00:40:12.680
is inherent to programmers,
link |
00:40:14.240
is inherent to this kind of process?
link |
00:40:16.920
Or can it be improved?
link |
00:40:20.320
Can it be happy land where that tension
link |
00:40:24.040
is not quite so harsh?
link |
00:40:26.320
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 one of 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.160
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.440
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.360
from what I understand,
link |
00:40:53.240
and it's gonna be a more wizard based format.
link |
00:40:55.200
And you could envision a world
link |
00:40:56.840
where as part of this wizard based program,
link |
00:40:58.440
when you're asking a question,
link |
00:40:59.360
so okay, come up with a good title.
link |
00:41:01.120
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.720
Oh, you have a problem.
link |
00:41:07.800
Okay, a problem, that's great, right?
link |
00:41:10.000
Like, you need specifics, right?
link |
00:41:11.240
Like, so it's trying to help you
link |
00:41:12.200
make a good question title, for example.
link |
00:41:14.240
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.480
You know, I've never done this before.
link |
00:41:22.680
Can you put me in a queue for like special mentoring, right?
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.800
Like, 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
Cause there are people that are like, you know,
link |
00:41:33.880
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 like hours with this person.
link |
00:41:40.160
It depends what their goals are, right?
link |
00:41:42.920
It's a great idea.
link |
00:41:43.760
Who am I to judge, right?
link |
00:41:44.600
So that's fine.
link |
00:41:45.440
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 of like, look, we're of New York City.
link |
00:41:51.080
You don't come to New York City and expect them to be,
link |
00:41:52.800
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.040
Let me show you around.
link |
00:41:57.120
That's not how New York City works, right?
link |
00:41:59.360
I mean, and you know, again, New York City
link |
00:42:02.160
is a reputation for being rude,
link |
00:42:03.080
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
People are just like going about their business, right?
link |
00:42:07.200
Like, look, I have things to do.
link |
00:42:08.960
I'm busy, I'm a busy professional, as are you.
link |
00:42:11.800
And since you're a busy professional,
link |
00:42:13.400
certainly when you ask a question,
link |
00:42:14.640
you're gonna ask the best possible question, right?
link |
00:42:16.400
Because you're a busy professional
link |
00:42:18.200
and you would not accept anything less
link |
00:42:20.120
than a very well went in question
link |
00:42:21.400
with a lot of detail about why you're doing it,
link |
00:42:23.240
what you're doing, what you researched,
link |
00:42:25.040
what you found, right?
link |
00:42:26.160
Cause you're a professional like me, right?
link |
00:42:28.560
And this rubs people sometimes the wrong way.
link |
00:42:30.960
And I don't think it's wrong to say,
link |
00:42:32.280
look, I don't want that experience.
link |
00:42:33.640
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, you know,
link |
00:42:43.840
even Joel says sometimes, oh yes,
link |
00:42:45.160
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
But that's not really representative, right?
link |
00:42:51.720
Like, I think as a beginner,
link |
00:42:53.080
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.040
You want access to resources.
link |
00:42:59.240
You want a playground, like a playground
link |
00:43:01.360
you can experiment in and like test
link |
00:43:03.280
and all the stuff that we just don't give people
link |
00:43:05.640
because that was never really the audience
link |
00:43:07.760
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.760
if there was a site like that on the internet
link |
00:43:13.240
or if Stack Overflow said,
link |
00:43:14.280
hey, you know, we're going to 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.640
But I do think the pressure or the tension
link |
00:43:21.040
that you described is there for people to be, look,
link |
00:43:23.560
I'm a little nervous
link |
00:43:24.440
cause I know I got to do my best work, right?
link |
00:43:26.360
The other one is something you talk about
link |
00:43:28.000
which is also really interesting to me
link |
00:43:30.280
is duplicate questions.
link |
00:43:32.040
Or it's a really difficult problem that you highlight.
link |
00:43:38.080
It's super hard.
link |
00:43:39.440
Like you could take one little topic
link |
00:43:41.680
and you could probably write 10, 20, 30 ways
link |
00:43:44.920
of asking about that topic and there will be all different.
link |
00:43:48.160
I don't know if there should be one page
link |
00:43:50.160
that answers all of it.
link |
00:43:51.840
Is there a way that Stack Overflow can help
link |
00:43:57.840
disambiguate, like separate these duplicate questions
link |
00:44:01.120
or connect them together?
link |
00:44:02.800
Or is it a totally hopeless, difficult, impossible task?
link |
00:44:06.200
I think it's a very, very hard computer science problem.
link |
00:44:08.440
And partly cause 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.880
And it happens all the time.
link |
00:44:24.480
People are super good at this, right?
link |
00:44:26.240
Accidentally at asking the same thing
link |
00:44:28.320
in like 10, 20 different ways.
link |
00:44:31.200
And the other complexities,
link |
00:44:32.280
we want some of those duplicates to exist
link |
00:44:33.880
because if there's five versions with different words,
link |
00:44:35.960
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 duplicate, no worries.
link |
00:44:41.840
Here's the answer that you wanted over here
link |
00:44:43.440
on this, the prime example that we wanna have,
link |
00:44:47.960
rather than having 10 copies of the question
link |
00:44:50.120
and the answer.
link |
00:44:50.960
Because if you have 10 copies of the question answer,
link |
00:44:52.360
this also devalues the reputation system,
link |
00:44:54.080
which programmers hate, as I previously mentioned.
link |
00:44:56.840
You're getting reputation for an answer
link |
00:44:58.280
that somebody else already gave.
link |
00:44:59.280
It's like, well, it's an answer,
link |
00:45:00.400
but somebody else already gave that answer.
link |
00:45:02.160
So why are you getting reputation for the same answer
link |
00:45:04.520
as the other guy who gave it four years ago?
link |
00:45:06.440
People get offended by that, right?
link |
00:45:07.720
So the reputation system itself adds tension to the system.
link |
00:45:11.880
In that the people who have a lot of reputation
link |
00:45:14.000
become very incentivized to enforce the reputation system.
link |
00:45:17.560
And for the most part, this good.
link |
00:45:18.880
I know it sounds weird, but for most parts like,
link |
00:45:20.640
look, strict systems, I think to use Stack Overflow,
link |
00:45:23.840
you have to have the idea that, okay,
link |
00:45:24.800
strict systems ultimately work better.
link |
00:45:26.600
And I do think in programming, you're familiar
link |
00:45:28.880
with loose typing versus strict typing, right?
link |
00:45:31.280
The idea that you can declare a variable,
link |
00:45:32.960
not declare a variable, rather,
link |
00:45:34.000
just start using a variable and, okay,
link |
00:45:35.080
I see it's implicitly an integer, bam, awesome.
link |
00:45:37.160
Duck equals five.
link |
00:45:38.120
Well, duck is now an integer of five, right?
link |
00:45:40.760
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.800
And for a long time, like in the Ruby community,
link |
00:45:45.800
they're like, yeah, this is awesome.
link |
00:45:46.760
Like you just do a bunch of unit testing,
link |
00:45:48.160
which is testing your program's validity after the fact
link |
00:45:50.920
to catch any bugs that strict typing of variables
link |
00:45:54.160
would have caught.
link |
00:45:55.000
And now you have this thing called TypeScript
link |
00:45:56.680
from Microsoft, from the guy who built C Sharp Anders,
link |
00:45:59.560
who's one of the greatest minds in software development,
link |
00:46:02.680
right, like in terms of language design,
link |
00:46:04.200
and says, no, no, no, we want to bolt on
link |
00:46:06.080
a strict type system to JavaScript
link |
00:46:07.320
because it makes things better.
link |
00:46:08.160
And now everybody's like, oh my God,
link |
00:46:10.000
we deployed TypeScript and found 50 lane bugs
link |
00:46:13.200
that we didn't know about, right?
link |
00:46:14.480
Like this is super common.
link |
00:46:15.800
So I think there is a truth in programming
link |
00:46:19.880
that strictness, it's not the goal.
link |
00:46:22.200
We're not saying be super strict
link |
00:46:23.480
because strictness is correct.
link |
00:46:25.680
No, it's no, no, strictness produces better results.
link |
00:46:28.600
That's what I'm saying, right?
link |
00:46:29.840
So strict typing of variables,
link |
00:46:31.720
I would say you almost universally have consensus now
link |
00:46:33.880
is basically correct.
link |
00:46:35.400
Should be that way in every language, right?
link |
00:46:37.680
Duck equals five should generate an error
link |
00:46:39.480
because no, you didn't declare,
link |
00:46:40.680
you didn't tell me that duck was an integer, right?
link |
00:46:42.920
That's a bug, right?
link |
00:46:43.840
Or maybe you mistyped, you typed duck, right?
link |
00:46:45.720
Instead of duck, right?
link |
00:46:46.560
You never know, this happens all the time, right?
link |
00:46:48.800
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.680
Now, that doesn't mean cruel, that doesn't mean mean,
link |
00:46:55.040
that doesn't mean angry, it just means strict, okay?
link |
00:46:57.800
So I think where there's misunderstanding
link |
00:46:59.280
is in people get cranky, right?
link |
00:47:00.720
Like another question you asked is like,
link |
00:47:02.280
why are programmers kind of mean sometimes?
link |
00:47:05.120
Well, who do programmers work with all day long?
link |
00:47:07.360
So I have a theory that if you're at a job
link |
00:47:10.040
and you work with assholes all day long,
link |
00:47:12.400
what do you eventually become?
link |
00:47:14.320
An asshole.
link |
00:47:15.160
An asshole, and what is the computer
link |
00:47:17.040
except the world's biggest asshole?
link |
00:47:19.240
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.000
everything is crashing down, right?
link |
00:47:25.240
One semicolon has crashed space missions, right?
link |
00:47:28.080
So that's normal.
link |
00:47:29.000
So you begin to internalize that.
link |
00:47:30.600
You begin to think, oh, my coworker, the computer,
link |
00:47:34.560
is super strict and kind of a jerk about everything.
link |
00:47:37.440
So that's kind of how I'm gonna be
link |
00:47:39.960
because I work with this computer
link |
00:47:41.800
and I have to exceed to its terms on everything.
link |
00:47:44.520
So therefore, you start to absorb that
link |
00:47:46.360
and you start to think, oh, well, being really strict
link |
00:47:48.520
arbitrarily is really good.
link |
00:47:50.360
An 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.080
So you kind of forget to be a person at some level.
link |
00:47:59.320
And you know how they say great detectives
link |
00:48:01.400
internalize criminals and kind of arc criminals themselves
link |
00:48:04.200
like this trope of the master detective is good
link |
00:48:07.080
because you can think like the criminal.
link |
00:48:08.680
Well, I do think that's true of programmers.
link |
00:48:10.400
Really good programmers think like the computer
link |
00:48:12.640
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
and you kind of become a jerk to everybody
link |
00:48:19.480
because that's what you've internalized.
link |
00:48:21.680
You're almost not a jerk,
link |
00:48:22.640
but you have no patience for lack of strictness,
link |
00:48:25.600
as you said.
link |
00:48:26.440
It's not out of a sense of meanness.
link |
00:48:27.800
It's accidental,
link |
00:48:28.640
but I do believe it's an occupational hazard
link |
00:48:30.360
or being a programmer is you start to behave
link |
00:48:32.440
like the computer.
link |
00:48:33.680
You're very unforgiving, you're very terse,
link |
00:48:35.840
you're very, oh, wrong, incorrect, move on.
link |
00:48:38.400
It's like, well, can you help me?
link |
00:48:39.720
Like what could I do to fix?
link |
00:48:41.200
No, wrong, next question, right?
link |
00:48:43.960
Like that's normal for the computer, right?
link |
00:48:46.400
Just fail next, right?
link |
00:48:47.760
Like, I don't know if you remember in Saturday Night Live,
link |
00:48:51.240
like in the nineties, they had this character
link |
00:48:53.080
who was an IT guy, the move guy, move.
link |
00:48:56.720
Was that Jimmy Fallon?
link |
00:48:58.120
No, no, who played him?
link |
00:49:01.160
Okay, yeah, I remember move.
link |
00:49:02.640
Right, he had no patience for him.
link |
00:49:04.200
Might have been mad TV actually.
link |
00:49:05.720
Oh, was it mad TV?
link |
00:49:06.680
Might have been, might have been.
link |
00:49:07.600
But anyway, that's always been the perception, right?
link |
00:49:10.960
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.920
You've written so many blog posts about programming,
link |
00:49:17.560
about programs, programming, programmers.
link |
00:49:22.640
What do you think makes a good,
link |
00:49:25.640
let's start with, what makes a good solo programmer?
link |
00:49:29.320
Well, I don't think you should be a solo programmer.
link |
00:49:31.560
I think to be a good solo programmer,
link |
00:49:33.320
it's kind of like what I talked about, well, not on mic,
link |
00:49:35.560
but one of the things, John Carmack,
link |
00:49:38.000
one of the best points he makes in the book,
link |
00:49:40.080
Masters of Doom, which is a fantastic book,
link |
00:49:42.120
and anybody listening to this who hasn't read it,
link |
00:49:43.680
please read it, it's such a great book,
link |
00:49:45.800
is that at the time they were working on stuff
link |
00:49:48.520
like Wolfenstein and Doom,
link |
00:49:50.400
like they didn't have the resources that we have today.
link |
00:49:52.800
They didn't have Stack Overflow,
link |
00:49:53.960
they didn't have Wikipedia,
link |
00:49:54.880
they didn't have like discourse forums,
link |
00:49:56.680
they didn't have places to go
link |
00:49:58.720
to get people to help them, right?
link |
00:50:00.200
They had to work on their own,
link |
00:50:01.920
and that's why it took a genius like Carmack to do this stuff,
link |
00:50:04.720
because you had to be a genius
link |
00:50:05.560
to invent from First Pensibles,
link |
00:50:07.160
a lot of the stuff he was like,
link |
00:50:08.560
the hacks he was coming up with were genius, right?
link |
00:50:11.040
Genius level stuff, but you don't need
link |
00:50:12.520
to be a genius anymore,
link |
00:50:13.840
and that means not working by yourself.
link |
00:50:15.560
You have to be good at researching stuff online,
link |
00:50:17.400
you have to be good at asking questions,
link |
00:50:19.240
really good questions that are really well researched,
link |
00:50:21.040
which implies, oh, I went out and researched
link |
00:50:22.400
for three hours before I wrote these questions,
link |
00:50:24.120
like that's what you should be doing,
link |
00:50:25.680
because that's what's gonna make you good, right?
link |
00:50:28.160
To me, this is the big difference between programming
link |
00:50:29.920
in like the 80s versus programming today,
link |
00:50:32.160
is like you kind of had to be by yourself back then,
link |
00:50:34.920
like where would you go for answers?
link |
00:50:36.520
I remember in the early days
link |
00:50:37.920
when I was learning Visual Basic for Windows,
link |
00:50:41.120
like I would call the Microsoft Helpline on the phone
link |
00:50:44.600
when I had like program,
link |
00:50:45.680
because I was like, I don't know what to do.
link |
00:50:47.040
So I would like go and call,
link |
00:50:48.560
and they had these huge phone banks,
link |
00:50:49.640
and like, can you imagine how alien that is now?
link |
00:50:51.280
Like who would do that, right?
link |
00:50:52.360
Like that's crazy.
link |
00:50:53.520
So there was just nowhere else to go when you got stuck,
link |
00:50:57.000
right?
link |
00:50:57.840
Like I had the books that came with it,
link |
00:50:59.520
I read those, studied those religiously.
link |
00:51:01.320
I just saw a post from Steve Sinovsky that said,
link |
00:51:03.680
this C++ version seven came with like 10,000 pages
link |
00:51:08.880
of written material,
link |
00:51:10.600
because where else were you gonna figure that stuff out?
link |
00:51:13.600
You didn't go to the library?
link |
00:51:14.880
I mean, you didn't have Wikipedia,
link |
00:51:15.800
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.200
basically not having an ego
link |
00:51:25.560
and not thinking that you're the best programmer
link |
00:51:28.840
in the world,
link |
00:51:29.840
and so always kind of just looking to improve,
link |
00:51:34.120
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.240
and as a thinker designer around programming
link |
00:51:43.320
over the past 15 years,
link |
00:51:47.360
really of being a public figure?
link |
00:51:49.000
I would say the big insight that I had
link |
00:51:50.880
is eventually as a programmer,
link |
00:51:52.680
you have to kind of stop writing code to be effective,
link |
00:51:54.760
which is kind of disturbing,
link |
00:51:57.000
because you really love it.
link |
00:51:58.280
But you realize like being effective at programming
link |
00:52:02.160
in the general sense doesn't mean writing code.
link |
00:52:05.160
And a lot of times you can be much more successful
link |
00:52:06.620
by not writing code and writing code
link |
00:52:08.840
in terms of just solving the problems you have,
link |
00:52:10.400
essentially hiring people that are really good
link |
00:52:12.400
and like setting them free
link |
00:52:13.800
and like giving them basic direction, right?
link |
00:52:16.240
Like on strategy and stuff,
link |
00:52:18.040
because a lot of the problems you encounter
link |
00:52:19.680
aren't necessarily solved to like really gnarly code,
link |
00:52:22.400
they're solved by conceptual solutions,
link |
00:52:25.080
which can then be turned into code,
link |
00:52:26.560
but are you even solving the right problem?
link |
00:52:28.680
I mean, so I would say for me,
link |
00:52:31.920
the main insight I have is to succeed as a programmer,
link |
00:52:35.320
you eventually kind of stop writing code.
link |
00:52:37.560
That's gonna sound discouraging,
link |
00:52:38.720
probably to people hearing, but I don't mean it that way.
link |
00:52:40.760
What I mean is that you're coding in a higher level language.
link |
00:52:43.320
Eventually like, okay,
link |
00:52:44.280
so we're coding in assembly language, right?
link |
00:52:45.600
That's the beginning, right?
link |
00:52:46.640
You're hard coded to the architecture.
link |
00:52:48.960
Then you have stuff like C,
link |
00:52:49.800
where it's like, wow, we can abstract
link |
00:52:51.000
across the architecture, you can write code.
link |
00:52:52.600
I can then compile that code for ARM or whatever,
link |
00:52:56.320
XA6 or whatever else is out there.
link |
00:52:58.280
And then even higher level NAT, right?
link |
00:53:00.120
Like you're looking at like Python, Ruby,
link |
00:53:01.920
interpreted languages.
link |
00:53:03.000
And then to me as a programmer, like, okay,
link |
00:53:05.000
I wanna go even higher.
link |
00:53:06.000
I wanna go higher than that.
link |
00:53:07.160
How do I abstract higher than 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.120
Like you're sort of inspiring people to get things done,
link |
00:53:14.600
giving them guidance, like, what if we did this?
link |
00:53:16.080
What if we did this?
link |
00:53:17.480
You're writing in the highest level language that there is,
link |
00:53:19.800
which is for me English, right?
link |
00:53:21.360
Whatever your spoken language is.
link |
00:53:23.040
So it's all about being effective, right?
link |
00:53:25.840
And I think Patrick McKenzie,
link |
00:53:29.360
patio 11 on Hacker News and Works at Stripe,
link |
00:53:32.000
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.600
Once you get far enough from your career.
link |
00:53:39.760
And I really believe that.
link |
00:53:40.800
And again, I apologize, 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.280
Because all the stuff that goes on around the code,
link |
00:53:47.760
like the people, like that's another thing.
link |
00:53:49.800
If you look at my early blog interviews, it was about,
link |
00:53:51.400
wow, programming is about people more than it's about code,
link |
00:53:55.280
which doesn't really make sense, right?
link |
00:53:56.720
But it's about, can these people even get along together?
link |
00:53:59.200
Can they understand each other?
link |
00:54:00.880
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
People wear it, right? Another classic programming book,
link |
00:54:06.600
which again, up there with code complete,
link |
00:54:08.520
please read people wear.
link |
00:54:09.960
It's that software is people, right?
link |
00:54:11.600
People are the software first and foremost.
link |
00:54:13.520
So a lot of the skills that I was working on
link |
00:54:15.680
early in the blog were about
link |
00:54:17.600
figuring out the people parts of programming,
link |
00:54:19.400
which was the harder parts.
link |
00:54:20.680
The hard part of programming,
link |
00:54:21.680
once you get to certain skill level programming,
link |
00:54:23.080
you can pretty much solve any reasonable problem
link |
00:54:25.240
that's put in front of you.
link |
00:54:26.320
You're not writing algorithms from scratch, right?
link |
00:54:28.120
That just doesn't happen.
link |
00:54:29.280
So any sort of reasonable problem
link |
00:54:30.560
put in front of you, you're gonna be able to solve.
link |
00:54:32.280
But what you can't solve is,
link |
00:54:33.600
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.640
And yet that will cripple you way more than,
link |
00:54:43.680
oh, we 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,
link |
00:54:52.160
writing God knows what, right?
link |
00:54:53.280
These are not your problems.
link |
00:54:54.120
Your problem is your manager or a coworker
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.160
because everybody's so stressed out and freaked out, right?
link |
00:55:02.320
These are the problems that you have to attack.
link |
00:55:04.480
Absolutely.
link |
00:55:05.320
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.080
to higher, higher level abstractions
link |
00:55:10.600
and go into natural language,
link |
00:55:12.240
you're also the guy who kind of preached,
link |
00:55:15.680
building it, diving in and doing it,
link |
00:55:18.640
and like learn by doing.
link |
00:55:21.760
Yes.
link |
00:55:22.840
Do you worry that as you get to higher,
link |
00:55:28.480
higher level abstractions,
link |
00:55:30.040
that you lose track of the lower level of just building
link |
00:55:35.440
is like, do you worry about that?
link |
00:55:37.200
Not maybe now, but 10 years from now, 20 years from now?
link |
00:55:41.600
Well, no.
link |
00:55:42.520
I mean, there is always that paranoia
link |
00:55:43.840
and oh gosh, I don't feel it's valuable
link |
00:55:45.400
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,
link |
00:55:51.600
and this is another valuable abstract from Stack Overflow,
link |
00:55:53.840
you can be super proficient at, for example, C Sharp,
link |
00:55:56.040
which I was working in,
link |
00:55:56.880
that's what we built Stack Overflow
link |
00:55:57.880
and then still is written in.
link |
00:55:59.240
And then switched to Ruby and you're a newbie again, right?
link |
00:56:01.480
But you have the framework.
link |
00:56:03.200
I know what a for loop is.
link |
00:56:04.400
I know what recursion is.
link |
00:56:05.760
I know what a stack trace is, right?
link |
00:56:09.600
Like I have all the fundamental concepts
link |
00:56:11.360
to be a programmer, I just don't know Ruby.
link |
00:56:12.760
So I'm still on a higher level.
link |
00:56:14.760
I'm not like a beginner beginner, like you're saying.
link |
00:56:16.560
I'm just like, I need to apply my programming concepts
link |
00:56:18.560
I already know to Ruby.
link |
00:56:20.280
Well, so there's a question that's really interesting.
link |
00:56:23.160
So looking at Ruby, how do you go about learning enough
link |
00:56:26.840
that your intuition can be applied?
link |
00:56:28.560
Well, that's the thing, that's what I was trying to get to
link |
00:56:30.320
is like what I realized,
link |
00:56:31.160
particularly when I started with just me and Robin,
link |
00:56:32.360
I realized if I bother Robin,
link |
00:56:34.800
I am now costing us productivity, right?
link |
00:56:37.080
Every time I go to Robin, rather than building
link |
00:56:39.640
the our first alpha version of discourse,
link |
00:56:43.760
he's now answering my stupid questions 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
The answer to both of those was resoundingly no, right?
link |
00:56:52.320
Like we were getting to an alpha
link |
00:56:54.320
and it was pretty much like, okay,
link |
00:56:55.320
we'll hire more programmers, right?
link |
00:56:56.720
Like we eventually hired Neil
link |
00:56:59.000
and then eventually Sam, who came in as a cofounder.
link |
00:57:02.880
Actually it was Sam first, then Neil later.
link |
00:57:05.040
But the answer to the problem
link |
00:57:06.280
is just hire other competent programmers.
link |
00:57:07.560
It's not like teach, now I shall pull myself up
link |
00:57:10.360
by my bootstraps and learn Ruby.
link |
00:57:12.360
But at some point writing code becomes a liability to you
link |
00:57:16.080
in terms of getting things done.
link |
00:57:17.400
There's so many other things that go on in the project,
link |
00:57:19.400
like building the prototype.
link |
00:57:20.440
Like you mentioned like, well, how do you,
link |
00:57:22.400
if you're not writing code,
link |
00:57:23.240
how does everybody keep focus on like what are we building?
link |
00:57:25.720
Well, first basic mockups and research, right?
link |
00:57:28.160
Like 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.800
let's iterate on the prototype really, really rapidly.
link |
00:57:35.960
And that's what we do with discourse.
link |
00:57:36.880
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.360
that we had running and ready to go.
link |
00:57:43.840
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.400
I have, we have screenshots of it
link |
00:57:48.440
and I'm just like embarrassed to look at it now.
link |
00:57:50.560
But it was the prototype.
link |
00:57:51.400
We were figuring out like what's working,
link |
00:57:52.640
what's not working.
link |
00:57:53.560
Cause there's such a broad gap between,
link |
00:57:56.360
between the way you think things will work in your mind
link |
00:57:59.440
or even on paper and the way they work
link |
00:58:01.160
once you sit and live in the software,
link |
00:58:03.080
like actually spend time living and breathing on software
link |
00:58:05.600
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.360
for a speed of iteration,
link |
00:58:13.240
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.000
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.120
is like, if you want to measure the core competency
link |
00:58:25.960
of any software tech company,
link |
00:58:27.600
it's the speed at which somebody can say,
link |
00:58:29.120
hey, we really need this word
link |
00:58:30.760
and the product changed to this word, right?
link |
00:58:32.240
Because it will be more clear to the users,
link |
00:58:34.240
like what, 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
link |
00:58:42.160
in your software and rolled out to users,
link |
00:58:43.400
that is your life cycle.
link |
00:58:44.880
That's your health, your, your heartbeat.
link |
00:58:47.240
If your heartbeat is like super slow,
link |
00:58:50.000
you're basically dead.
link |
00:58:51.600
No, seriously, like if it takes two weeks
link |
00:58:54.160
or even a month to get that single word changed,
link |
00:58:56.240
that was like, oh my God, this is a great idea.
link |
00:58:57.720
That word is so much clearer.
link |
00:58:59.000
I'm talking about like a super,
link |
00:59:00.040
like everybody's on board for this change.
link |
00:59:01.640
It's not like let's just change a word because we're bored.
link |
00:59:03.440
It's like, this is an awesome change.
link |
00:59:05.120
And then it takes a month to roll out.
link |
00:59:07.000
It's like, well, you're dead.
link |
00:59:07.880
Like you can't iterate.
link |
00:59:09.160
You can't, how you can do anything, right?
link |
00:59:11.640
Like, so anyway, about the heartbeat,
link |
00:59:13.680
it's like get the prototype and then iterate on it.
link |
00:59:15.960
That's what I view as like the central tenet
link |
00:59:18.960
of some modern software development.
link |
00:59:20.440
That's fascinating that you put it that way.
link |
00:59:22.000
It's actually, so I work in, 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 psych,
link |
00:59:31.400
the whatever the heartbeat for Tesla is literally days.
link |
00:59:35.680
Now, in terms of they can over the air
link |
00:59:38.120
deploy software updates to all their vehicles,
link |
00:59:41.160
which is markedly different than every other automaker,
link |
00:59:44.760
which takes years to update a piece of software.
link |
00:59:49.080
And so, and that's reflected in everything
link |
00:59:52.120
that's the final product that's reflected
link |
00:59:55.520
in really how slowly they adapt to the times.
link |
00:59:58.200
And to be clear, I'm not saying being a hummingbird
link |
00:59:59.920
is the goal either.
link |
01:00:00.760
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.560
But like, it is a measure of health.
link |
01:00:05.680
You should have a healthy heartbeat.
link |
01:00:07.280
It's up to, for people listening to decide what that means,
link |
01:00:09.560
but it has to be healthy.
link |
01:00:10.840
It has to be reasonable
link |
01:00:11.680
because otherwise you're just gonna be frustrated
link |
01:00:13.360
because like that's how you build software.
link |
01:00:15.120
You make mistakes, you roll it out, you live with it.
link |
01:00:17.720
You see what it feels like and say,
link |
01:00:18.760
oh God, that was a terrible idea.
link |
01:00:19.920
Oh my gosh, this could be even better if we did why, right?
link |
01:00:22.720
You turn the crank and then the more you do that,
link |
01:00:25.000
the faster you get ahead of your competitors ultimately
link |
01:00:27.520
because it's rate of change, right?
link |
01:00:29.720
Delta V, right?
link |
01:00:30.920
How fast are you moving?
link |
01:00:32.680
Well, within a year, you're gonna be miles away
link |
01:00:34.760
by the time they catch up with you, right?
link |
01:00:36.560
Like that's the way it works.
link |
01:00:37.920
And plus users, like as a software developer,
link |
01:00:40.760
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.200
How dare they?
link |
01:00:48.040
Yes, change the software, change it all the time, man.
link |
01:00:50.600
That's what makes this stuff great
link |
01:00:52.520
is that it can be changed so rapidly
link |
01:00:55.160
and become something that is greater than it is now.
link |
01:00:58.240
Now granted, there's some changes that suck, I admit.
link |
01:01:00.960
I've seen it many times.
link |
01:01:02.040
But in general, it's like, that's what makes software cool,
link |
01:01:04.640
right, is that it is so malleable.
link |
01:01:06.280
Like fighting that is like weird to me
link |
01:01:08.240
because it's like, well, you're fighting
link |
01:01:09.880
the essence of the thing that you're building.
link |
01:01:11.840
Like that doesn't make sense.
link |
01:01:12.800
You wanna really embrace that, not to be a hummingbird,
link |
01:01:15.240
but like embrace it to a healthy cycle of your heartbeat, right?
link |
01:01:18.120
So you talk about that people really don't change.
link |
01:01:20.880
It's true, that's why probably a lot of the stuff
link |
01:01:23.840
you write about in your blog probably will remain true.
link |
01:01:27.440
Well, there's a flip side of the coin, people don't change.
link |
01:01:29.200
So investing and understanding people
link |
01:01:31.440
is like learning Unix in 1970
link |
01:01:34.640
because nothing has changed, right?
link |
01:01:36.840
Like all those things you've learned about people
link |
01:01:38.680
will still be valid 34 years from now.
link |
01:01:40.480
Whereas if you learn the latest JavaScript framework,
link |
01:01:43.000
that's gonna be good for like two years, right?
link |
01:01:45.040
Exactly.
link |
01:01:46.200
So, but if you look at the future of programming,
link |
01:01:49.640
so there's a people component,
link |
01:01:51.000
but there's also the technology itself.
link |
01:01:54.200
Do you, what do you see as the future of programming?
link |
01:01:57.160
Will it change significantly?
link |
01:01:59.160
Or as far as you can tell,
link |
01:02:01.680
people are ultimately programming and so it will not,
link |
01:02:05.800
it's not something that you foresee changing
link |
01:02:08.520
in any fundamental way.
link |
01:02:09.840
Well, you gotta go look back on sort of the basics of programming.
link |
01:02:14.240
And one of the things that always shocked me
link |
01:02:15.480
is like source control.
link |
01:02:16.320
Like I didn't learn anything about source control.
link |
01:02:18.480
And I graduated from college in 1992,
link |
01:02:22.360
but I remember hearing from people
link |
01:02:24.160
like as late as like 1998, 1999,
link |
01:02:26.560
like even maybe today they're not learning source control.
link |
01:02:28.880
And to me it's like, well, how can you not learn source control?
link |
01:02:31.520
That is so fundamental to working with other programmers,
link |
01:02:34.560
working in a way that you don't lose your work.
link |
01:02:35.920
Like just basic soft, the bed,
link |
01:02:38.120
literal bedrock software development is source control.
link |
01:02:41.160
Now you compare today like GitHub, right?
link |
01:02:42.760
Like Microsoft brought GitHub, which I think was
link |
01:02:44.320
an incredibly smart acquisition move on their part.
link |
01:02:46.920
Now they have anybody who wants like reasonable source controls
link |
01:02:50.040
and go sign up on GitHub, it's all set up for you, right?
link |
01:02:52.360
There's tons of walkthroughs, tons of tutorials.
link |
01:02:55.280
So from the concept of like has programming advanced
link |
01:02:57.680
from say 1999, it's like, well, hell, we have GitHub.
link |
01:03:00.280
I mean, my God, yes, right?
link |
01:03:01.560
Like it's massively advanced over what it was.
link |
01:03:04.800
Now as to whether programming is significantly different,
link |
01:03:08.840
I'm gonna say no, but I think the baseline of like
link |
01:03:11.560
what we view as like fundamentals
link |
01:03:14.480
will continue to go up and actually get better.
link |
01:03:16.480
Like source control, for example,
link |
01:03:17.480
that's one of the fundamentals that has gotten,
link |
01:03:19.040
I mean, hundreds of orders of magnitude better
link |
01:03:22.000
than it was 10, 20 years ago, right?
link |
01:03:23.760
So those are the fundamentals.
link |
01:03:24.920
Let me introduce two things that maybe you can comment on.
link |
01:03:28.240
So one is mobile phones.
link |
01:03:31.000
So that could fundamentally transform what programming is,
link |
01:03:37.080
or maybe not, maybe you can comment on that.
link |
01:03:39.080
And the other one is artificial intelligence.
link |
01:03:41.480
Which promises to in some ways
link |
01:03:45.120
to do some of the programming for you
link |
01:03:48.040
is one way to think about it.
link |
01:03:49.440
So it's really what a programmer is,
link |
01:03:52.280
is using the intelligence that's inside your skull
link |
01:03:55.680
to do something useful.
link |
01:03:58.040
The hope with artificial intelligence is that
link |
01:03:59.920
it does some of the useful parts for you
link |
01:04:02.040
the way you don't have to think about it.
link |
01:04:03.560
So do you see smartphones,
link |
01:04:06.000
the fact that everybody has one
link |
01:04:07.680
and they're getting more and more powerful
link |
01:04:09.320
as potentially changing programming?
link |
01:04:11.600
And do you see AI as potentially changing programming?
link |
01:04:14.280
Oh, okay, so that's good.
link |
01:04:15.600
So smartphones have definitely changed.
link |
01:04:17.520
I mean, since, you know, I guess 2010
link |
01:04:19.360
is when they really started getting super popular.
link |
01:04:21.800
I mean, in the last eight years,
link |
01:04:24.120
the world has literally changed, right?
link |
01:04:25.680
Like everybody carries a computer around and that's normal.
link |
01:04:28.480
I mean, that is such a huge change in society.
link |
01:04:31.280
I think we're still dealing
link |
01:04:32.120
with a lot of the positive negative ramifications of that,
link |
01:04:34.960
right?
link |
01:04:35.800
Like everybody's connected all the time.
link |
01:04:36.620
Everybody's on the computer all the time.
link |
01:04:37.800
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.040
Like, wow, now everybody has a computer
link |
01:04:44.120
and it's not quite the utopia that we thought it would be,
link |
01:04:46.320
right?
link |
01:04:47.160
Computers can be used for a lot of stuff
link |
01:04:48.520
that's not necessarily 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,
link |
01:04:57.200
smallish touch screen computer.
link |
01:04:59.120
But as for programming, like, I don't know,
link |
01:05:00.560
I don't think that I've kind of over time come to subscribe
link |
01:05:03.800
to the UNIX view of the world when it comes to programming.
link |
01:05:06.120
It's like, you wanna teach these basic command line things
link |
01:05:10.000
and that is just what programming is gonna be for,
link |
01:05:12.160
I think a long, long time.
link |
01:05:14.400
I don't think there's any magical, like visual programming
link |
01:05:17.080
that's gonna happen.
link |
01:05:19.480
I just, I don't know.
link |
01:05:20.600
I've over time have become a believer
link |
01:05:22.720
in that UNIX philosophy of just, you know,
link |
01:05:24.280
they kind of had a right with UNIX.
link |
01:05:26.400
That's gonna be the way it is for a long, long time.
link |
01:05:28.920
And we'll continue to, like I said, raise the baseline.
link |
01:05:31.560
The tools will get better, it'll get simpler,
link |
01:05:33.000
but it's still fundamentally gonna be command line tools,
link |
01:05:35.600
you know, fancy IDEs.
link |
01:05:37.160
That's kind of it for the foreseeable future.
link |
01:05:39.200
I'm not seeing any visual programming stuff on the horizon.
link |
01:05:42.240
Cause you kind of think like,
link |
01:05:43.080
what do you do on a smartphone
link |
01:05:44.080
that will be directly analogous to programming?
link |
01:05:46.400
Like I'm trying to think, right?
link |
01:05:47.480
Like, and there's really not much.
link |
01:05:52.160
So not necessarily analogous to programming,
link |
01:05:55.160
but the kind of things that,
link |
01:06:00.840
the kind of programs you need to write
link |
01:06:02.680
might need to be very different.
link |
01:06:07.360
Yeah.
link |
01:06:08.200
And the kind of languages, I mean,
link |
01:06:09.760
but I probably also subscribed to the same,
link |
01:06:12.400
just because everything in this world
link |
01:06:14.280
might be written in JavaScript.
link |
01:06:16.520
Oh yeah, that's definitely, that's already happening.
link |
01:06:17.760
I mean, discourse is a bet on,
link |
01:06:19.000
discourse is itself, JavaScript is another bet
link |
01:06:20.840
on that side of the table.
link |
01:06:21.680
And I still try and believe in that.
link |
01:06:23.680
So I would say smartphones have mostly a cultural shift,
link |
01:06:25.840
more than a programming shift.
link |
01:06:28.000
Now your other question was about artificial intelligence
link |
01:06:30.080
and like, sort of advice is predicting
link |
01:06:32.480
what you're gonna do.
link |
01:06:33.320
And I do think there's some strength to that.
link |
01:06:34.640
I think artificial intelligence
link |
01:06:36.040
kind of overselling it in terms of what it's doing.
link |
01:06:37.680
It's more like, people are predictable, right?
link |
01:06:39.240
People do the same things.
link |
01:06:40.760
Like, let me give you an example.
link |
01:06:42.240
One check we put into a discourse
link |
01:06:44.600
that's in 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.240
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.840
So at that point, you're like, okay,
link |
01:07:01.040
this is a suspicious login at that point.
link |
01:07:02.640
So we would alert you.
link |
01:07:03.480
It's like, okay, but that's not AI, right?
link |
01:07:05.360
That's just heuristic of like,
link |
01:07:07.280
how did you in one hour get 2,000 miles, right?
link |
01:07:11.080
That doesn't mean, maybe you're on a VPN,
link |
01:07:12.680
there's other ways to happen.
link |
01:07:13.520
But that's just a basic prediction based on the idea
link |
01:07:16.000
that people pretty much don't move around that much.
link |
01:07:19.280
Like they may travel occasionally,
link |
01:07:20.920
but like nobody, I mean, unless you're a traveling salesman
link |
01:07:22.960
that's literally traveling the world every day,
link |
01:07:25.520
like there's so much repetition and predictability
link |
01:07:28.240
in terms of things you're going to do.
link |
01:07:29.600
And I think good software anticipates your needs.
link |
01:07:31.880
Like for example, Google, I think it's called Google Now
link |
01:07:34.160
or whatever that Google thing is that predicts your commute
link |
01:07:36.160
and predicts based on your phone location,
link |
01:07:37.720
like where are you every day?
link |
01:07:39.160
Well, that's probably where you work, that kind of stuff.
link |
01:07:42.080
I do think computers can get a lot better at that,
link |
01:07:43.760
but I hesitate to call it like full blown AI.
link |
01:07:46.280
It's just computers getting better at like,
link |
01:07:48.480
first of all, they have a ton of data
link |
01:07:49.480
because everybody has a smartphone.
link |
01:07:50.520
Now, all of a sudden we have all this data
link |
01:07:52.000
that we didn't have before about location,
link |
01:07:53.840
about like, you know, communication
link |
01:07:56.160
and feeding that into some basic heuristics
link |
01:07:59.200
and maybe some fancy algorithms
link |
01:08:00.480
that turn it into predictions of anticipating your needs
link |
01:08:03.120
like a friend would, right?
link |
01:08:04.520
Like, oh, hey, I see your home,
link |
01:08:06.560
would you like some dinner, right?
link |
01:08:07.520
Like, let's go get some food
link |
01:08:08.640
because that's usually what we do this time of day, right?
link |
01:08:10.760
In the context of actually the active programming,
link |
01:08:13.640
do you see IDEs improving
link |
01:08:15.360
and making the life of programming is better?
link |
01:08:17.480
I do think that is possible
link |
01:08:18.840
because there's a lot of repetition in programming, right?
link |
01:08:20.720
Oh, you know, Clippy would be the bad example of,
link |
01:08:23.200
oh, I see, it looks like you're writing a for loop,
link |
01:08:25.960
but there are patterns in code, right?
link |
01:08:27.840
Like, and actually libraries are kind of like that, right?
link |
01:08:30.360
Like, rather than go, you know,
link |
01:08:33.200
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 that's already a trouble shot, right?
link |
01:08:39.720
Like, it's not AI per se,
link |
01:08:41.400
it's just, you know, building better Lego bricks,
link |
01:08:44.800
bigger Lego bricks that have more functionality in them
link |
01:08:47.720
so people don't have to worry
link |
01:08:48.880
about the low level stuff as much anymore.
link |
01:08:50.520
Like WordPress, for example, to me is like,
link |
01:08:52.880
a tool for somebody who isn't a programmer to do something,
link |
01:08:55.880
I mean, you can turn WordPress into anything.
link |
01:08:57.640
It's kind of crazy actually through plugins, right?
link |
01:08:59.480
And that's not programming per se,
link |
01:09:01.320
it's just Lego bricks stacking WordPress elements, right?
link |
01:09:04.520
And a little bit of configuration glue.
link |
01:09:06.560
So I would say maybe in a broader sense,
link |
01:09:08.480
what I'm seeing like, there'll be more gluing
link |
01:09:11.320
and less like actual programming.
link |
01:09:14.120
And that's a good thing, right?
link |
01:09:15.560
Cause most of the stuff you need is kind of out there already.
link |
01:09:17.920
You said 1970s, Unix,
link |
01:09:20.040
do you see PHP and these kind of old remnants of, of the early birth
link |
01:09:30.680
of programming remaining with us for a long time?
link |
01:09:33.720
Like you said, Unix in itself, do you see ultimately,
link |
01:09:37.320
you know, this stuff's just being there out of momentum?
link |
01:09:42.840
I kind of do.
link |
01:09:44.080
I mean, I was a big believer in Windows early on
link |
01:09:46.120
and I was a big, you know, I was like,
link |
01:09:47.320
Unix, what a waste of time.
link |
01:09:48.720
But over time, I've completely flipped on that
link |
01:09:50.080
where I was like, okay, the Unix guys were right
link |
01:09:51.680
and pretty much Microsoft and Windows were kind of wrong,
link |
01:09:54.600
at least on the server side.
link |
01:09:55.720
And on the desktop, right, you need a GUI,
link |
01:09:57.400
you need a lot of stuff.
link |
01:09:58.240
And you have the two philosophies,
link |
01:09:59.160
like Apple built on Unix, effectively Darwin.
link |
01:10:02.640
And on the desktop, it's a slightly different story,
link |
01:10:04.560
but on the server side where you're going to be programming.
link |
01:10:06.960
Now it's a question of where the programming is going to be.
link |
01:10:08.440
There's going to be a lot more like client side programming
link |
01:10:10.720
cause technically discourse is client side programming.
link |
01:10:13.600
The way you get discourse,
link |
01:10:14.480
we deliver a big ball of JavaScript,
link |
01:10:16.160
which is then executed locally.
link |
01:10:18.240
So we're really using a lot more local computing power.
link |
01:10:20.960
We'll still retrieve the data.
link |
01:10:21.960
Obviously, we have to display the posts
link |
01:10:23.360
on the screen and so forth,
link |
01:10:24.280
but in terms of like sorting and a lot of the basic stuff,
link |
01:10:27.000
we're using the host processor.
link |
01:10:29.400
But to the extent that a lot of programming
link |
01:10:31.240
is still going to be server side,
link |
01:10:33.000
I would say, yeah, the Unix philosophy definitely won.
link |
01:10:35.280
And there'll be different veneers over the 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 going to be Unix for a long, I think, Unix one,
link |
01:10:44.320
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,
link |
01:10:59.120
continuing the discourse in trying to improve
link |
01:11:02.560
conversation on the web?
link |
01:11:03.840
Well, discourse is what I believe is a,
link |
01:11:05.640
and originally I called a five year project,
link |
01:11:07.040
but 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, you know, 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 on discourse.
link |
01:11:19.640
There's any project you built in software,
link |
01:11:21.800
it takes three years to build what you wanted to build anyway.
link |
01:11:24.120
Like V1 is going to be terrible, which it was,
link |
01:11:26.600
but you ship it anyway,
link |
01:11:27.440
because that's how you get better at stuff.
link |
01:11:28.920
It's about turning the crank.
link |
01:11:29.960
It's not about V1 being perfect,
link |
01:11:31.440
because that's ridiculous.
link |
01:11:32.840
It's about V1, then let's get really good at V1.1,
link |
01:11:35.600
1.2, 1.3, like how fast can we iterate?
link |
01:11:38.040
And I think we're iterating like crazy on discourse,
link |
01:11:40.160
the point that like it's a really good product now,
link |
01:11:41.960
we have serious momentum.
link |
01:11:43.620
And my original vision was,
link |
01:11:46.300
I want to be the WordPress of discussion,
link |
01:11:48.180
meaning if someone came to you and said,
link |
01:11:49.900
I want to start a blog,
link |
01:11:50.820
although the very question is kind of archaic now,
link |
01:11:53.020
it's like who actually blogs anymore.
link |
01:11:55.340
But I wanted the answer to that to be,
link |
01:11:59.060
it would be WordPress normally,
link |
01:12:01.420
because that's the obvious choice for blogging most of the time.
link |
01:12:04.220
But if someone said, hey, I want to,
link |
01:12:05.980
I need a group of people to get together and do something,
link |
01:12:08.780
the answer should be discourse, right?
link |
01:12:10.460
That should be the default answer for people.
link |
01:12:11.820
Cause it's open source, it's free,
link |
01:12:13.420
doesn't cost you anything, you control it, you can run it.
link |
01:12:16.020
Your minimum server cost for discourse
link |
01:12:17.420
is five bucks a month at this point.
link |
01:12:19.620
They actually got the VPS prices down,
link |
01:12:21.580
it used to be $10 a month for one gigabyte of RAM,
link |
01:12:23.900
which we are dependent,
link |
01:12:26.700
we have a kind of heavy stack,
link |
01:12:28.460
like there's a lot of stuff in discourse.
link |
01:12:30.340
You need Postgres, you need Redis,
link |
01:12:31.820
you need Ruby on Rails,
link |
01:12:33.900
you need a sidekick for scheduling.
link |
01:12:35.800
It's not a trivial amount of stuff,
link |
01:12:36.980
cause we were architected for like,
link |
01:12:38.060
look, we're building for the next 10 years.
link |
01:12:39.500
I don't care about shared PHP hosting,
link |
01:12:41.980
that's not my model.
link |
01:12:44.180
My idea is like, hey, you know,
link |
01:12:45.340
eventually this is going to be very cheap for everybody.
link |
01:12:47.540
And I want to build it right,
link |
01:12:49.140
using again, you know,
link |
01:12:50.580
higher, bigger building block levels, right?
link |
01:12:53.500
That have more requirements.
link |
01:12:54.460
And there's a WordPress model of WordPress.org,
link |
01:12:56.620
WordPress.com.
link |
01:12:57.700
Is there a central hosting for discourse or no?
link |
01:13:01.020
There is, we're not strictly segmenting
link |
01:13:02.740
into the open source versus the commercial side.
link |
01:13:05.140
We have a hosting business,
link |
01:13:06.060
that's how discourse makes money,
link |
01:13:07.140
as we host discourse instances,
link |
01:13:08.900
and we have really close relationship
link |
01:13:09.980
with our customers of the symbiosis
link |
01:13:12.860
of them giving us feedback on the product.
link |
01:13:14.700
We definitely weight feedback from customers,
link |
01:13:16.500
a lot heavier than feedback from somebody
link |
01:13:18.420
who just wanders by and gives feedback.
link |
01:13:20.940
But that's where we make all our money,
link |
01:13:22.500
but we don't have a strict division.
link |
01:13:24.660
We encourage people to use discourse,
link |
01:13:26.660
like the whole point is that it's free, right?
link |
01:13:29.060
Anybody can set it up.
link |
01:13:29.980
I don't want to be the only person that hosts discourse,
link |
01:13:32.620
that's absolutely not the goal,
link |
01:13:34.220
but it is a primary way for us to build a business.
link |
01:13:36.300
And it's actually kind of a great business.
link |
01:13:37.620
I mean, the business is going really, really well
link |
01:13:40.300
in terms of hosting.
link |
01:13:41.380
So I used to work at Google Research,
link |
01:13:44.340
as a company that's basically funded on advertisements,
link |
01:13:47.060
so it's Facebook, let me ask if you can comment on it.
link |
01:13:50.420
I think advertisement at its best.
link |
01:13:53.540
So you'd be extremely critical on what ads are,
link |
01:13:56.620
but at its best, it's actually serving you,
link |
01:13:59.740
in a sense, it's giving you,
link |
01:14:01.220
it's connecting you to what you would want to explore.
link |
01:14:05.700
So it's like related posts or related content,
link |
01:14:08.060
it's the same, that's the best of advertisement.
link |
01:14:10.220
So discourse is connecting people based on their interests.
link |
01:14:16.100
It seems like a place where advertisement at its best
link |
01:14:20.100
could actually serve the users.
link |
01:14:21.780
Is that something that you're considering thinking about
link |
01:14:24.940
as a way to bring, to financially support the platform?
link |
01:14:29.460
That's interesting because I actually have
link |
01:14:31.380
a contrarian view of advertising,
link |
01:14:32.620
which I kind of agree with you.
link |
01:14:33.820
I recently installed Ad Blocker reluctantly
link |
01:14:36.820
because I don't like to do that,
link |
01:14:38.300
but the performance of the ads, man,
link |
01:14:40.620
they're so heavy now and it's just crazy.
link |
01:14:43.340
So it's almost like a performance argument
link |
01:14:45.100
more than I actually am pro ads,
link |
01:14:47.220
and I have a contrarian view point, I agree with you.
link |
01:14:50.380
If you do ads right, it's serving you stuff
link |
01:14:51.980
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.540
So plus, I think it's rational to want to support
link |
01:15:00.020
the people that are doing this work,
link |
01:15:01.700
through seeing their ads,
link |
01:15:02.620
but that said, I run Ad Block now,
link |
01:15:04.060
which I didn't want to do,
link |
01:15:06.220
but I was convinced by all these articles,
link |
01:15:08.220
like 30, 40 megabytes of stuff just to serve you ads.
link |
01:15:12.500
Yeah, it feels like ads now are like the experts exchange
link |
01:15:16.020
of whenever you start to stack overflows.
link |
01:15:18.260
It's a little bit, it's overwhelming.
link |
01:15:19.540
Oh, there's so many companies in Adtech
link |
01:15:21.060
that what's embarrassing, like you can do that.
link |
01:15:22.340
Have you seen those logo charts of like just the whole page?
link |
01:15:24.300
It's like, you can't even see them, they're so small.
link |
01:15:26.260
There's so many companies in the space,
link |
01:15:27.820
but since you brought it up, I do want to point out
link |
01:15:29.660
that very, very few Discord sites actually run
link |
01:15:31.900
using an ad supported model.
link |
01:15:33.100
It's not effective.
link |
01:15:34.700
Like it's too diluted, it's too weird,
link |
01:15:37.620
it doesn't pay well, and like users hate it.
link |
01:15:40.540
So it's a combination of like users hate it,
link |
01:15:42.820
it doesn't actually work that well in practice.
link |
01:15:44.460
Like in theory, yes, I agree with you.
link |
01:15:46.260
Clean, fast ads that were exactly the stuff
link |
01:15:48.740
you would be interested in, awesome.
link |
01:15:50.300
We're so far from that though, right?
link |
01:15:52.460
Like, and Google does an okay job,
link |
01:15:53.780
they do retargeting and stuff like that,
link |
01:15:55.380
but in the real world,
link |
01:15:58.060
Discord sites rarely can make ads work.
link |
01:16:01.020
It just doesn't work for so many reasons.
link |
01:16:03.060
But you know what does work is subscriptions,
link |
01:16:05.620
Patreon, affiliate codes for like Amazon,
link |
01:16:10.700
of like just, oh, here's a cool YoYo click,
link |
01:16:13.140
and then you click and go to Amazon,
link |
01:16:14.420
they get a small percentage of that,
link |
01:16:15.700
which is fair, I think.
link |
01:16:17.180
I mean, because you saw the YoYo on that site,
link |
01:16:19.140
and you click through and you bought it, right?
link |
01:16:21.140
That's fair for them to get 5% of that
link |
01:16:22.580
or 2% of that, whatever it is.
link |
01:16:24.220
Those things definitely work.
link |
01:16:26.020
In fact, a site that I used to participate on a lot,
link |
01:16:28.620
I helped the owner.
link |
01:16:29.900
One of the things, I got them switched to Discord,
link |
01:16:32.460
I basically paid them to switch to Discord,
link |
01:16:34.220
because I was like, look, you guys gotta switch,
link |
01:16:35.380
I can't come here anymore on this terrible software.
link |
01:16:38.540
But I was like, look, and on top of that,
link |
01:16:40.180
like you're serving people ads that they hate,
link |
01:16:42.300
like you should just go full on Patreon,
link |
01:16:43.980
because he had a little bit of Patreon,
link |
01:16:45.340
go full on Patreon, do the Amazon affiliates thing
link |
01:16:49.740
for any Amazon links that get posted,
link |
01:16:51.140
and just do that, and just triple down on that stuff.
link |
01:16:53.700
And that's worked really well for them,
link |
01:16:55.340
and this creator in particular.
link |
01:16:56.820
So that stuff works, but traditional ads,
link |
01:16:59.500
I mean, definitely not working, at least on Discord.
link |
01:17:01.700
So last question, you've created the code keyboard.
link |
01:17:05.940
I've programmed most of my adult life
link |
01:17:07.820
in a Kinesis keyboard.
link |
01:17:09.860
I have one upstairs now.
link |
01:17:12.100
Can you describe what a mechanical keyboard is,
link |
01:17:14.540
and why is it something that makes you happy?
link |
01:17:16.740
Well, you know, this is another fetish item, really.
link |
01:17:18.780
Like, it's not required.
link |
01:17:20.140
You can do programming on any kind of keyboard, right?
link |
01:17:22.260
Even like an onscreen keyboard, oh God,
link |
01:17:24.420
that's terrifying, right?
link |
01:17:25.940
But you could, I mean, if you look back at the early days
link |
01:17:28.500
of computing, there were chiclet keyboards,
link |
01:17:29.780
which are, I mean, those are awful, right?
link |
01:17:31.460
But what's a chiclet keyboard?
link |
01:17:32.540
Oh God, okay, well, it's just like
link |
01:17:34.180
thin rubber membranes.
link |
01:17:36.220
Oh, the rubber ones, oh no.
link |
01:17:37.700
Super bad, right?
link |
01:17:38.540
Yeah.
link |
01:17:39.380
So it's a fetish item.
link |
01:17:40.380
All that really says is, look,
link |
01:17:41.940
I care really about keyboards,
link |
01:17:43.340
because the keyboard is the primary method
link |
01:17:44.620
of communication with the computer, right?
link |
01:17:46.260
So it's just like having a nice mic for this podcast.
link |
01:17:49.340
You want a nice keyboard, right?
link |
01:17:50.620
Because it has very tactile feel.
link |
01:17:52.180
I can tell exactly when I press the key.
link |
01:17:53.980
I get that little click, so oh, and it feels good.
link |
01:17:56.900
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.260
that I care about the tool, the primary tool,
link |
01:18:02.380
that I use to communicate with the computer
link |
01:18:03.300
and make sure it's as good as it feels good to use for me.
link |
01:18:06.380
And like, I can be very productive with it.
link |
01:18:08.300
So to be honest, it's a little bit of a fetish item,
link |
01:18:10.700
but a good one.
link |
01:18:11.540
It indicates that you're serious,
link |
01:18:12.540
it indicates you're interested.
link |
01:18:13.580
It indicates that you care about the fundamentals,
link |
01:18:15.260
because you know what makes you a good programmer?
link |
01:18:17.500
Being able to type really fast, right?
link |
01:18:18.900
Like, this is true, right?
link |
01:18:20.580
So a core skill is just being able to type fast enough
link |
01:18:23.500
to get your ideas out of your head into the code base.
link |
01:18:26.140
So just practicing your typing can make you a better programmer.
link |
01:18:29.740
It is also something that makes you,
link |
01:18:33.740
well, makes you enjoy typing, correct?
link |
01:18:36.660
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.260
makes you happy.
link |
01:18:47.100
Right, no, totally, that's it.
link |
01:18:48.220
I mean, and it's funny,
link |
01:18:49.060
because artisanal keyboards have exploded,
link |
01:18:50.700
like Mastrop has gone ballistic with this stuff.
link |
01:18:53.460
There's probably like 500 keyboard projects on Mastrop alone.
link |
01:18:56.900
And there's some other guy I follow on Twitter.
link |
01:18:58.180
I used to write for this, the site, the tech report,
link |
01:19:00.300
way back in the day.
link |
01:19:01.420
And he's like, every week he's just posting like,
link |
01:19:02.940
what I call keyboard porn of like, just cool keyboards.
link |
01:19:05.460
Oh my God, those look really cool, right?
link |
01:19:06.620
Like, that's like, how many keyboards this guy have, right?
link |
01:19:09.820
It's got like me with yoyos.
link |
01:19:10.740
How many yoyos do you have?
link |
01:19:11.580
How many do you need?
link |
01:19:12.420
Well, technically one, but I like a lot.
link |
01:19:14.900
I don't know why.
link |
01:19:15.820
So same thing with keyboards.
link |
01:19:17.260
So yeah, they're awesome.
link |
01:19:18.940
Like I highly recommend anybody who doesn't have a mechanical
link |
01:19:21.580
to research it, look into it,
link |
01:19:23.100
and see what you like.
link |
01:19:24.420
And you know, it's ultimately a fetish item,
link |
01:19:26.300
but I think these sort of items,
link |
01:19:28.860
these religious artifacts that we have
link |
01:19:31.020
are part of what make us human.
link |
01:19:32.220
Like that part's important, right?
link |
01:19:33.940
It's kind of what makes life worth living.
link |
01:19:35.780
Yeah, it's not necessary in the strictest sense,
link |
01:19:38.900
but ain't nothing necessary if you think about it, right?
link |
01:19:42.340
Like, so yeah, why not?
link |
01:19:44.300
So sure.
link |
01:19:45.420
Jeff, thank you so much for talking today.
link |
01:19:47.500
Yeah, you're welcome.
link |
01:19:48.340
Thanks for having me.