back to indexJeff Atwood: Stack Overflow and Coding Horror | Lex Fridman Podcast #7
link |
The following is a conversation with Jeff Atwood.
link |
He is the cofounder of Stack Overflow and Stack Exchange,
link |
websites that are visited by millions of people
link |
Much like with Wikipedia, it is difficult to understate
link |
the impact on global knowledge and productivity
link |
that these networks of sites have created.
link |
Jeff is also the author of the famed blog, Coding Horror,
link |
and the founder of Discourse, an open source software project
link |
that seeks to improve the quality of our online community
link |
This conversation is part of the MIT course
link |
on artificial journal intelligence
link |
and the artificial intelligence podcast.
link |
If you enjoy it, subscribe on YouTube, iTunes,
link |
or your podcast provider of choice,
link |
or simply connect with me on Twitter
link |
at Lex Friedman, spelled FRID.
link |
And now, here's my conversation with Jeff Atwood.
link |
Having cocreated and managed for a few years the world's
link |
largest community of programmers in Stack Overflow
link |
10 years ago, what do you think motivates most programmers?
link |
Is it fame, fortune, glory, process of programming itself,
link |
or is it the sense of belonging to a community?
link |
It's puzzles, really.
link |
I think it's this idea of working on puzzles
link |
independently of other people and just solving a problem,
link |
sort of on your own, almost, although nobody really
link |
works alone in programming anymore.
link |
But I will say there's an aspect of hiding yourself away
link |
and just beating on a problem until you solve it.
link |
Like, brute force, basically, to me,
link |
is what a lot of programming is.
link |
It's like, the computer's so fast that you can do things
link |
that would take forever for a human,
link |
but you can just do them so many times and so often
link |
that you get the answer.
link |
You're saying just the pure act of tinkering with the code
link |
is the thing that drives most probably the joy, the struggle
link |
balance within the joy of overcoming the brute force
link |
process of pain and suffering that eventually leads
link |
to something that actually works?
link |
Well, data's fun, too.
link |
Like, there's this thing called the shuffling problem.
link |
Like, the naive shuffle that most programmers write
link |
And there's a lot of articles online about this
link |
because it can be really bad if you're like a casino
link |
and you have an unsophisticated programmer writing
link |
your shuffle algorithm.
link |
There's surprising ways to get this wrong.
link |
But the neat thing is, the way to figure that out
link |
is just to run your shuffle a bunch of times
link |
and see how many orientations of cards you get.
link |
You should get an equal distribution of all the cards.
link |
And with the naive method of shuffling,
link |
if you just look at the data, if you just brute force it
link |
and say, OK, I don't know what's going to happen.
link |
You just write a program that does it a billion times
link |
and then see what the buckets look like of the data.
link |
And the money haul problem is another example of that,
link |
where you have three doors and somebody gives you
link |
information about another door.
link |
So the correct answer is you should always switch.
link |
The money haul problem, which is not intuitive.
link |
It freaks people out all the time.
link |
But you can solve it with data.
link |
If you write a program that does the money haul game
link |
and then never switches, then always switches, just compare,
link |
you would immediately see that you don't have to be smart.
link |
You don't have to figure out the answer algorithmically.
link |
You can just brute force it out with data
link |
and say, well, I know the answer is this
link |
because I ran the program a billion times
link |
and these are the data buckets that I got from it.
link |
So empirically, you find it.
link |
But what's the joy of that?
link |
So for you, for you personally, outside of family,
link |
what motivates you in this process?
link |
Well, to be honest, I don't really
link |
write a lot of code anymore.
link |
What I do at discourse is like, managerry stuff, which
link |
I always kind of despise as a programmer.
link |
You think of managers as people who don't really
link |
do anything themselves.
link |
But the weird thing about code is you
link |
realize that language is code.
link |
The ability to direct other people
link |
lets you get more stuff done than you could by yourself
link |
You said language is code?
link |
Meaning communication with other humans?
link |
You can think of it as a systematic.
link |
So what does it like to be?
link |
What makes, before we get into programming,
link |
what makes a good manager?
link |
What makes a good leader?
link |
Well, I think a leader, it's all about leading by example,
link |
first of all, like sort of doing and being the things
link |
that you want to be.
link |
Now, this can be kind of exhausting.
link |
Particularly if you have kids because you realize
link |
that your kids are watching you all the time,
link |
like even in ways that you've stopped seeing yourself.
link |
Like the hardest person to see on the planet
link |
is really yourself.
link |
It's a lot of you see other people and make judgments
link |
about them, but yourself, like you're super biased.
link |
You don't actually see yourself the way other people see you.
link |
Often, you're very, very hard on yourself in a way
link |
that other people really aren't going to be.
link |
So that's one of the insights is you've
link |
got to be really diligent about thinking,
link |
like, am I behaving in a way that
link |
represents how I want other people to behave?
link |
Like leading through example.
link |
There's a lot of examples of leaders
link |
that really mess this up.
link |
Like they make decisions that are like, wow, that's why.
link |
It's just it's a bad example for other people.
link |
So I think leading by example is one.
link |
The other one, I believe it is working really hard.
link |
I don't mean like working exhaustively,
link |
but like showing a real passion for the problem.
link |
Like not necessarily your solution to the problem,
link |
but the problem itself is just one that you really believe in.
link |
With discourse, for example, the problem
link |
that we're looking at, which is my current project,
link |
is how do you get people in groups
link |
to communicate in a way that doesn't like break down
link |
into the howling of wolves, right?
link |
Like how do you deal with trolling?
link |
Not like technical problems of how
link |
do I get people to post paragraphs?
link |
How do I get people to use bold?
link |
How do I get people to use complete sentences?
link |
Although those are problems as well.
link |
But how do I get people to get along with each other, right?
link |
And then solve whatever problem it is they set out to solve,
link |
or reach some consensus on discussion,
link |
or just not hurt each other, even, right?
link |
Like maybe it's a discussion that doesn't really matter,
link |
but are people yelling at each other, right?
link |
Like that's not the purpose of this kind of communication.
link |
So I would say leadership is about setting an example,
link |
doing the things that represent what you want to be,
link |
and making sure that you're actually doing those things.
link |
And there's a trick to that too, because the things you don't
link |
do also say a lot about what you are.
link |
Yeah, so let's pause on that one.
link |
So those two things are fascinating.
link |
So how do you have as a leader that self awareness?
link |
So you just said it's really hard to be self aware.
link |
So for you personally, or maybe for other leaders
link |
you've seen or look up to, how do you
link |
know both that the things you're doing
link |
are the wrong things to be doing, the way you speak
link |
to others, the way you behave, and the things you're not doing?
link |
How do you get that signal?
link |
There's two aspects to that.
link |
One is like processing feedback that you're getting.
link |
So how do you get feedback?
link |
So are you getting feedback, right?
link |
Like so one way we do it, for example,
link |
at discourse we have three cofounders,
link |
and we periodically talk about decisions before we make them.
link |
So it's not like one person can make a mistake, or like,
link |
wow, they're going to be misunderstanding things.
link |
So it's part of group consensus of leadership
link |
is like it's good to have, I think, systems
link |
where there's one leader, and that leader has the rule
link |
of absolute law, are just really dangerous in my experience.
link |
For communities, for example, if you have a community that's
link |
run by one person, that one person makes all decisions,
link |
that person's going to have a bad day.
link |
Something can happen to that person.
link |
There's a lot of variables.
link |
So first, when you think about leadership,
link |
have multiple people doing leadership,
link |
and have them talk amongst each other.
link |
So you're giving each other feedback about the decisions
link |
that they're making.
link |
And then when you do get feedback,
link |
I think there's that little voice in your head, right?
link |
Or your gut, or wherever you want to put it in your body.
link |
I think that voice is really important.
link |
I think most people who have any kind of moral compass
link |
or want to do, most people want to do the right thing.
link |
I do believe that.
link |
I mean, there might be a handful of sociopaths out there
link |
that don't, but most people, they
link |
want other people to think of them as a good person.
link |
Why wouldn't you, right?
link |
Do you want people to despise you?
link |
I mean, that's just weird, right?
link |
So you have that little voice that the angel and devil
link |
on your shoulder talking to you about what you're doing,
link |
how you're doing, how does it make you feel
link |
to make these decisions, right?
link |
And I think having some attunement to that voice
link |
But you said that voice also for,
link |
I think it's a programmer situation, too,
link |
where sometimes the devil on the shoulder
link |
is a little too loud.
link |
So you're a little too self critical for a lot of developers,
link |
especially when you have introverted personality.
link |
How do you struggle with the self criticism
link |
or the criticism of others?
link |
One of the things of leadership is
link |
to do something that's potentially unpopular
link |
or what people doubt you and you still
link |
go through with the decision.
link |
So what's that balance like?
link |
I think you have to walk people through your decision
link |
This is where blogging is really important in communication.
link |
It's so important.
link |
Again, code language is just another kind of code.
link |
It's like, here is the program by which
link |
I arrived at the conclusion that I'm going to reach, right?
link |
It's one thing to say, this is a decision.
link |
Deal with it, right?
link |
That's not usually satisfying to people.
link |
But if you say, look, we've been thinking
link |
on this problem for a while.
link |
Here's some stuff that's happened.
link |
Here's what we think is right.
link |
Here's what we want to achieve.
link |
And we've looked at these options.
link |
And we think this of the available options is the best option.
link |
People will be like, oh, OK.
link |
Maybe I don't totally agree with you,
link |
but I can kind of see where you're coming from.
link |
And I see it's not just arbitrary decision delivered
link |
from a cloud of flames in the sky.
link |
It's like a human trying to reach some kind of consensus
link |
And their goals might be different than yours.
link |
That's completely legit, right?
link |
But if you're making that clear, it's like, oh, well,
link |
the reason we don't agree is because we have totally
link |
different goals, right?
link |
How could we agree?
link |
It's not that you're a bad person.
link |
It's that we have radically different goals in mind
link |
when we started looking at this problem.
link |
And the other one you said is passion or hard work, sorry.
link |
Well, those are tied together in my mind.
link |
Let's say hard work and passion.
link |
For me, I just really love the problem discourse
link |
is setting out to solve because, in a way,
link |
it's like there's a vision of the world where it all devolves
link |
into Facebook basically owning everything
link |
in every aspect of human communication, right?
link |
And this has always been kind of a scary world for me.
link |
First, because I think Facebook is really good at execution.
link |
I got to compliment them.
link |
They're very competent in terms of what they're doing.
link |
But Facebook has not much of a moral compass
link |
in terms of Facebook cares about Facebook, really.
link |
They don't really care about you and your problems.
link |
What they care about is how big they can make Facebook, right?
link |
Is that you talking about the company or just the mechanism
link |
of how Facebook works?
link |
Kind of both, really, right?
link |
And the idea with discourse, the reason I'm so passionate
link |
about it is because I believe every community should have
link |
the right to own themselves, right?
link |
Like they should have their own software that they can run
link |
that belongs to them.
link |
That's their space where they can set the rules.
link |
And if they don't like it, they can move to different hosting
link |
or whatever they need to happen can happen.
link |
But this idea of a company town where all human communication
link |
is implicitly owned by WhatsApp, Instagram, and Facebook.
link |
And it's really disturbing, too, because Facebook
link |
Like I said, they're great at execution.
link |
Buying in WhatsApp and buying Instagram
link |
were incredibly smart decisions.
link |
And they also do this thing on, if you know,
link |
but they have this VPN software that they give away
link |
for free on smartphones.
link |
And it indirectly feeds all the data about the traffic
link |
So they can see what's actually getting popular
link |
through the VPNs, right?
link |
They have low level access to the network data
link |
because users have let them have that.
link |
So let's take a small pause here.
link |
First of all, discourse, can you talk about,
link |
can you lay out the land of all the different ways
link |
you can have communities?
link |
So there's Stack Overflow that you've built.
link |
There's discourse.
link |
So Stack Overflow is kind of like a Wiki.
link |
Wikipedia you talk about.
link |
And it's a very specific scalpel, very focused.
link |
So what is the purpose of discourse?
link |
And maybe contrast that with Facebook.
link |
First of all, say what is discourse?
link |
Start from the beginning.
link |
Well, let me start from the very beginning.
link |
So Stack Overflow is very structured,
link |
Wiki style Q&A for programmers, right?
link |
And that was the problem we first worked on.
link |
And when we started, we thought it was discussions
link |
because we looked at like programming forums and other things,
link |
but we quickly realized we were doing Q&A,
link |
which is a very narrow subset of human communication, right?
link |
So when you started Stack Overflow,
link |
you thought you didn't even know the Q&A.
link |
You didn't know it would be Q&A.
link |
Well, we didn't know.
link |
We had an idea of like, okay,
link |
these are things that we see working online.
link |
We had a goal, right?
link |
Our goal was there was this site,
link |
Experts Exchange with a very unfortunate name.
link |
Thank you for killing that site.
link |
Yeah, I know, right?
link |
Like a lot of people don't remember it anymore,
link |
Like that's the measure of success.
link |
If people don't remember the thing
link |
that you were trying to replace, then you've totally won.
link |
So it was a place to get answers to programming questions,
link |
but it wasn't clear if it was like focused Q&A,
link |
if it was a discussion,
link |
there were plenty of programming forums.
link |
So we weren't really sure.
link |
We were like, okay, we'll take aspects of dig and Reddit,
link |
like voting were very important,
link |
reordering answers based on votes,
link |
Wiki style stuff of like being able to edit posts,
link |
not just your posts, but other people's posts
link |
to make them better and keep them more up to date.
link |
Ownership of blogging of like, okay, this is me.
link |
I'm saying this in my voice, you know,
link |
this is the stuff that I know.
link |
And you know, you get your reputation accrues to you
link |
and it's pure recognition.
link |
So you asked earlier, like what motivates programmers?
link |
I think pure recognition motivates them a lot.
link |
That was one of the key insights of Stack Overflow
link |
was like recognition from your peers
link |
is why things get done.
link |
Initially money, not necessarily your boss,
link |
but like your peers saying, wow,
link |
this person really knows their stuff has a lot of value.
link |
So the reputation system came from that.
link |
So we were sort of Frankensteining a bunch of stuff together
link |
in Stack Overflow, like stuff we had seen working
link |
and we knew worked and that became Stack Overflow.
link |
And over time we realized it wasn't really discussion.
link |
It was very focused questions and answers.
link |
There wasn't a lot of room on the page for,
link |
let me talk about this tangential thing.
link |
It was more like, okay, is it answering the question?
link |
Is it clarifying the question
link |
or could it be an alternative answer to the same question?
link |
Cause there's usually more than one way to do it in program.
link |
There's like, say five to 10 ways.
link |
And one of the patterns we got into early on
link |
in Stack Overflow was there were questions
link |
where there would be like hundreds of answers.
link |
And we're like, well,
link |
how can there be a programming question
link |
with 100, 200, 500 answers?
link |
And we looked at those and we realized
link |
those were not really questions in the traditional sense.
link |
They were discussions.
link |
It was stuff that we allowed early on
link |
that we eventually decided wasn't allowed,
link |
such as what's your favorite programming food?
link |
What's the funniest programming cartoon you've seen?
link |
And we had to sort of backfill a bunch of rules
link |
about like, why isn't this allowed?
link |
Such as, is this a real problem you're facing?
link |
Like nobody goes to work
link |
and says, wow, I can't work
link |
cause I don't know what the funniest programming cartoon is.
link |
So sorry, can't compile this code now, right?
link |
It's not a real problem you're facing in your job.
link |
So that was Run Rule.
link |
And the second, like, what can you really learn from that?
link |
It's like what I call accidental learning
link |
or Reddit style learning
link |
where you're just like, oh, I'll just browse some things
link |
and oh, wow, you know,
link |
did you know tree frogs only live three years?
link |
I mean, I just made that up.
link |
I don't know if that's true,
link |
but I didn't really set out to learn that.
link |
I don't need to know that, right?
link |
It's accidental learning.
link |
It was more intentional learning
link |
where you're like, okay, I have a problem
link |
and I wanna learn about stuff around this problem having,
link |
And it could be theory, it could be compiler theory,
link |
it could be other stuff,
link |
but I'm having a compiler problem,
link |
hence I need to know the compiler theory,
link |
that aspect of it that gets me to my answer, right?
link |
So kind of a directed learning.
link |
So we had to backfill all these rules
link |
as we sort of figured out what the heck it was we were doing.
link |
And the system came very strict over time
link |
and a lot of people still complain about that.
link |
And I wrote my latest blog entry,
link |
what does Stack Overflow want to be?
link |
What does it want to be when it grows up?
link |
Celebrating the 10 year anniversary, yeah.
link |
Yeah, so 10 years and the system
link |
has trended towards strictness.
link |
There's a variety of reasons for this.
link |
One is people don't like to see other people
link |
get reputation for stuff as they view as frivolous,
link |
which I can actually understand
link |
because if you saw a programmer got like 500 upvotes
link |
for funniest programming cartoon
link |
or funniest comment they had seen in code.
link |
It's like, well, why do they have that reputation?
link |
Is it because they wrote the joke?
link |
I mean, if they did, maybe, or the cartoon, right?
link |
They're getting a bunch of reputation
link |
based on someone else's work.
link |
It's not even like programming.
link |
It's just a joke, right?
link |
It's a related program.
link |
So you begin to resent that.
link |
You're like, well, that's not fair.
link |
At some level, they're correct.
link |
I empathize because it's not correct
link |
to get reputation for that.
link |
Versus here's a really gnarly, regular expression problem.
link |
And here's a really clever, insightful, detailed answer
link |
laying out, oh, here's why you're seeing the behavior
link |
that you're seeing.
link |
And here, let me teach you some things
link |
about how to avoid that in the future.
link |
That's great, that's gold, right?
link |
You want people to get reputation for that,
link |
not so much for, wow, look at this funny thing I saw, right?
link |
Great, so there's this very specific Q&A format,
link |
and then take me through the journey
link |
towards discourse in Facebook and Twitter.
link |
So you start at the beginning,
link |
that Stack Overflow evolved to have a purpose.
link |
So what is discourse, this passion you have
link |
for creating community for discussion?
link |
What is that, when was that born?
link |
Well, part of it is based on the realization
link |
that Stack Overflow is only good
link |
for very specific subjects where there's sort of,
link |
it's based on data, facts, and science,
link |
where answers can be kind of verified to be true.
link |
Another form of that is there's the book of knowledge,
link |
like the tome of knowledge that defines like whatever it is,
link |
you can refer to that book and it'll give you the answer.
link |
There has to be, it only works on subjects
link |
where there's like semi clear answers to things
link |
that can be verified in some form.
link |
Now again, there's always more than one way to do it.
link |
There's complete flexibility and system around that.
link |
But where it falls down is stuff like poker and Lego.
link |
Like we had, if you go to stackexchange.com,
link |
we have an engine that tries to launch
link |
different Q&A topics, right?
link |
And people can propose Q&A topics, sample questions,
link |
and if it gets enough support within the network,
link |
we launch that Q&A site.
link |
So some of the ones we launched were poker and Lego,
link |
and they did horribly, right?
link |
Because, I mean, they might still be there
link |
lingering on in some form, but it was an experiment.
link |
This is like a test, right?
link |
And some subjects work super well in the stack engine,
link |
But the reason Lego and poker don't work
link |
is because they're so social, really.
link |
It's not about what's the rule here in poker.
link |
It's like, well, what kind of cigars
link |
do we like to smoke while playing poker?
link |
Or what's a cool set of cards to use when I'm playing poker?
link |
Or what's some strategies?
link |
Like say I have this hand come up,
link |
what's some strategies I could use?
link |
It's more of a discussion around what's happening.
link |
Like with Lego, same thing, like here's
link |
this cool Lego set I found.
link |
Look how awesome this is.
link |
And I'm like, yeah, that's freaking awesome, right?
link |
It's not a question, right?
link |
There's all these social components to the discussions
link |
that don't fit at all.
link |
Like we literally have to disallow those in Stack Overflow
link |
because it's not about being social.
link |
It's about problems that you're facing in your work
link |
that you need concrete answers for, right?
link |
Like you have a real demonstrated problem
link |
that's sort of blocking you and something.
link |
Nobody's blocked by what should I do
link |
when I have a straight flush, right?
link |
Like it's not a blocking problem in the world.
link |
It's just an opportunity to hang out and discuss.
link |
So discourse was a way to address that and say, look,
link |
you know, discussion form software was very, very bad.
link |
And when I came out of Stack Overflow in late 20,
link |
early 20, early 2013, early 2012,
link |
it was still very, very bad.
link |
I expected it improved in the four years
link |
since I last looked, but it had not improved at all.
link |
And I was like, well, that's kind of terrible
link |
because I love these communities of people
link |
talking about things that they love, you know,
link |
that there's just communities of interest, right?
link |
And there's no good software for them.
link |
Like startups would come to me and say, hey, Jeff,
link |
I wanna, you know, I have this startup.
link |
And the first thing I would say to them is like, well,
link |
first, why are you asking me?
link |
Like I don't really know your field, right?
link |
Linus, sincerely, like, why aren't you asking
link |
like the community, like the people
link |
that are interested in this problem,
link |
the people that are using your product,
link |
why aren't you talking to them?
link |
And then they'd say, oh, great idea.
link |
Like how do I do that?
link |
And then that's when I started playing sad trombone
link |
because I realized all the software involving
link |
talking to your users, customers, audience, patrons,
link |
whatever it is, it was all really bad.
link |
You know, it was like stuff that I would be embarrassed
link |
to recommend to other people.
link |
And yet that's where I felt they could get
link |
the biggest and strongest, most effective input
link |
for what they should be doing with their product, right?
link |
It's from their users, from their community, right?
link |
That's what we did on Stack Overflow.
link |
So what we're talking about with forums,
link |
the, what is it, the dark matter of the internet,
link |
it's still, I don't know if it's still,
link |
but for the longest time, it has some of the most
link |
passionate and fascinating discussions.
link |
And what's the usual structure?
link |
There's usually what, it's linear.
link |
So it's sequential, so you're posting one after the other
link |
and there's Paging Nation, so it's every,
link |
there's a 10 posts and you go to the next page
link |
and that format still is used by, like I'm,
link |
we're doing a lot of research with Tesla of vehicles
link |
and there's a Tesla Motors Club forum,
link |
which is extremely,
link |
We really wanted to run that actually.
link |
They pinged us about it, I don't think we got it,
link |
but I really would have liked to gotten that one.
link |
But they've started before even 2012, I believe.
link |
I mean, they've been running for a long time.
link |
It's still an extremely rich source of information.
link |
So what's broken about that system
link |
and how are you trying to fix it?
link |
I think there's a lot of power in connecting people
link |
that love the same stuff around that specific topic,
link |
meaning Facebook's idea of connection is just any human
link |
that's related to another human, right?
link |
Like through friendship or any other reason.
link |
Facebook's idea of the world is sort of the status update,
link |
Like a friend of yours did something at a restaurant, right?
link |
Whereas discussion forums were traditionally
link |
around the interest graph.
link |
Like I love electric cars, specifically I love Tesla, right?
link |
Like I love the way they approach the problem.
link |
I love the style of the founder.
link |
I just love the design ethic.
link |
There's a lot to like about Tesla.
link |
I don't know if you saw the oatmeal,
link |
he did a whole love comic to Tesla.
link |
And it was actually kind of cool
link |
because I learned some stuff.
link |
He was talking about how great Tesla cars were specifically,
link |
like how they were built differently.
link |
And he went into a lot of great detail
link |
that was really interesting.
link |
And to me, that oatmeal post, if you read it,
link |
is the genesis of pretty much all interest communities.
link |
I just really love this stuff.
link |
So for me, for example, there's yoyos, right?
link |
Like I'm into the yoyo communities
link |
and these interest communities are just really fascinating
link |
to me and I feel more connected to the yoyo communities
link |
than I do to friends that I don't see that often, right?
link |
Like to me, the powerful thing is the interest graph
link |
and Facebook kind of dabbles in the interest graph.
link |
I mean, they have groups, you can sign up for groups
link |
and stuff, but it's really about the relationship graph.
link |
Like this is my coworker, this is my relative,
link |
this is my friend, but not so much about the interest.
link |
So I think that's the linchpin
link |
of which forums and communities are built on
link |
that I personally love.
link |
Like I said, leadership is about passion, right?
link |
And being passionate about stuff
link |
is a really valid way to look at the world.
link |
And I think it's a way,
link |
a lot of stuff in the world gets done.
link |
Like I once had someone describe me as,
link |
he's like, Jeff, you're a guy who,
link |
you just get super passionate about a few things at a time
link |
and you just go super deep in those things.
link |
And I was like, oh, that's kind of right.
link |
That's kind of what I do.
link |
I get into something and just be super into that
link |
for a couple of years or whatever
link |
and just learn all I can about it
link |
and go super deep in it.
link |
And that's how I enjoy experiencing the world, right?
link |
Like not being shallow on a bunch of things,
link |
but being really deep on a few things that I'm interested in.
link |
So forums kind of unlock that, right?
link |
And you don't want a world where everything belongs
link |
to Facebook, at least I don't.
link |
I want a world where communities can kind of own themselves,
link |
set their own norms, set their own rules,
link |
control the experience.
link |
Because community is also about ownership, right?
link |
Like if you're meeting at the Barnes & Noble
link |
every Thursday and Barnes & Noble says,
link |
get out of here, you guys don't buy enough books,
link |
well, you're kind of hoes, right?
link |
Barnes & Noble owns you, right?
link |
But if you have your own meeting space,
link |
you know, your own clubhouse,
link |
you can set your own rules,
link |
decide what you want to talk about there
link |
and just really generate a lot better information
link |
than you could like hanging out at Barnes & Noble
link |
every Thursday at 3 p.m., right?
link |
So that's kind of the vision of Discourse,
link |
is a place where it's fully open source.
link |
You can take the software, you can install it anywhere.
link |
And you know, you and a group of people
link |
can go deep on whatever it is that you're into.
link |
And this works for startups, right?
link |
Startups are a group of people
link |
who go super deep on a specific problem, right?
link |
And they want to talk to their communities
link |
like, well, install Discourse, right?
link |
That's what we do at Discourse.
link |
That's what I did at Stack Overflow.
link |
I spent a lot of time on MetaStack Overflow,
link |
which is our internal, well,
link |
public community feedback site.
link |
And just experiencing what the users were experiencing, right?
link |
Because they're the ones doing all the work in the system.
link |
And they had a lot of interesting feedback.
link |
And there's that 90, 10 rule of like 90% of the feedback
link |
you get is not really actionable for a variety of reasons.
link |
It might be bad feedback.
link |
It might be crazy feedback.
link |
It might be feedback you just can't act on right now.
link |
But there's 10% of it that's like gold.
link |
It's like literally gold and diamonds,
link |
where it's like feedback of really good improvements
link |
to your core product that are not super hard to get to
link |
and actually make a lot of sense.
link |
And my favorite is about 5% of those stuff
link |
I didn't even see coming.
link |
It's like, oh my God, I never even thought of that.
link |
But that's a brilliant idea, right?
link |
And I can point to so many features of Stack Overflow
link |
that we drive from MetaStack Overflow feedback
link |
and MetaDiscourse, right, same exact principle of discourse.
link |
You know, we're getting ideas from the community.
link |
I was like, oh my God, I never thought of that.
link |
But that's fantastic, right?
link |
Like I love that relationship with the community.
link |
From having built these communities, what have you,
link |
what have you learned about?
link |
What's the process of getting a critical mass
link |
of members in a community?
link |
Is it luck, skill, timing, persistence?
link |
What is, is it the tools, like discourse
link |
that empower that community?
link |
What's the key aspect of starting for one guy or gal
link |
and then building it to two, one and 10
link |
and a hundred and a thousand and so on?
link |
I think we're starting with an end of one.
link |
I mean, I think it's persistence
link |
and also you have to be interesting.
link |
Like somebody I really admire
link |
once said something that I always liked about blogging.
link |
He's like, here's how you blog.
link |
You have to have something interesting to say
link |
and have an interesting way of saying it, right?
link |
And then do that for like 10 years.
link |
So that's the genesis is like you have to have
link |
sort of something interesting to say
link |
that's not exactly what everybody else is saying.
link |
And an interesting way of saying it,
link |
which is another way of saying kind of entertaining
link |
And then as far as growing it, it's like ritual, you know,
link |
like you have to like say you're starting a blog,
link |
you have to say, look, I'm gonna blog every week,
link |
three times a week and you have to stick to that schedule,
link |
Because until you do that for like several years,
link |
you're never gonna get anywhere.
link |
Like it just takes years to get to where you need to get to.
link |
And part of that is having the discipline
link |
to stick with the schedule.
link |
And it helps again, if it's something you're passionate about,
link |
this won't feel like work.
link |
Like, I love this.
link |
I can talk about this all day, every day, right?
link |
You just have to do it in a way that's interesting
link |
And then as you're growing the community,
link |
that pattern of participation within the community
link |
of like generating these artifacts
link |
and inviting other people to help you
link |
like collaborate on these artifacts.
link |
Like even in the case of blogging,
link |
like I felt in the early days of my blog,
link |
which I started in 2004,
link |
which is really the genesis of Stack Overflow.
link |
If you look at all my blog, it leads up to Stack Overflow,
link |
which was, I have all this energy in my blog,
link |
but I don't like 40,000 people were subscribing to me.
link |
And I was like, I wanna do something.
link |
And then I met Joel and said, hey, Joel,
link |
I wanna do something, take this ball of energy
link |
from my blog and do something.
link |
And all the people who read my blog saw that,
link |
it's like, oh, cool, you're involving us.
link |
You're saying, look, you're part of this community,
link |
let's build this thing together.
link |
Like they pick the name.
link |
Like we voted on the name for Stack Overflow on my blog.
link |
Like we came up and naming is super hard.
link |
First of all, the hardest problem in computer science
link |
is coming with a good name for stuff, right?
link |
But you can go back to my blog.
link |
There's the poll where we voted
link |
and Stack Overflow became the name of the site.
link |
And all the early beta users of Stack Overflow
link |
were audience of my blog plus Joel's blog, right?
link |
So we started from like, if you look at the Genesis,
link |
okay, I was just a programmer who said,
link |
hey, I love programming, but I have no outlet
link |
So I'm just gonna blog about it
link |
because I don't have enough people to work
link |
to talk to about it.
link |
Cause at the time I worked place where,
link |
you know, programming wasn't the core output of the company.
link |
It was a pharmaceutical company.
link |
And I just love this stuff, you know, to an absurd degree.
link |
So I was like, I'll just blog about it
link |
and then I'll find an audience
link |
and eventually found an audience,
link |
eventually found Joel and eventually built Stack Overflow
link |
from that one core of activity, right?
link |
But it was that repetition of feeding back in,
link |
feedback from my blog comments, feedback from Joel,
link |
feedback from the early Stack Overflow community.
link |
When people see that you're doing that,
link |
they will follow along with you, right?
link |
They say, cool, you're here in good faith.
link |
You're actually, you know, not listening to everything
link |
because that's impossible, that's impossible,
link |
but you're actually, you know, waiting our feedback
link |
in what you're doing because, and why wouldn't I?
link |
Because who does all the work on Stack Overflow?
link |
No, it's the other programmers
link |
that are doing all the work.
link |
So you gotta have some respect for that.
link |
And then, you know, discipline around, look,
link |
you know, we're trying to do a very specific thing
link |
here on Stack Overflow.
link |
We're not trying to solve all the world's problems.
link |
We're trying to solve this very specific Q&A problem
link |
in a very specific way.
link |
Not because we're jerks about it,
link |
but because these strict set of rules
link |
help us get really good results, right?
link |
And programmers, that's an easy sell for the most part
link |
because programmers are used to dealing
link |
with ridiculous systems of rules like constantly.
link |
That's basically their job.
link |
So they're very, oh yeah, super strict system of rules
link |
that lets me get what I want.
link |
That's programming, right?
link |
That's what Stack Overflow is, so.
link |
So you're making it sound easy,
link |
but in 2004, let's go back there.
link |
In 2004, you started the blog, Coding Horror.
link |
Was it called that at the very beginning?
link |
One of the smart things I did,
link |
it's from a book by Steve McConnell, Code Complete,
link |
which is one of my favorite programming books,
link |
still probably my number one programming book
link |
for anyone to read.
link |
One of the smart things I did back then,
link |
I don't always do smart things when I start stuff.
link |
I contacted Steve and said, hey, I really like this.
link |
It was a sidebar illustration,
link |
indicating danger in code, right?
link |
Coding Horror was like, watch out.
link |
And I love that illustration because it spoke to me.
link |
Because I saw that illustration go, oh my God,
link |
that's me, like I'm always my own worst enemy.
link |
Like that's the key insight in programming is,
link |
every time you write something,
link |
think how am I gonna screw myself?
link |
Because you will, constantly, right?
link |
So that icon was like, oh yeah,
link |
I need to constantly hold that mirror up and look
link |
and say, look, you're very fallible.
link |
You're gonna screw this up.
link |
Like how can you build this in such a way
link |
that you're not gonna screw it up later?
link |
Like how can you get that discipline around
link |
making sure at every step,
link |
I'm thinking through all the things that I could do wrong
link |
or that other people could do wrong.
link |
Cause that is actually how you get to be a better programmer
link |
a lot of times, right?
link |
So that sidebar illustration, I loved it so much.
link |
And I wrote Steve before I started my blog,
link |
and said, hey, can I have permission to use this?
link |
Cause I just really like this illustration.
link |
And Steve was kind enough to let me permission to do that
link |
and just continues to give me permission.
link |
Really, that's awesome.
link |
But in 2004, you started this blog.
link |
You know, you look at Stephen King's book on writing
link |
or Stephen Pressfield's War of Art book.
link |
I mean, it seems like writers suffer.
link |
I mean, it's a hard process of writing, right?
link |
There's a lot of, there's gonna be suffering.
link |
I mean, I won't kid you like,
link |
well, the work is suffering, right?
link |
Like doing the work, like even when you're every week,
link |
you're like, okay, that blog post wasn't very good
link |
or you know, people didn't like it
link |
or people said disparaging things about it.
link |
You have to like have the attitude is like, you know,
link |
no matter what happens, I want to do this for me, right?
link |
It's not about you, it's about me.
link |
I mean, in the end, it is about everyone
link |
because this is how good work gets out into the world.
link |
But you have to be pretty strict about saying like,
link |
you know, I'm selfish in the sense
link |
that I have to do this for me.
link |
You know, you mentioned Stephen King,
link |
like his book on writing,
link |
but like one of the things I do, for example,
link |
when writing is like, I read it out loud,
link |
one of the best pieces of advice for writing anything
link |
is read it out loud, like multiple times.
link |
And make it sound like you're talking
link |
because that is the goal of good writing.
link |
It should sound like you said it with,
link |
with slightly better phrasing
link |
because you have more time to think about what you're saying,
link |
but like, it should sound natural when you say it.
link |
And I think that's probably the single best writing advice
link |
I can give anyone.
link |
It's just, just read it over and over out loud,
link |
make sure it sounds like something you would normally say
link |
and it sounds good.
link |
And what's your process of writing?
link |
So there's usually a pretty good idea behind the blog post.
link |
So I think you gotta have the concept that
link |
there's so many interesting things in the world.
link |
Like, I mean, my God, the world is amazing, right?
link |
Like you could never write about everything that's going on
link |
because it's so incredible.
link |
But if you can't come up with like,
link |
let's say one interesting thing per day to talk about,
link |
then you're not trying hard enough
link |
because the world is full of just super interesting stuff.
link |
And one great way to like mine stuff
link |
is go back to old books
link |
because they bring up old stuff that's still super relevant.
link |
And I did that a lot
link |
because I was like reading classic programming books
link |
and a lot of the early blog posts were like,
link |
oh, I was reading this programming book
link |
and they brought this really cool concept
link |
and I want to talk about it some more.
link |
And you get the, I mean, you're not claiming credit
link |
for the idea, but it gives you something interesting
link |
to talk about that's kind of evergreen, right?
link |
Like you don't have to go, what should I talk about?
link |
So we'll just go dig up some old classic programming books
link |
and find something that, oh, wow, that's interesting.
link |
Or how does that apply today?
link |
Or what about X and Y or compare these two concepts?
link |
So pull a couple of sentences from that book
link |
and then sort of play off of it, almost agree or disagree.
link |
That so in 2007, you wrote that you were offered
link |
a significant amount of money to sell the blog.
link |
What were all the elements you were thinking about?
link |
Because I'd like to take you back.
link |
It seems like there's a lot of nonlinear decisions
link |
you made through life.
link |
So what was that decision like?
link |
Right, so one of the things I love
link |
is the Choose Your Own Adventure books,
link |
which I loved as a kid.
link |
And I feel like they're early programmer books
link |
because they're all about if then statements, right?
link |
If this then this, and they're also very, very unforgiving.
link |
Like there's all these sites that map
link |
the classic Choose Your Own Adventure books
link |
and how many outcomes are bad, a lot of bad outcomes.
link |
So part of the game is like, oh, I got an outcome.
link |
Go back one step, go back one further step.
link |
It's like, how did I get here, right?
link |
It's a sequence of decisions.
link |
And this is true of life, right?
link |
Like every decision is a sequence, right?
link |
Individually, any individual decision
link |
is not actually right or wrong,
link |
but they lead you down a path, right?
link |
So I do think there's some truth there.
link |
So this particular decision,
link |
the blogging I'm fairly popular.
link |
There's a lot of RSS readers that I discovered.
link |
And this guy contacted me out of the blue
link |
from this like bug tracking company.
link |
He's like, oh, I really want to buy your blog for like,
link |
I think it was around, it was $100,000,
link |
might've been like 80,000, but it was a lot, right?
link |
Like, and that's, you know, at the time,
link |
like I would have a year's worth of salary all at once.
link |
So I really think about like, well, you know,
link |
and I remember talking to people at the time,
link |
I was like, wow, that's a lot of money.
link |
But then the other thing, like I really like my blog, right?
link |
Like, do I want to sell my blog?
link |
Because it wouldn't really belong to me anymore
link |
And one of the guidelines that I like to,
link |
I don't like to give advice to people a lot,
link |
but one of the pieces of advice I do give,
link |
because I do think it's really true
link |
and it's generally helpful,
link |
is whenever you're looking at a set of decisions,
link |
like, oh gosh, should I do A, B or C?
link |
You got to pick the thing that's a little scarier
link |
in that list, because not, you know,
link |
not like jump off a cliff scary,
link |
but the thing that makes you nervous.
link |
Because if you pick the safe choice,
link |
it's usually you're not really pushing.
link |
You're not pushing yourself.
link |
You're not choosing the thing that's going to help you grow.
link |
So for me, the scarier choice was to say no.
link |
I was like, well, no, let's just see where this is going, right?
link |
Because then I own it.
link |
I mean, it belongs to me.
link |
And I can just take it
link |
and tell some other logical conclusion, right?
link |
Because imagine how different the world would have been
link |
had I said yes and sold the blog.
link |
It's like there probably wouldn't be Stack Overflow.
link |
You know, a lot of other stuff would have changed.
link |
So for that particular decision,
link |
I think it was that same rule,
link |
like what scares me a little bit more?
link |
Do the thing that scares you.
link |
I think there's a specific,
link |
some more general questions
link |
that a lot of people would be interested in.
link |
You've started Stack Overflow.
link |
You've started Discourse.
link |
So what's the, you know, one, two, three guys,
link |
whatever it is in the beginning.
link |
What was that process like?
link |
Do you start talking about it?
link |
Do you start programming?
link |
Do you start, like where is the birth
link |
and the catalyst that actually exists?
link |
Well, I can talk about it in the context
link |
of both Stack Overflow and Discourse.
link |
So I think the key thing initially is there is a problem.
link |
Something, there's some state of the world
link |
that's unsatisfactory to the point
link |
that like you're upset about it, right?
link |
Like in that case, it was experts exchange.
link |
I mean, Joel's original idea,
link |
cause I approached Joel's like, look, Joel,
link |
I have all this energy behind my blog.
link |
I want to do something.
link |
I want to build something, but I don't know what it is.
link |
Cause I'm not, I'm honestly not a good idea person.
link |
I'm like the execution guy.
link |
I'm really good at execution,
link |
but I'm not good at like blue skying ideas.
link |
Which is another reason why I like the community feedback.
link |
Cause they blue sky all day long for you, right?
link |
So when I can just go in and cherry pick a blue sky idea
link |
from community, even if I have to spend three hours reading
link |
to get one good idea, it's worth it, man.
link |
But anyway, so the idea from Joel was,
link |
hey, experts exchange, it's got great data,
link |
but the experience is hideous, right?
link |
It's, it's trying to trick you.
link |
It feels like you use car sales, but it's just bad.
link |
So I was like, oh, that's awesome.
link |
It feeds into community.
link |
It feeds into like, you know,
link |
we can make a creative commons.
link |
So I think the core is to have a really good idea
link |
that you feel very strongly about in the beginning,
link |
that like there's a wrong in the world that we will,
link |
an injustice that we will write
link |
through the process of building this thing.
link |
For discourse, it was like, look,
link |
there's no good software for communities
link |
to just hang out and like do stuff, right?
link |
Like whether it's problem solving, startup, whatever.
link |
Forms are such a great building block of online community
link |
and they're hideous.
link |
They were so bad, right?
link |
It was embarrassing.
link |
Like I literally was embarrassed to be associated
link |
with this software, right?
link |
I was like, we have to have software that you can be proud of.
link |
It's like, this is competitive with Reddit.
link |
This is competitive with Twitter.
link |
This is competitive with Facebook, right?
link |
I would be proud to have the software on my site.
link |
So that was the genesis of discourse,
link |
was feeling very strongly about their needs to be
link |
a good solution for communities.
link |
So that's step one, genesis funny idea
link |
you feel super strongly about, right?
link |
And then people galvanize around the idea.
link |
Like Joel was already super excited about the idea.
link |
I was excited about the idea.
link |
So with the forum software, I was posting on Twitter,
link |
I had researched, as part of my research,
link |
I start researching the problem, right?
link |
And I found a game called forum wars,
link |
which was a parody of forum.
link |
It's still very, very funny of like forum behavior
link |
a circle, like I would say 2003.
link |
It's age some, right?
link |
Like the behavior is a little different
link |
in the air of Twitter, but it was awesome.
link |
It was very funny and it was like a game,
link |
it was like an RPG and it had a forum attached to it.
link |
So it was like a game about forums with a forum attached.
link |
It was like, this is awesome, right?
link |
And the founder of that company or that project,
link |
it wasn't really a company,
link |
contacted me, this guy Robin Ward from Toronto.
link |
It's like, hey, you know, I saw you've been talking
link |
about forums and like, I really love that problem space.
link |
It's like, I'd still love to build really good forum software
link |
because I don't think anything out there is any good.
link |
And I was like, awesome.
link |
At that point, I was like, we're starting a company
link |
because like, I couldn't have wished for a better person
link |
to walk through the door and say,
link |
I'm excited about this too.
link |
Same thing with Joel, right?
link |
I mean, Joel is a legend in the industry, right?
link |
So when he walked through and said,
link |
I'm excited about this problem,
link |
I was like, me too, man, we can do this, right?
link |
So that to me is the most important step.
link |
It's like having an idea you're super excited about
link |
and another person, a co founder, right?
link |
Cause again, you get that dual leadership, right?
link |
Of like, am I making a bad decision?
link |
Sometimes it's nice to have checks of like,
link |
is this a good idea?
link |
I don't know, right?
link |
So those are the crucial seeds,
link |
but then starting to build stuff,
link |
whether it's you programming or somebody else.
link |
There is prototyping.
link |
So there's tons of research.
link |
There's tons of research, like what's out there that failed?
link |
Cause a lot of people look at it with successes.
link |
Oh, look at how successful X is.
link |
Everybody looks at the successes.
link |
Show me the failures.
link |
Cause that is what's interesting.
link |
That's where people were experimenting.
link |
That's where people were pushing,
link |
but they failed, but they probably failed for reasons
link |
that weren't directly about the quality of their idea, right?
link |
So look at all the failures.
link |
Don't just look what everybody looks at,
link |
which is like, oh gosh,
link |
look at all these successful people.
link |
Look at the failures.
link |
Look at the things that didn't work.
link |
Research the entire field.
link |
And so that's the research that I was doing
link |
that led me to Robin, right?
link |
And then when we, for example,
link |
when we did Stack Overflow,
link |
we're like, okay, well I really like elements
link |
of voting and digging Reddit.
link |
I like the Wikipedia, everything's up to date.
link |
Nothing is like an old tombstone
link |
that like has horrible out of date information.
link |
We know that works.
link |
Wikipedia is an amazing resource.
link |
Blogging the idea of ownership is so powerful, right?
link |
Like, oh, I Joe wrote this
link |
and look how good Joe's answer is, right?
link |
Like all these concepts were rolling together,
link |
researching all the things that were out there
link |
that were working and why they were working
link |
and trying to like fold them into that.
link |
Again, that Frankenstein's monster
link |
of what Stack Overflow is.
link |
And by the way, that wasn't a free decision
link |
because there's still a ton of tension
link |
in the Stack Overflow system.
link |
There's reasons people complain about Stack Overflow
link |
because it's so strict, right?
link |
Why is it so strict?
link |
Why are you guys always closing my questions?
link |
It's because there's so much tension
link |
that we built into the system
link |
around like trying to get good, good results
link |
out of the system and, you know, it's not a free.
link |
That stuff doesn't come for free, right?
link |
It's not like we all have perfect answers
link |
and nobody will have to get their feelings heard
link |
or nobody will have to get downvoted.
link |
Like it doesn't work that way, right?
link |
Like, so this is an interesting point
link |
and a small tangent.
link |
Yeah, you're right about anxiety.
link |
So I've posted a lot of questions
link |
and written answers on Stack Overflow.
link |
On the question side, usually go to something very specific
link |
to something I'm working on.
link |
This is something you talk about
link |
that really the goal of Stack Overflow
link |
isn't about, is to write a question not,
link |
that's not about you, it's about the question
link |
that will help the community in the future.
link |
Right, that's a tough sell, right?
link |
Because people are like, well, you know,
link |
I don't really care about the community.
link |
What I care about is my problem.
link |
And that's fair, right?
link |
It's sort of that, again, that tension,
link |
that balancing act.
link |
I want to help you,
link |
but we also want to help everybody that comes behind you.
link |
Right, the long line of people are gonna come up and say,
link |
oh, I kind of have that problem too, right?
link |
And if nobody's ever gonna come up
link |
and say I have this problem too,
link |
then that question shouldn't exist on Stack Overflow
link |
because the question is too specific.
link |
And even that's tension, right?
link |
How do you judge that?
link |
How do you know that nobody's ever gonna have
link |
this particular question again?
link |
So there's a lot of tension in the system.
link |
Do you think that anxiety of asking the question,
link |
the anxiety of answering that tension
link |
is inherent to programmers,
link |
is inherent to this kind of process?
link |
Or can it be improved?
link |
Can it be happy land where that tension
link |
is not quite so harsh?
link |
I don't think Stack Overflow
link |
can totally change the way it works.
link |
One thing they are working on, finally,
link |
is the ask page had not changed since 2011.
link |
I'm still kind of bitter about this
link |
because I feel like you have a Q&A system
link |
and one of the core pages in a Q&A system.
link |
Well, first of all, the question,
link |
all the answers and also the ask page,
link |
particularly when you're a new user
link |
or someone trying to ask a question,
link |
that's the point at which you need the most help.
link |
And we just didn't adapt with the times.
link |
But the good news is they're working on this
link |
from what I understand,
link |
and it's gonna be a more wizard based format.
link |
And you could envision a world
link |
where as part of this wizard based program,
link |
when you're asking a question,
link |
so okay, come up with a good title.
link |
What are good words to put in the title?
link |
One word that's not good to put in the title
link |
is problem, for example.
link |
Oh, you have a problem.
link |
Okay, a problem, that's great, right?
link |
Like, you need specifics, right?
link |
Like, so it's trying to help you
link |
make a good question title, for example.
link |
That step will be broken out, all that stuff.
link |
But one of those steps in that wizard of asking
link |
could say, hey, I'm a little nervous.
link |
You know, I've never done this before.
link |
Can you put me in a queue for like special mentoring, right?
link |
You could opt in to a special mentor.
link |
I think that would be fantastic.
link |
Like, I don't have any objection to that at all
link |
in terms of being an opt in system.
link |
Cause there are people that are like, you know,
link |
I just wanna help them.
link |
I wanna help a person no matter what.
link |
I wanna go above and beyond.
link |
I wanna spend like hours with this person.
link |
It depends what their goals are, right?
link |
It's a great idea.
link |
Who am I to judge, right?
link |
It's not precluded from happening.
link |
But there's a certain big city ethos
link |
that we started with of like, look, we're of New York City.
link |
You don't come to New York City and expect them to be,
link |
oh, welcome to the city, Joe.
link |
Let me show you around.
link |
That's not how New York City works, right?
link |
I mean, and you know, again, New York City
link |
is a reputation for being rude,
link |
which I actually don't think it is
link |
having been there fairly recently.
link |
People are just like going about their business, right?
link |
Like, look, I have things to do.
link |
I'm busy, I'm a busy professional, as are you.
link |
And since you're a busy professional,
link |
certainly when you ask a question,
link |
you're gonna ask the best possible question, right?
link |
Because you're a busy professional
link |
and you would not accept anything less
link |
than a very well went in question
link |
with a lot of detail about why you're doing it,
link |
what you're doing, what you researched,
link |
what you found, right?
link |
Cause you're a professional like me, right?
link |
And this rubs people sometimes the wrong way.
link |
And I don't think it's wrong to say,
link |
look, I don't want that experience.
link |
I want just a more chill place for beginners.
link |
And I still think Stack Overflow
link |
is not, was never designed for beginners, right?
link |
There's this misconception that, you know,
link |
even Joel says sometimes, oh yes,
link |
Stack Overflow for beginners.
link |
And I think if you're a prodigy, it can be.
link |
But that's not really representative, right?
link |
Like, I think as a beginner,
link |
you want a totally different set of tools.
link |
You want like live screen sharing, live chat.
link |
You want access to resources.
link |
You want a playground, like a playground
link |
you can experiment in and like test
link |
and all the stuff that we just don't give people
link |
because that was never really the audience
link |
that we were designing Stack Overflow for.
link |
That doesn't mean it's wrong.
link |
And I think it would be awesome
link |
if there was a site like that on the internet
link |
or if Stack Overflow said,
link |
hey, you know, we're going to start doing this.
link |
You know, I'm not there.
link |
I'm not making those decisions.
link |
But I do think the pressure or the tension
link |
that you described is there for people to be, look,
link |
I'm a little nervous
link |
cause I know I got to do my best work, right?
link |
The other one is something you talk about
link |
which is also really interesting to me
link |
is duplicate questions.
link |
Or it's a really difficult problem that you highlight.
link |
Like you could take one little topic
link |
and you could probably write 10, 20, 30 ways
link |
of asking about that topic and there will be all different.
link |
I don't know if there should be one page
link |
that answers all of it.
link |
Is there a way that Stack Overflow can help
link |
disambiguate, like separate these duplicate questions
link |
or connect them together?
link |
Or is it a totally hopeless, difficult, impossible task?
link |
I think it's a very, very hard computer science problem.
link |
And partly cause people are very good
link |
at using completely different words.
link |
It always amazed me on Stack Overflow,
link |
you'd have two questions that were functionally identical.
link |
And one question had like zero words in common
link |
with the other question.
link |
Like, oh my God, from a computer science perspective,
link |
how do you even begin to solve that?
link |
And it happens all the time.
link |
People are super good at this, right?
link |
Accidentally at asking the same thing
link |
in like 10, 20 different ways.
link |
And the other complexities,
link |
we want some of those duplicates to exist
link |
because if there's five versions with different words,
link |
have those five versions point
link |
to the one centralized answer, right?
link |
It's like, okay, this is duplicate, no worries.
link |
Here's the answer that you wanted over here
link |
on this, the prime example that we wanna have,
link |
rather than having 10 copies of the question
link |
Because if you have 10 copies of the question answer,
link |
this also devalues the reputation system,
link |
which programmers hate, as I previously mentioned.
link |
You're getting reputation for an answer
link |
that somebody else already gave.
link |
It's like, well, it's an answer,
link |
but somebody else already gave that answer.
link |
So why are you getting reputation for the same answer
link |
as the other guy who gave it four years ago?
link |
People get offended by that, right?
link |
So the reputation system itself adds tension to the system.
link |
In that the people who have a lot of reputation
link |
become very incentivized to enforce the reputation system.
link |
And for the most part, this good.
link |
I know it sounds weird, but for most parts like,
link |
look, strict systems, I think to use Stack Overflow,
link |
you have to have the idea that, okay,
link |
strict systems ultimately work better.
link |
And I do think in programming, you're familiar
link |
with loose typing versus strict typing, right?
link |
The idea that you can declare a variable,
link |
not declare a variable, rather,
link |
just start using a variable and, okay,
link |
I see it's implicitly an integer, bam, awesome.
link |
Well, duck is now an integer of five, right?
link |
And you're like, cool, awesome, simpler, right?
link |
Why would I want to worry about typing?
link |
And for a long time, like in the Ruby community,
link |
they're like, yeah, this is awesome.
link |
Like you just do a bunch of unit testing,
link |
which is testing your program's validity after the fact
link |
to catch any bugs that strict typing of variables
link |
would have caught.
link |
And now you have this thing called TypeScript
link |
from Microsoft, from the guy who built C Sharp Anders,
link |
who's one of the greatest minds in software development,
link |
right, like in terms of language design,
link |
and says, no, no, no, we want to bolt on
link |
a strict type system to JavaScript
link |
because it makes things better.
link |
And now everybody's like, oh my God,
link |
we deployed TypeScript and found 50 lane bugs
link |
that we didn't know about, right?
link |
Like this is super common.
link |
So I think there is a truth in programming
link |
that strictness, it's not the goal.
link |
We're not saying be super strict
link |
because strictness is correct.
link |
No, it's no, no, strictness produces better results.
link |
That's what I'm saying, right?
link |
So strict typing of variables,
link |
I would say you almost universally have consensus now
link |
is basically correct.
link |
Should be that way in every language, right?
link |
Duck equals five should generate an error
link |
because no, you didn't declare,
link |
you didn't tell me that duck was an integer, right?
link |
That's a bug, right?
link |
Or maybe you mistyped, you typed duck, right?
link |
Instead of duck, right?
link |
You never know, this happens all the time, right?
link |
So with that in mind, I will say that the strictness
link |
of the system is correct.
link |
Now, that doesn't mean cruel, that doesn't mean mean,
link |
that doesn't mean angry, it just means strict, okay?
link |
So I think where there's misunderstanding
link |
is in people get cranky, right?
link |
Like another question you asked is like,
link |
why are programmers kind of mean sometimes?
link |
Well, who do programmers work with all day long?
link |
So I have a theory that if you're at a job
link |
and you work with assholes all day long,
link |
what do you eventually become?
link |
An asshole, and what is the computer
link |
except the world's biggest asshole?
link |
Because the computer has no time for your bullshit.
link |
The computer, the minute you make a mistake,
link |
everything is crashing down, right?
link |
One semicolon has crashed space missions, right?
link |
So you begin to internalize that.
link |
You begin to think, oh, my coworker, the computer,
link |
is super strict and kind of a jerk about everything.
link |
So that's kind of how I'm gonna be
link |
because I work with this computer
link |
and I have to exceed to its terms on everything.
link |
So therefore, you start to absorb that
link |
and you start to think, oh, well, being really strict
link |
arbitrarily is really good.
link |
An error code 56249 is a completely good error message
link |
because that's what the computer gave me, right?
link |
So you kind of forget to be a person at some level.
link |
And you know how they say great detectives
link |
internalize criminals and kind of arc criminals themselves
link |
like this trope of the master detective is good
link |
because you can think like the criminal.
link |
Well, I do think that's true of programmers.
link |
Really good programmers think like the computer
link |
because that's their job.
link |
But if you internalize it too much, you become the computer
link |
and you kind of become a jerk to everybody
link |
because that's what you've internalized.
link |
You're almost not a jerk,
link |
but you have no patience for lack of strictness,
link |
It's not out of a sense of meanness.
link |
but I do believe it's an occupational hazard
link |
or being a programmer is you start to behave
link |
like the computer.
link |
You're very unforgiving, you're very terse,
link |
you're very, oh, wrong, incorrect, move on.
link |
It's like, well, can you help me?
link |
Like what could I do to fix?
link |
No, wrong, next question, right?
link |
Like that's normal for the computer, right?
link |
Just fail next, right?
link |
Like, I don't know if you remember in Saturday Night Live,
link |
like in the nineties, they had this character
link |
who was an IT guy, the move guy, move.
link |
Was that Jimmy Fallon?
link |
No, no, who played him?
link |
Okay, yeah, I remember move.
link |
Right, he had no patience for him.
link |
Might have been mad TV actually.
link |
Oh, was it mad TV?
link |
Might have been, might have been.
link |
But anyway, that's always been the perception, right?
link |
You start to behave like the computer.
link |
It's like, oh, you're wrong out of the way, you know?
link |
You've written so many blog posts about programming,
link |
about programs, programming, programmers.
link |
What do you think makes a good,
link |
let's start with, what makes a good solo programmer?
link |
Well, I don't think you should be a solo programmer.
link |
I think to be a good solo programmer,
link |
it's kind of like what I talked about, well, not on mic,
link |
but one of the things, John Carmack,
link |
one of the best points he makes in the book,
link |
Masters of Doom, which is a fantastic book,
link |
and anybody listening to this who hasn't read it,
link |
please read it, it's such a great book,
link |
is that at the time they were working on stuff
link |
like Wolfenstein and Doom,
link |
like they didn't have the resources that we have today.
link |
They didn't have Stack Overflow,
link |
they didn't have Wikipedia,
link |
they didn't have like discourse forums,
link |
they didn't have places to go
link |
to get people to help them, right?
link |
They had to work on their own,
link |
and that's why it took a genius like Carmack to do this stuff,
link |
because you had to be a genius
link |
to invent from First Pensibles,
link |
a lot of the stuff he was like,
link |
the hacks he was coming up with were genius, right?
link |
Genius level stuff, but you don't need
link |
to be a genius anymore,
link |
and that means not working by yourself.
link |
You have to be good at researching stuff online,
link |
you have to be good at asking questions,
link |
really good questions that are really well researched,
link |
which implies, oh, I went out and researched
link |
for three hours before I wrote these questions,
link |
like that's what you should be doing,
link |
because that's what's gonna make you good, right?
link |
To me, this is the big difference between programming
link |
in like the 80s versus programming today,
link |
is like you kind of had to be by yourself back then,
link |
like where would you go for answers?
link |
I remember in the early days
link |
when I was learning Visual Basic for Windows,
link |
like I would call the Microsoft Helpline on the phone
link |
when I had like program,
link |
because I was like, I don't know what to do.
link |
So I would like go and call,
link |
and they had these huge phone banks,
link |
and like, can you imagine how alien that is now?
link |
Like who would do that, right?
link |
Like that's crazy.
link |
So there was just nowhere else to go when you got stuck,
link |
Like I had the books that came with it,
link |
I read those, studied those religiously.
link |
I just saw a post from Steve Sinovsky that said,
link |
this C++ version seven came with like 10,000 pages
link |
of written material,
link |
because where else were you gonna figure that stuff out?
link |
You didn't go to the library?
link |
I mean, you didn't have Wikipedia,
link |
you didn't have Reddit,
link |
you didn't have anywhere to go to answer these questions.
link |
So you've talked about through the years,
link |
basically not having an ego
link |
and not thinking that you're the best programmer
link |
and so always kind of just looking to improve,
link |
to become a better programmer than you were yesterday.
link |
So how have you changed as a programmer
link |
and as a thinker designer around programming
link |
over the past 15 years,
link |
really of being a public figure?
link |
I would say the big insight that I had
link |
is eventually as a programmer,
link |
you have to kind of stop writing code to be effective,
link |
which is kind of disturbing,
link |
because you really love it.
link |
But you realize like being effective at programming
link |
in the general sense doesn't mean writing code.
link |
And a lot of times you can be much more successful
link |
by not writing code and writing code
link |
in terms of just solving the problems you have,
link |
essentially hiring people that are really good
link |
and like setting them free
link |
and like giving them basic direction, right?
link |
Like on strategy and stuff,
link |
because a lot of the problems you encounter
link |
aren't necessarily solved to like really gnarly code,
link |
they're solved by conceptual solutions,
link |
which can then be turned into code,
link |
but are you even solving the right problem?
link |
I mean, so I would say for me,
link |
the main insight I have is to succeed as a programmer,
link |
you eventually kind of stop writing code.
link |
That's gonna sound discouraging,
link |
probably to people hearing, but I don't mean it that way.
link |
What I mean is that you're coding in a higher level language.
link |
Eventually like, okay,
link |
so we're coding in assembly language, right?
link |
That's the beginning, right?
link |
You're hard coded to the architecture.
link |
Then you have stuff like C,
link |
where it's like, wow, we can abstract
link |
across the architecture, you can write code.
link |
I can then compile that code for ARM or whatever,
link |
XA6 or whatever else is out there.
link |
And then even higher level NAT, right?
link |
Like you're looking at like Python, Ruby,
link |
interpreted languages.
link |
And then to me as a programmer, like, okay,
link |
I wanna go even higher.
link |
I wanna go higher than that.
link |
How do I abstract higher than language?
link |
It's like, well, you abstract in spoken language
link |
and written language, right?
link |
Like you're sort of inspiring people to get things done,
link |
giving them guidance, like, what if we did this?
link |
What if we did this?
link |
You're writing in the highest level language that there is,
link |
which is for me English, right?
link |
Whatever your spoken language is.
link |
So it's all about being effective, right?
link |
And I think Patrick McKenzie,
link |
patio 11 on Hacker News and Works at Stripe,
link |
has a great post about this,
link |
of how calling yourself a programmer
link |
is a career limiting move at some level.
link |
Once you get far enough from your career.
link |
And I really believe that.
link |
And again, I apologize, this is sound discouraging.
link |
I don't mean it to be, but he's so right.
link |
Because all the stuff that goes on around the code,
link |
like the people, like that's another thing.
link |
If you look at my early blog interviews, it was about,
link |
wow, programming is about people more than it's about code,
link |
which doesn't really make sense, right?
link |
But it's about, can these people even get along together?
link |
Can they understand each other?
link |
Can you even explain to me what it is you're working on?
link |
Are you solving the right problem?
link |
People wear it, right? Another classic programming book,
link |
which again, up there with code complete,
link |
please read people wear.
link |
It's that software is people, right?
link |
People are the software first and foremost.
link |
So a lot of the skills that I was working on
link |
early in the blog were about
link |
figuring out the people parts of programming,
link |
which was the harder parts.
link |
The hard part of programming,
link |
once you get to certain skill level programming,
link |
you can pretty much solve any reasonable problem
link |
that's put in front of you.
link |
You're not writing algorithms from scratch, right?
link |
That just doesn't happen.
link |
So any sort of reasonable problem
link |
put in front of you, you're gonna be able to solve.
link |
But what you can't solve is,
link |
our manager is a total jerk.
link |
You cannot solve that with code.
link |
That is not a code solvable problem.
link |
And yet that will cripple you way more than,
link |
oh, we had to use this stupid framework I don't like,
link |
or Sam keeps writing bad code that I hate,
link |
or Dave is off there in the wilderness,
link |
writing God knows what, right?
link |
These are not your problems.
link |
Your problem is your manager or a coworker
link |
is so toxic to everybody else in your team
link |
that nobody can get anything done
link |
because everybody's so stressed out and freaked out, right?
link |
These are the problems that you have to attack.
link |
And so as you go to these higher level abstractions
link |
as you've developed as a programmer
link |
to higher, higher level abstractions
link |
and go into natural language,
link |
you're also the guy who kind of preached,
link |
building it, diving in and doing it,
link |
and like learn by doing.
link |
Do you worry that as you get to higher,
link |
higher level abstractions,
link |
that you lose track of the lower level of just building
link |
is like, do you worry about that?
link |
Not maybe now, but 10 years from now, 20 years from now?
link |
I mean, there is always that paranoia
link |
and oh gosh, I don't feel it's valuable
link |
since I'm not writing code.
link |
But for me, when we started the discourse project,
link |
it was Ruby, which I didn't really know Ruby.
link |
I mean, as you pointed out,
link |
and this is another valuable abstract from Stack Overflow,
link |
you can be super proficient at, for example, C Sharp,
link |
which I was working in,
link |
that's what we built Stack Overflow
link |
and then still is written in.
link |
And then switched to Ruby and you're a newbie again, right?
link |
But you have the framework.
link |
I know what a for loop is.
link |
I know what recursion is.
link |
I know what a stack trace is, right?
link |
Like I have all the fundamental concepts
link |
to be a programmer, I just don't know Ruby.
link |
So I'm still on a higher level.
link |
I'm not like a beginner beginner, like you're saying.
link |
I'm just like, I need to apply my programming concepts
link |
I already know to Ruby.
link |
Well, so there's a question that's really interesting.
link |
So looking at Ruby, how do you go about learning enough
link |
that your intuition can be applied?
link |
Well, that's the thing, that's what I was trying to get to
link |
is like what I realized,
link |
particularly when I started with just me and Robin,
link |
I realized if I bother Robin,
link |
I am now costing us productivity, right?
link |
Every time I go to Robin, rather than building
link |
the our first alpha version of discourse,
link |
he's now answering my stupid questions about Ruby.
link |
Is that a good use of his time?
link |
Is that a good use of my time?
link |
The answer to both of those was resoundingly no, right?
link |
Like we were getting to an alpha
link |
and it was pretty much like, okay,
link |
we'll hire more programmers, right?
link |
Like we eventually hired Neil
link |
and then eventually Sam, who came in as a cofounder.
link |
Actually it was Sam first, then Neil later.
link |
But the answer to the problem
link |
is just hire other competent programmers.
link |
It's not like teach, now I shall pull myself up
link |
by my bootstraps and learn Ruby.
link |
But at some point writing code becomes a liability to you
link |
in terms of getting things done.
link |
There's so many other things that go on in the project,
link |
like building the prototype.
link |
Like you mentioned like, well, how do you,
link |
if you're not writing code,
link |
how does everybody keep focus on like what are we building?
link |
Well, first basic mockups and research, right?
link |
Like what do we even want to build?
link |
There's a little bit of that that goes on.
link |
But then very quickly you get to the prototype stage.
link |
Like build a prototype,
link |
let's iterate on the prototype really, really rapidly.
link |
And that's what we do with discourse.
link |
And that's what we demoed to get our seed funding
link |
for discourse was the alpha version of discourse
link |
that we had running and ready to go.
link |
And it was very, it was bad.
link |
I mean, it was, I'll just tell you it was bad.
link |
I have, we have screenshots of it
link |
and I'm just like embarrassed to look at it now.
link |
But it was the prototype.
link |
We were figuring out like what's working,
link |
what's not working.
link |
Cause there's such a broad gap between,
link |
between the way you think things will work in your mind
link |
or even on paper and the way they work
link |
once you sit and live in the software,
link |
like actually spend time living and breathing on software
link |
So my philosophy is get to a prototype
link |
and then what you're really optimizing
link |
for a speed of iteration,
link |
like how you can turn the crank,
link |
how quickly can we iterate?
link |
That's the absolutely critical metric
link |
of any software project.
link |
And I had a tweet recently that people liked
link |
and I totally, this is so fundamental to what I do,
link |
is like, if you want to measure the core competency
link |
of any software tech company,
link |
it's the speed at which somebody can say,
link |
hey, we really need this word
link |
and the product changed to this word, right?
link |
Because it will be more clear to the users,
link |
like what, like instead of respond, it's reply or something.
link |
But there's some, from the conception of that idea
link |
to how quickly that single word can be changed
link |
in your software and rolled out to users,
link |
that is your life cycle.
link |
That's your health, your, your heartbeat.
link |
If your heartbeat is like super slow,
link |
you're basically dead.
link |
No, seriously, like if it takes two weeks
link |
or even a month to get that single word changed,
link |
that was like, oh my God, this is a great idea.
link |
That word is so much clearer.
link |
I'm talking about like a super,
link |
like everybody's on board for this change.
link |
It's not like let's just change a word because we're bored.
link |
It's like, this is an awesome change.
link |
And then it takes a month to roll out.
link |
It's like, well, you're dead.
link |
Like you can't iterate.
link |
You can't, how you can do anything, right?
link |
Like, so anyway, about the heartbeat,
link |
it's like get the prototype and then iterate on it.
link |
That's what I view as like the central tenet
link |
of some modern software development.
link |
That's fascinating that you put it that way.
link |
It's actually, so I work in, I build autonomous vehicles
link |
and when you look at what maybe compare Tesla
link |
to most other automakers, the psych,
link |
the whatever the heartbeat for Tesla is literally days.
link |
Now, in terms of they can over the air
link |
deploy software updates to all their vehicles,
link |
which is markedly different than every other automaker,
link |
which takes years to update a piece of software.
link |
And so, and that's reflected in everything
link |
that's the final product that's reflected
link |
in really how slowly they adapt to the times.
link |
And to be clear, I'm not saying being a hummingbird
link |
is the goal either.
link |
It's like, you don't want a heartbeat that's like so fast.
link |
It's like, you're just freaking out.
link |
But like, it is a measure of health.
link |
You should have a healthy heartbeat.
link |
It's up to, for people listening to decide what that means,
link |
but it has to be healthy.
link |
It has to be reasonable
link |
because otherwise you're just gonna be frustrated
link |
because like that's how you build software.
link |
You make mistakes, you roll it out, you live with it.
link |
You see what it feels like and say,
link |
oh God, that was a terrible idea.
link |
Oh my gosh, this could be even better if we did why, right?
link |
You turn the crank and then the more you do that,
link |
the faster you get ahead of your competitors ultimately
link |
because it's rate of change, right?
link |
How fast are you moving?
link |
Well, within a year, you're gonna be miles away
link |
by the time they catch up with you, right?
link |
Like that's the way it works.
link |
And plus users, like as a software developer,
link |
I love software that's constantly changing
link |
because I don't understand people who get super pissed off
link |
when like, oh, they changed the software on me.
link |
Yes, change the software, change it all the time, man.
link |
That's what makes this stuff great
link |
is that it can be changed so rapidly
link |
and become something that is greater than it is now.
link |
Now granted, there's some changes that suck, I admit.
link |
I've seen it many times.
link |
But in general, it's like, that's what makes software cool,
link |
right, is that it is so malleable.
link |
Like fighting that is like weird to me
link |
because it's like, well, you're fighting
link |
the essence of the thing that you're building.
link |
Like that doesn't make sense.
link |
You wanna really embrace that, not to be a hummingbird,
link |
but like embrace it to a healthy cycle of your heartbeat, right?
link |
So you talk about that people really don't change.
link |
It's true, that's why probably a lot of the stuff
link |
you write about in your blog probably will remain true.
link |
Well, there's a flip side of the coin, people don't change.
link |
So investing and understanding people
link |
is like learning Unix in 1970
link |
because nothing has changed, right?
link |
Like all those things you've learned about people
link |
will still be valid 34 years from now.
link |
Whereas if you learn the latest JavaScript framework,
link |
that's gonna be good for like two years, right?
link |
So, but if you look at the future of programming,
link |
so there's a people component,
link |
but there's also the technology itself.
link |
Do you, what do you see as the future of programming?
link |
Will it change significantly?
link |
Or as far as you can tell,
link |
people are ultimately programming and so it will not,
link |
it's not something that you foresee changing
link |
in any fundamental way.
link |
Well, you gotta go look back on sort of the basics of programming.
link |
And one of the things that always shocked me
link |
is like source control.
link |
Like I didn't learn anything about source control.
link |
And I graduated from college in 1992,
link |
but I remember hearing from people
link |
like as late as like 1998, 1999,
link |
like even maybe today they're not learning source control.
link |
And to me it's like, well, how can you not learn source control?
link |
That is so fundamental to working with other programmers,
link |
working in a way that you don't lose your work.
link |
Like just basic soft, the bed,
link |
literal bedrock software development is source control.
link |
Now you compare today like GitHub, right?
link |
Like Microsoft brought GitHub, which I think was
link |
an incredibly smart acquisition move on their part.
link |
Now they have anybody who wants like reasonable source controls
link |
and go sign up on GitHub, it's all set up for you, right?
link |
There's tons of walkthroughs, tons of tutorials.
link |
So from the concept of like has programming advanced
link |
from say 1999, it's like, well, hell, we have GitHub.
link |
I mean, my God, yes, right?
link |
Like it's massively advanced over what it was.
link |
Now as to whether programming is significantly different,
link |
I'm gonna say no, but I think the baseline of like
link |
what we view as like fundamentals
link |
will continue to go up and actually get better.
link |
Like source control, for example,
link |
that's one of the fundamentals that has gotten,
link |
I mean, hundreds of orders of magnitude better
link |
than it was 10, 20 years ago, right?
link |
So those are the fundamentals.
link |
Let me introduce two things that maybe you can comment on.
link |
So one is mobile phones.
link |
So that could fundamentally transform what programming is,
link |
or maybe not, maybe you can comment on that.
link |
And the other one is artificial intelligence.
link |
Which promises to in some ways
link |
to do some of the programming for you
link |
is one way to think about it.
link |
So it's really what a programmer is,
link |
is using the intelligence that's inside your skull
link |
to do something useful.
link |
The hope with artificial intelligence is that
link |
it does some of the useful parts for you
link |
the way you don't have to think about it.
link |
So do you see smartphones,
link |
the fact that everybody has one
link |
and they're getting more and more powerful
link |
as potentially changing programming?
link |
And do you see AI as potentially changing programming?
link |
Oh, okay, so that's good.
link |
So smartphones have definitely changed.
link |
I mean, since, you know, I guess 2010
link |
is when they really started getting super popular.
link |
I mean, in the last eight years,
link |
the world has literally changed, right?
link |
Like everybody carries a computer around and that's normal.
link |
I mean, that is such a huge change in society.
link |
I think we're still dealing
link |
with a lot of the positive negative ramifications of that,
link |
Like everybody's connected all the time.
link |
Everybody's on the computer all the time.
link |
That was my dream world as a geek, right?
link |
But it's like, be careful what you ask for, right?
link |
Like, wow, now everybody has a computer
link |
and it's not quite the utopia that we thought it would be,
link |
Computers can be used for a lot of stuff
link |
that's not necessarily great.
link |
So to me, that's the central focus of the smartphone
link |
is just that it puts a computer in front of everyone,
link |
granted a small touch screen,
link |
smallish touch screen computer.
link |
But as for programming, like, I don't know,
link |
I don't think that I've kind of over time come to subscribe
link |
to the UNIX view of the world when it comes to programming.
link |
It's like, you wanna teach these basic command line things
link |
and that is just what programming is gonna be for,
link |
I think a long, long time.
link |
I don't think there's any magical, like visual programming
link |
that's gonna happen.
link |
I just, I don't know.
link |
I've over time have become a believer
link |
in that UNIX philosophy of just, you know,
link |
they kind of had a right with UNIX.
link |
That's gonna be the way it is for a long, long time.
link |
And we'll continue to, like I said, raise the baseline.
link |
The tools will get better, it'll get simpler,
link |
but it's still fundamentally gonna be command line tools,
link |
you know, fancy IDEs.
link |
That's kind of it for the foreseeable future.
link |
I'm not seeing any visual programming stuff on the horizon.
link |
Cause you kind of think like,
link |
what do you do on a smartphone
link |
that will be directly analogous to programming?
link |
Like I'm trying to think, right?
link |
Like, and there's really not much.
link |
So not necessarily analogous to programming,
link |
but the kind of things that,
link |
the kind of programs you need to write
link |
might need to be very different.
link |
And the kind of languages, I mean,
link |
but I probably also subscribed to the same,
link |
just because everything in this world
link |
might be written in JavaScript.
link |
Oh yeah, that's definitely, that's already happening.
link |
I mean, discourse is a bet on,
link |
discourse is itself, JavaScript is another bet
link |
on that side of the table.
link |
And I still try and believe in that.
link |
So I would say smartphones have mostly a cultural shift,
link |
more than a programming shift.
link |
Now your other question was about artificial intelligence
link |
and like, sort of advice is predicting
link |
what you're gonna do.
link |
And I do think there's some strength to that.
link |
I think artificial intelligence
link |
kind of overselling it in terms of what it's doing.
link |
It's more like, people are predictable, right?
link |
People do the same things.
link |
Like, let me give you an example.
link |
One check we put into a discourse
link |
that's in a lot of big commercial websites is,
link |
say you log in from New York City now,
link |
and then an hour later, you log in from San Francisco.
link |
It's like, well, hmm, that's interesting.
link |
How did you get from New York to San Francisco in one hour?
link |
So at that point, you're like, okay,
link |
this is a suspicious login at that point.
link |
So we would alert you.
link |
It's like, okay, but that's not AI, right?
link |
That's just heuristic of like,
link |
how did you in one hour get 2,000 miles, right?
link |
That doesn't mean, maybe you're on a VPN,
link |
there's other ways to happen.
link |
But that's just a basic prediction based on the idea
link |
that people pretty much don't move around that much.
link |
Like they may travel occasionally,
link |
but like nobody, I mean, unless you're a traveling salesman
link |
that's literally traveling the world every day,
link |
like there's so much repetition and predictability
link |
in terms of things you're going to do.
link |
And I think good software anticipates your needs.
link |
Like for example, Google, I think it's called Google Now
link |
or whatever that Google thing is that predicts your commute
link |
and predicts based on your phone location,
link |
like where are you every day?
link |
Well, that's probably where you work, that kind of stuff.
link |
I do think computers can get a lot better at that,
link |
but I hesitate to call it like full blown AI.
link |
It's just computers getting better at like,
link |
first of all, they have a ton of data
link |
because everybody has a smartphone.
link |
Now, all of a sudden we have all this data
link |
that we didn't have before about location,
link |
about like, you know, communication
link |
and feeding that into some basic heuristics
link |
and maybe some fancy algorithms
link |
that turn it into predictions of anticipating your needs
link |
like a friend would, right?
link |
Like, oh, hey, I see your home,
link |
would you like some dinner, right?
link |
Like, let's go get some food
link |
because that's usually what we do this time of day, right?
link |
In the context of actually the active programming,
link |
do you see IDEs improving
link |
and making the life of programming is better?
link |
I do think that is possible
link |
because there's a lot of repetition in programming, right?
link |
Oh, you know, Clippy would be the bad example of,
link |
oh, I see, it looks like you're writing a for loop,
link |
but there are patterns in code, right?
link |
Like, and actually libraries are kind of like that, right?
link |
Like, rather than go, you know,
link |
code up your own HTTP request library,
link |
it's like, well, you'd use one of the existing ones
link |
that we have that's already a trouble shot, right?
link |
Like, it's not AI per se,
link |
it's just, you know, building better Lego bricks,
link |
bigger Lego bricks that have more functionality in them
link |
so people don't have to worry
link |
about the low level stuff as much anymore.
link |
Like WordPress, for example, to me is like,
link |
a tool for somebody who isn't a programmer to do something,
link |
I mean, you can turn WordPress into anything.
link |
It's kind of crazy actually through plugins, right?
link |
And that's not programming per se,
link |
it's just Lego bricks stacking WordPress elements, right?
link |
And a little bit of configuration glue.
link |
So I would say maybe in a broader sense,
link |
what I'm seeing like, there'll be more gluing
link |
and less like actual programming.
link |
And that's a good thing, right?
link |
Cause most of the stuff you need is kind of out there already.
link |
You said 1970s, Unix,
link |
do you see PHP and these kind of old remnants of, of the early birth
link |
of programming remaining with us for a long time?
link |
Like you said, Unix in itself, do you see ultimately,
link |
you know, this stuff's just being there out of momentum?
link |
I mean, I was a big believer in Windows early on
link |
and I was a big, you know, I was like,
link |
Unix, what a waste of time.
link |
But over time, I've completely flipped on that
link |
where I was like, okay, the Unix guys were right
link |
and pretty much Microsoft and Windows were kind of wrong,
link |
at least on the server side.
link |
And on the desktop, right, you need a GUI,
link |
you need a lot of stuff.
link |
And you have the two philosophies,
link |
like Apple built on Unix, effectively Darwin.
link |
And on the desktop, it's a slightly different story,
link |
but on the server side where you're going to be programming.
link |
Now it's a question of where the programming is going to be.
link |
There's going to be a lot more like client side programming
link |
cause technically discourse is client side programming.
link |
The way you get discourse,
link |
we deliver a big ball of JavaScript,
link |
which is then executed locally.
link |
So we're really using a lot more local computing power.
link |
We'll still retrieve the data.
link |
Obviously, we have to display the posts
link |
on the screen and so forth,
link |
but in terms of like sorting and a lot of the basic stuff,
link |
we're using the host processor.
link |
But to the extent that a lot of programming
link |
is still going to be server side,
link |
I would say, yeah, the Unix philosophy definitely won.
link |
And there'll be different veneers over the Unix,
link |
but it's still, if you peel away one or two layers,
link |
it's going to be Unix for a long, I think, Unix one,
link |
I mean, so definitively.
link |
It's interesting to hear you say that
link |
because you've done so much excellent work
link |
on the Microsoft side in terms of backend development.
link |
So what's the future hold for Jeff Atwood?
link |
I mean, the discourse,
link |
continuing the discourse in trying to improve
link |
conversation on the web?
link |
Well, discourse is what I believe is a,
link |
and originally I called a five year project,
link |
but then really quickly revised that to a 10 year project.
link |
So we started in early 2013,
link |
that's when we launched the first version.
link |
So we're still, you know, five years in.
link |
This is the part where it starts getting good,
link |
like we have a good product on discourse.
link |
There's any project you built in software,
link |
it takes three years to build what you wanted to build anyway.
link |
Like V1 is going to be terrible, which it was,
link |
but you ship it anyway,
link |
because that's how you get better at stuff.
link |
It's about turning the crank.
link |
It's not about V1 being perfect,
link |
because that's ridiculous.
link |
It's about V1, then let's get really good at V1.1,
link |
1.2, 1.3, like how fast can we iterate?
link |
And I think we're iterating like crazy on discourse,
link |
the point that like it's a really good product now,
link |
we have serious momentum.
link |
And my original vision was,
link |
I want to be the WordPress of discussion,
link |
meaning if someone came to you and said,
link |
I want to start a blog,
link |
although the very question is kind of archaic now,
link |
it's like who actually blogs anymore.
link |
But I wanted the answer to that to be,
link |
it would be WordPress normally,
link |
because that's the obvious choice for blogging most of the time.
link |
But if someone said, hey, I want to,
link |
I need a group of people to get together and do something,
link |
the answer should be discourse, right?
link |
That should be the default answer for people.
link |
Cause it's open source, it's free,
link |
doesn't cost you anything, you control it, you can run it.
link |
Your minimum server cost for discourse
link |
is five bucks a month at this point.
link |
They actually got the VPS prices down,
link |
it used to be $10 a month for one gigabyte of RAM,
link |
which we are dependent,
link |
we have a kind of heavy stack,
link |
like there's a lot of stuff in discourse.
link |
You need Postgres, you need Redis,
link |
you need Ruby on Rails,
link |
you need a sidekick for scheduling.
link |
It's not a trivial amount of stuff,
link |
cause we were architected for like,
link |
look, we're building for the next 10 years.
link |
I don't care about shared PHP hosting,
link |
that's not my model.
link |
My idea is like, hey, you know,
link |
eventually this is going to be very cheap for everybody.
link |
And I want to build it right,
link |
using again, you know,
link |
higher, bigger building block levels, right?
link |
That have more requirements.
link |
And there's a WordPress model of WordPress.org,
link |
Is there a central hosting for discourse or no?
link |
There is, we're not strictly segmenting
link |
into the open source versus the commercial side.
link |
We have a hosting business,
link |
that's how discourse makes money,
link |
as we host discourse instances,
link |
and we have really close relationship
link |
with our customers of the symbiosis
link |
of them giving us feedback on the product.
link |
We definitely weight feedback from customers,
link |
a lot heavier than feedback from somebody
link |
who just wanders by and gives feedback.
link |
But that's where we make all our money,
link |
but we don't have a strict division.
link |
We encourage people to use discourse,
link |
like the whole point is that it's free, right?
link |
Anybody can set it up.
link |
I don't want to be the only person that hosts discourse,
link |
that's absolutely not the goal,
link |
but it is a primary way for us to build a business.
link |
And it's actually kind of a great business.
link |
I mean, the business is going really, really well
link |
in terms of hosting.
link |
So I used to work at Google Research,
link |
as a company that's basically funded on advertisements,
link |
so it's Facebook, let me ask if you can comment on it.
link |
I think advertisement at its best.
link |
So you'd be extremely critical on what ads are,
link |
but at its best, it's actually serving you,
link |
in a sense, it's giving you,
link |
it's connecting you to what you would want to explore.
link |
So it's like related posts or related content,
link |
it's the same, that's the best of advertisement.
link |
So discourse is connecting people based on their interests.
link |
It seems like a place where advertisement at its best
link |
could actually serve the users.
link |
Is that something that you're considering thinking about
link |
as a way to bring, to financially support the platform?
link |
That's interesting because I actually have
link |
a contrarian view of advertising,
link |
which I kind of agree with you.
link |
I recently installed Ad Blocker reluctantly
link |
because I don't like to do that,
link |
but the performance of the ads, man,
link |
they're so heavy now and it's just crazy.
link |
So it's almost like a performance argument
link |
more than I actually am pro ads,
link |
and I have a contrarian view point, I agree with you.
link |
If you do ads right, it's serving you stuff
link |
you would be interested in anyway.
link |
I don't mind that, that actually is kind of a good thing.
link |
So plus, I think it's rational to want to support
link |
the people that are doing this work,
link |
through seeing their ads,
link |
but that said, I run Ad Block now,
link |
which I didn't want to do,
link |
but I was convinced by all these articles,
link |
like 30, 40 megabytes of stuff just to serve you ads.
link |
Yeah, it feels like ads now are like the experts exchange
link |
of whenever you start to stack overflows.
link |
It's a little bit, it's overwhelming.
link |
Oh, there's so many companies in Adtech
link |
that what's embarrassing, like you can do that.
link |
Have you seen those logo charts of like just the whole page?
link |
It's like, you can't even see them, they're so small.
link |
There's so many companies in the space,
link |
but since you brought it up, I do want to point out
link |
that very, very few Discord sites actually run
link |
using an ad supported model.
link |
It's not effective.
link |
Like it's too diluted, it's too weird,
link |
it doesn't pay well, and like users hate it.
link |
So it's a combination of like users hate it,
link |
it doesn't actually work that well in practice.
link |
Like in theory, yes, I agree with you.
link |
Clean, fast ads that were exactly the stuff
link |
you would be interested in, awesome.
link |
We're so far from that though, right?
link |
Like, and Google does an okay job,
link |
they do retargeting and stuff like that,
link |
but in the real world,
link |
Discord sites rarely can make ads work.
link |
It just doesn't work for so many reasons.
link |
But you know what does work is subscriptions,
link |
Patreon, affiliate codes for like Amazon,
link |
of like just, oh, here's a cool YoYo click,
link |
and then you click and go to Amazon,
link |
they get a small percentage of that,
link |
which is fair, I think.
link |
I mean, because you saw the YoYo on that site,
link |
and you click through and you bought it, right?
link |
That's fair for them to get 5% of that
link |
or 2% of that, whatever it is.
link |
Those things definitely work.
link |
In fact, a site that I used to participate on a lot,
link |
I helped the owner.
link |
One of the things, I got them switched to Discord,
link |
I basically paid them to switch to Discord,
link |
because I was like, look, you guys gotta switch,
link |
I can't come here anymore on this terrible software.
link |
But I was like, look, and on top of that,
link |
like you're serving people ads that they hate,
link |
like you should just go full on Patreon,
link |
because he had a little bit of Patreon,
link |
go full on Patreon, do the Amazon affiliates thing
link |
for any Amazon links that get posted,
link |
and just do that, and just triple down on that stuff.
link |
And that's worked really well for them,
link |
and this creator in particular.
link |
So that stuff works, but traditional ads,
link |
I mean, definitely not working, at least on Discord.
link |
So last question, you've created the code keyboard.
link |
I've programmed most of my adult life
link |
in a Kinesis keyboard.
link |
I have one upstairs now.
link |
Can you describe what a mechanical keyboard is,
link |
and why is it something that makes you happy?
link |
Well, you know, this is another fetish item, really.
link |
Like, it's not required.
link |
You can do programming on any kind of keyboard, right?
link |
Even like an onscreen keyboard, oh God,
link |
that's terrifying, right?
link |
But you could, I mean, if you look back at the early days
link |
of computing, there were chiclet keyboards,
link |
which are, I mean, those are awful, right?
link |
But what's a chiclet keyboard?
link |
Oh God, okay, well, it's just like
link |
thin rubber membranes.
link |
Oh, the rubber ones, oh no.
link |
So it's a fetish item.
link |
All that really says is, look,
link |
I care really about keyboards,
link |
because the keyboard is the primary method
link |
of communication with the computer, right?
link |
So it's just like having a nice mic for this podcast.
link |
You want a nice keyboard, right?
link |
Because it has very tactile feel.
link |
I can tell exactly when I press the key.
link |
I get that little click, so oh, and it feels good.
link |
And it's also kind of a fetish item.
link |
It's like, wow, I care enough about programming
link |
that I care about the tool, the primary tool,
link |
that I use to communicate with the computer
link |
and make sure it's as good as it feels good to use for me.
link |
And like, I can be very productive with it.
link |
So to be honest, it's a little bit of a fetish item,
link |
It indicates that you're serious,
link |
it indicates you're interested.
link |
It indicates that you care about the fundamentals,
link |
because you know what makes you a good programmer?
link |
Being able to type really fast, right?
link |
Like, this is true, right?
link |
So a core skill is just being able to type fast enough
link |
to get your ideas out of your head into the code base.
link |
So just practicing your typing can make you a better programmer.
link |
It is also something that makes you,
link |
well, makes you enjoy typing, correct?
link |
The actual act, something about the process,
link |
like I play piano.
link |
There's a tactile feel that ultimately feeds the passion,
link |
Right, no, totally, that's it.
link |
I mean, and it's funny,
link |
because artisanal keyboards have exploded,
link |
like Mastrop has gone ballistic with this stuff.
link |
There's probably like 500 keyboard projects on Mastrop alone.
link |
And there's some other guy I follow on Twitter.
link |
I used to write for this, the site, the tech report,
link |
way back in the day.
link |
And he's like, every week he's just posting like,
link |
what I call keyboard porn of like, just cool keyboards.
link |
Oh my God, those look really cool, right?
link |
Like, that's like, how many keyboards this guy have, right?
link |
It's got like me with yoyos.
link |
How many yoyos do you have?
link |
How many do you need?
link |
Well, technically one, but I like a lot.
link |
So same thing with keyboards.
link |
So yeah, they're awesome.
link |
Like I highly recommend anybody who doesn't have a mechanical
link |
to research it, look into it,
link |
and see what you like.
link |
And you know, it's ultimately a fetish item,
link |
but I think these sort of items,
link |
these religious artifacts that we have
link |
are part of what make us human.
link |
Like that part's important, right?
link |
It's kind of what makes life worth living.
link |
Yeah, it's not necessary in the strictest sense,
link |
but ain't nothing necessary if you think about it, right?
link |
Like, so yeah, why not?
link |
Jeff, thank you so much for talking today.
link |
Yeah, you're welcome.
link |
Thanks for having me.