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
link |
project that seeks to improve the quality of our online
link |
community discussions.
link |
This conversation is part of the MIT course
link |
on artificial general 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 at Lex Friedman,
link |
And now, here's my conversation with Jeff Atwood.
link |
Having co created and managed for a few years
link |
the world's 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 like on your own almost.
link |
Although, nobody really 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 is
link |
what a lot of programming is.
link |
The computer's so fast that you can
link |
do things 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 problems.
link |
The struggle balance within the joy of overcoming,
link |
the brute force process of pain and suffering
link |
that eventually leads to something that actually works.
link |
Well, data's fun, too.
link |
There's this thing called the shuffling problem.
link |
The naive shuffle that most programmers write
link |
has a huge flaw, and there's a lot of articles
link |
online about this because it can be really bad
link |
if you're a casino and you have an unsophisticated programmer
link |
writing 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 Monty Hall 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
link |
switch in the Monty Hall problem, which is not intuitive,
link |
and it freaks people out all the time.
link |
But you can solve it with data.
link |
If you write a program that does the Monty Hall 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 and say, well,
link |
I know the answer is this because I ran the program
link |
a billion times, and these are the data buckets
link |
that I got from it.
link |
So empirically 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 managery stuff,
link |
which I always despised.
link |
As a programmer, you think of managers
link |
as people who don't really 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
link |
could by yourself anyway.
link |
You said language is code?
link |
Meaning communication with other humans?
link |
You can think of it as a systematic.
link |
So what is it like to be, what makes,
link |
before we get into programming, 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, sort of doing and being the things
link |
that you want to be.
link |
Now, this can be kind of exhausting,
link |
particularly when you have kids, because you
link |
realize that your kids are watching you all the time,
link |
even in ways that you've stopped seeing yourself.
link |
The hardest person to see on the planet is really yourself.
link |
It's a lot easier to see other people
link |
and make judgments about them.
link |
But yourself, 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 |
am I behaving in a way that represents
link |
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, like they make decisions that
link |
are like, wow, it's a bad example for other people.
link |
So I think leading by example is one.
link |
The other one I believe is working really hard.
link |
And I don't mean working exhaustively,
link |
but showing a real passion for the problem,
link |
not necessarily your solution to the problem,
link |
but the problem itself is just one that you really believe in.
link |
Like with discourse, for example,
link |
the problem that we're looking at,
link |
which is my current project, is how do you get people
link |
in groups to communicate in a way that doesn't break down
link |
into the howling of wolves?
link |
How do you deal with trolling?
link |
Not like technical problems.
link |
How 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
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?
link |
Maybe it's a discussion that doesn't really matter,
link |
but are people yelling at each other?
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,
link |
because the things you don't do
link |
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,
link |
how do you know both that the things you're doing
link |
are the wrong things to be doing,
link |
the way you speak to others, the way you behave,
link |
and the things you're not doing?
link |
How do you get that signal?
link |
I think there's two aspects to that.
link |
One is like processing feedback that you're getting, so.
link |
How do you get feedback?
link |
Well, right, so are you getting feedback, right?
link |
So one way we do it, for example, with discourse,
link |
we have three cofounders,
link |
and we periodically talk about decisions
link |
before we make them.
link |
So it's not like one person can make a mistake,
link |
or like, wow, there can be misunderstandings, things like that.
link |
So it's part of like group consensus of leadership
link |
is like it's good to have,
link |
I think systems where there's one leader,
link |
and that leader has the rule of absolute law
link |
are just really dangerous in my experience.
link |
For communities, for example,
link |
like if you have a community that's run by one person,
link |
that one person makes all the decisions,
link |
that person's gonna have a bad day.
link |
Something could happen to that person, something,
link |
there's a lot of variables.
link |
So like first, when you think about leadership,
link |
have multiple people doing leadership
link |
and have them talk amongst each other.
link |
So 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 wanna put it in your body.
link |
I think that voice is really important.
link |
Like I think most people who have any kind of moral compass
link |
or like want to do,
link |
most people want to do the right thing.
link |
I do believe that.
link |
I mean, there might be a handful of sociopaths
link |
out there that don't, but most people,
link |
they want other people to think of them as a good person.
link |
And why wouldn't you, right?
link |
Like, do you want people to despise you?
link |
I mean, that's just weird, right?
link |
So you have that little voice
link |
that sort of the angel and devil on your shoulder
link |
sort of talking to you about like 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 this is 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
link |
for a lot of developers,
link |
and especially when you have introverted personality.
link |
How do you struggle with a self criticism
link |
or the criticism of others?
link |
So one of the things of leadership
link |
is to do something that's potentially unpopular
link |
or where people doubt you
link |
and you still go through with the decision.
link |
So what's that balance like?
link |
I think you have to walk people
link |
through your decision making, right?
link |
Like you have to, this is where blogging
link |
is really important and communication is so important.
link |
Again, code language is just another kind of code.
link |
It's like, here is the program
link |
by which I arrived at the conclusion
link |
that I'm gonna reach, right?
link |
It's one thing to say like,
link |
this is a decision, it's final, deal with it, right?
link |
That's not usually satisfying to people.
link |
But if you say, look,
link |
we've been thinking about 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 wanna achieve.
link |
And we've looked at these options
link |
and we think this available options is the best option.
link |
People will be like, oh, okay, right?
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
link |
delivered from a cloud of flames in the sky, right?
link |
It's like a human trying to reach
link |
some kind of consensus about goals.
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,
link |
oh, well, the reason we don't agree
link |
is because we have totally different goals, right?
link |
Like, 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.
link |
So, or hard work, sorry.
link |
Well, those are tied together in my mind.
link |
Let's say hard work and passion.
link |
Like for me, like I just really love
link |
the problem discourse is setting out to solve
link |
because in a way it's like,
link |
there's a vision of the world
link |
where it all devolves into Facebook
link |
basically owning everything and every aspect
link |
of human communication, right?
link |
And this has always been kind of a scary world for me.
link |
First, cause I don't,
link |
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,
link |
Is that you talking about the company
link |
or just the mechanism of how Facebook works?
link |
Kind of both really, right?
link |
Like, and the idea with discourse,
link |
the reason I'm so passionate about it
link |
is cause I believe every community
link |
should have 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,
link |
they can move to different hosting or,
link |
you know, whatever they need to happen can happen.
link |
But like this idea of a company town
link |
where all human communication is implicitly owned
link |
by WhatsApp, Instagram, and Facebook.
link |
And it's really disturbing too,
link |
cause Facebook is really smart.
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, I don't know if you know,
link |
but they have this VPN software
link |
that they give away for free on smartphones
link |
and it indirectly feeds all the data
link |
about the traffic back to Facebook.
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.
link |
Can you talk about, can you lay out the land
link |
of all the different ways 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 a very structured
link |
Wiki style Q and 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
link |
and other things, but we quickly realized
link |
we were doing Q and A, which is a very narrow subset
link |
of human communication, right?
link |
Sorry, so when you started Stack Overflow,
link |
you thought you didn't even know the Q and A.
link |
You didn't know it would be Q and A.
link |
Well, we didn't know.
link |
We had an idea of like, okay, these are things
link |
that we see working online.
link |
We had a goal, right?
link |
Our goal was there was this site, Experts Exchange,
link |
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 |
when 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 and 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, this is the stuff that I know.
link |
And your reputation accrues to you
link |
and it's peer recognition.
link |
So you asked earlier, like what motivates programmers?
link |
I think peer recognition motivates them a lot.
link |
That was one of the key insights of Stack Overflow
link |
was like recognition from your peers is why things get done.
link |
Not necessarily 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 |
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
link |
for 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 |
Because there's usually more than one way to do it
link |
in programming, there's like say five to 10 ways.
link |
And one of the patterns we got into early on
link |
with Stack Overflow was there were questions
link |
where there would be like hundreds of answers.
link |
And we're like, wow, how can there be a programming question
link |
with 500, 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 such as
link |
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 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, did you know
link |
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 where you're like,
link |
okay, I have a problem.
link |
And I want to learn about stuff
link |
around this problem having, right?
link |
And it could be theory, it could be compiler theory,
link |
it could be other stuff, 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 when it grows up?
link |
Celebrating the 10 year anniversary, yeah.
link |
Yeah, so 10 years.
link |
And the system 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 that's not even programming.
link |
It's just a joke, right?
link |
It's related to programming.
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 mean, I empathize.
link |
Because it's not correct 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
link |
seeing the behavior that you're seeing.
link |
Here, let me teach you some things about how
link |
to avoid that in the future.
link |
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 |
So there's this very specific Q&A format.
link |
And then take me through the journey towards discourse
link |
and Facebook and Twitter.
link |
So you started at the beginning that Stack Overflow
link |
evolved to have a purpose.
link |
So what is discourse, this passion
link |
you have for creating community for discussion?
link |
When was that born and how?
link |
Well, part of it is based on the realization
link |
that Stack Overflow is only good for very specific subjects
link |
where 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 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 launched 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 lingering on
link |
in some form, but it was an experiment.
link |
This is like a test, right?
link |
And some subjects work super well on 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 |
Say I have this hand come up with some strategies
link |
It's more of a discussion around what's happening with LEGO.
link |
Same thing, here's 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 and discussions
link |
that don't fit at all.
link |
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.
link |
You have a real demonstrated problem that's
link |
blocking you in something.
link |
Nobody's blocked by, what should I
link |
do when I have a straight flush?
link |
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 |
discussion forum software was very, very bad.
link |
And when I came out of Stack Overflow in early 2012,
link |
it was still very, very bad.
link |
I expected it improved in the four years since I last looked,
link |
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 talking about things
link |
They're just communities of interest, right?
link |
And there's no good software for them.
link |
Startups would come to me and say, hey, Jeff,
link |
I want to have this startup.
link |
And the first thing I would say to them
link |
is, well, first, why are you asking me?
link |
I don't really know your field necessarily.
link |
Why aren't you asking the community,
link |
the people 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 |
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 |
It was stuff that I would be embarrassed
link |
to recommend to other people.
link |
And yet, that's where I felt they could get the biggest
link |
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,
link |
it has some of the most passionate
link |
and fascinating discussions.
link |
And what's the usual structure?
link |
There's usually, it's linear, so it's sequential.
link |
So you're posting one after the other
link |
and there's pagination, so it's every,
link |
there's 10 posts and then you go to the next page.
link |
And that format still is used by,
link |
like I'm, we're doing a lot of research
link |
with Tesla vehicles 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
link |
just any human that's related to another human, right?
link |
Like through friendship or any other reason.
link |
Facebook's idea of the world
link |
is sort of the status update, right?
link |
Like a friend of yours did something,
link |
ate at a restaurant, right?
link |
Whereas discussion forums were traditionally
link |
around the interest graph.
link |
Like I love electric cars,
link |
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 |
And 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 like for me, for example, there's yo yos, right?
link |
Like I'm into the yo yo communities.
link |
And these interest communities
link |
are just really fascinating to me.
link |
And I feel more connected to the yo yo 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,
link |
you can sign up for groups and stuff,
link |
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 a lot of stuff in the world
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
link |
that I'm interested in.
link |
So forums kind of unlock that, right?
link |
And you don't want a world
link |
where everything belongs 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 and Noble every Thursday
link |
and Barnes and Noble says, get out of here,
link |
you guys don't buy enough books.
link |
Well, you know, you're kind of hosed, right?
link |
Barnes and 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 and 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 the community.
link |
It's 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 Meta Stack Overflow,
link |
which is our internal, well, public community feedback site,
link |
and just experiencing what the users were experiencing,
link |
right, because they're the ones
link |
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,
link |
90% of the feedback you get is not really actionable
link |
for a variety of reasons.
link |
It might be bad feedback, 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 derive from Meta Stack Overflow feedback
link |
and Meta discourse, right?
link |
Same exact principle of discourse, you know?
link |
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,
link |
what have you learned about?
link |
What's the process of getting a critical mass of members
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 and then 10
link |
and a hundred and a thousand and so on?
link |
I think when you're starting with an N of one,
link |
I mean, I think it's persistence
link |
and also you have to be interesting.
link |
Like somebody I really admire once said something
link |
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,
link |
is like you have to have sort of something interesting
link |
to say that's not exactly what everybody else is saying
link |
and an interesting way of saying it,
link |
which is another way of saying,
link |
kind of entertaining way of saying it.
link |
And then as far as growing it, it's like ritual.
link |
You know, 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,
link |
and you have to stick to that schedule, right?
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
link |
about, this won't feel like work.
link |
You're like, I love this.
link |
I could talk about this all day, every day, right?
link |
You just have to do it in a way
link |
that's interesting to other people.
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,
link |
take this ball of energy from my blog and do something.
link |
And all the people reading my blog saw that.
link |
It's like, oh, cool.
link |
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 up 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,
link |
but I have no outlet to talk about it.
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 |
Because at the time I worked a place where,
link |
you know, programming wasn't the core output
link |
of the company, 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,
link |
and eventually built Stack Overflow
link |
from that one core of activity, right?
link |
But it was that repetition of feeding back in feedback
link |
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'll 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,
link |
waiting our feedback and what you're doing.
link |
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,
link |
look, 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 and A problem
link |
in a very specific way.
link |
Not cause 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 |
So 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, that's me.
link |
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 I'm thinking through
link |
all the things that I could do wrong
link |
or that other people could do wrong?
link |
Because that is actually how you get to be
link |
a better programmer 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 and said,
link |
hey, can I have permission to use this
link |
because I just really like this illustration?
link |
And Steve was kind enough to give me permission to do that
link |
and just continues to give me permission, so yeah.
link |
Really, that's awesome.
link |
But in 2004, you started this blog.
link |
You know, you look at Stephen King, his book on writing,
link |
or Stephen Pressfield, 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 gonna be suffering.
link |
I mean, I won't kid you.
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 people didn't like it or people said disparaging things
link |
You have to like have the attitude like, you know,
link |
no matter what happens, I wanna 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
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
link |
writing advice I can give anyone.
link |
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 |
See, there's usually a pretty good idea
link |
behind the blog post.
link |
So I think you gotta have the concept
link |
that there's so many interesting things in the world.
link |
Like, I mean, my God, the world is amazing, right?
link |
Like you can 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 |
cause they bring up old stuff that's still super relevant.
link |
And I did that a lot
link |
cause 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 wanna talk about it some more.
link |
And you get the, I mean,
link |
you're not claiming credit for the idea
link |
but it gives you something interesting to talk about
link |
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,
link |
almost agree or disagree.
link |
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 |
Cause 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 |
cause they're all about if then statements, right?
link |
If this, then this.
link |
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 a bad outcome.
link |
Go back one step, go back one further step.
link |
It's like, how did I get here, right?
link |
Like 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 necessarily right or wrong,
link |
but they lead you down a path, right?
link |
So I do think there's some truth to that.
link |
So this particular decision,
link |
the blog had gotten fairly popular.
link |
There's a lot of RSS readers that I had 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 wanna buy your blog
link |
for like, I think it was around,
link |
it was $100,000, it might have been like 80,000,
link |
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 didn't 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 I'm like, I really like my blog, right?
link |
Like, do I wanna sell my blog?
link |
Cause it wouldn't really belong to me anymore at that point.
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 |
cause I do think it's really true 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 gotta 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 |
Cause 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 gonna 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.
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 |
So speaking of which, startups.
link |
I think there's a specific, some more general questions
link |
that a lot of people would be interested in.
link |
You've started Stack Overflow.
link |
You started this course.
link |
So what's the, it was 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's the birth
link |
and the catalyst that actually.
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 that, like,
link |
you're upset about it, right?
link |
Like, in that case, it was experts exchange.
link |
I mean, Joel's original idea,
link |
because I approached Joel as like,
link |
look, Joel, I have all this energy behind my blog.
link |
I want to do something.
link |
I want to build something.
link |
But I don't know what it is,
link |
because 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 |
because they blue sky all day long for you, right?
link |
So when I can just go in and cherry pick
link |
a blue sky idea from community,
link |
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 trying to trick you.
link |
It feels like used car salesman.
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 creative comments.
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,
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 |
Forums 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
link |
to be associated 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 there needs to be
link |
a good solution for communities.
link |
So that's step one.
link |
Genesis of an idea 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 forum behavior,
link |
circa, I would say, 2003.
link |
It's aged some, right?
link |
Like, the behavior's a little different in there of Twitter.
link |
But it was awesome.
link |
It was very funny.
link |
And it was like a game.
link |
It was like an RPG.
link |
And it had a forum attached to it.
link |
So it was like a game about forums with a forum attached.
link |
I was like, this is awesome, right?
link |
And the founder of that company, or that project,
link |
it wasn't really a company, contacted me,
link |
this guy Robin Ward from Toronto.
link |
He said, hey, I saw you've been talking about forums.
link |
And I really love that problem space.
link |
He was like, I'd still love to build really good forum
link |
software, because I don't think anything out there's any good.
link |
And I was like, awesome.
link |
At that point, I was like, we're starting a company.
link |
Because I couldn't have whooshed for a better person
link |
to walk through the door and say, I'm excited about this,
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, I was like, me too, man.
link |
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 cofounder, right?
link |
Because again, you get that dual leadership, right?
link |
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's.
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 |
Because a lot of people look at the successes.
link |
Oh, look at how successful X is.
link |
Everybody looks at the successes.
link |
Show me the failures, because that is what's interesting.
link |
That's where people were experimenting.
link |
That's where people were pushing.
link |
And they failed, but they probably
link |
failed for reasons that weren't directly
link |
about the quality of their idea, right?
link |
So look at all the failures.
link |
Don't just look what everybody looks at, which is like, oh,
link |
gosh, 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, when we did Stack Overflow,
link |
we're like, okay, well, I really like elements
link |
of voting and dig and read it.
link |
I like the Wikipedia, everything's up to date.
link |
Nothing is like an old tombstone
link |
that 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 |
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 fold them into, again,
link |
that Frankenstein's monster 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 trying to get good, good results out of the system.
link |
And it's not a free.
link |
That stuff doesn't come for free, right?
link |
It's not like we, we all have perfect answers
link |
and nobody will have to get their feelings heard
link |
or nobody will have to get downvoted.
link |
It doesn't work that way, right?
link |
So this is an interesting point and a small tangent.
link |
You write about anxiety.
link |
So I've posted a lot of questions
link |
and written answers on Stack Overflow.
link |
On the question side, you usually go to
link |
something very specific to something I'm working on.
link |
And this is something you talk about
link |
that really the goal of Stack Overflow isn't about,
link |
is to write a question that's not about you,
link |
it's about the question that will help
link |
the community in the future.
link |
Right, but that's a tough sell, right?
link |
Because people are like, well,
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 of we wanna help you,
link |
but we also wanna help everybody that comes behind you.
link |
The long line of people are gonna come up and say,
link |
oh, I kinda have that problem too, right?
link |
And if nobody's ever gonna come up and say,
link |
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,
link |
that tension is inherent to programmers,
link |
is inherent to this kind of process?
link |
Or can it be improved?
link |
Can it be happy land
link |
where that tension 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 what are 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 questions,
link |
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.
link |
You need specifics.
link |
So it's trying to help you make a good question title,
link |
for example, 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 |
I've never done this before.
link |
Can you put me in a queue for special mentoring?
link |
You could opt in to a special mentor.
link |
I think that would be fantastic.
link |
I don't have any objection to that at all
link |
in terms of being an opt in system.
link |
Because there are people that are like,
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 hours with this person.
link |
It depends what their goals are.
link |
It's a great idea.
link |
Who am I to judge?
link |
It's not precluded from happening.
link |
But there's a certain big city ethos
link |
that we started with.
link |
Like, look, we're in New York City.
link |
You don't come to New York City
link |
and expect them to be, oh, welcome to the city, Joe.
link |
Let me show you around.
link |
That's not how New York City works.
link |
Again, New York City has a reputation for being rude,
link |
which I actually don't think it is,
link |
having been there fairly recently.
link |
It's just like going about their business.
link |
Like, look, I have things to do.
link |
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.
link |
Because you're a busy professional
link |
and you would not accept anything less
link |
than a very well written question
link |
with a lot of detail about why you're doing it,
link |
what you're doing, what you researched,
link |
because you're a professional like me.
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,
link |
even Joel says sometimes,
link |
oh yeah, Stack Overflow for beginners.
link |
And I think if you're a prodigy, it can be.
link |
But for the most part, not.
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,
link |
like a playground you can experiment in
link |
and like test and all this stuff
link |
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 gonna start doing this.
link |
You know, I'm not there.
link |
I'm not making those decisions.
link |
But I do think the pressure,
link |
the tension that you described is there for people to be,
link |
look, I'm a little nervous
link |
because I know I gotta 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 or it's a really difficult problem
link |
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
link |
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 disambiguate,
link |
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 because 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 complexity is we want some
link |
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 a duplicate, no worries.
link |
Here's the answer that you wanted over here
link |
on the prime example that we want to have,
link |
rather than having 10 copies of the question and the answer.
link |
Because if you have 10 copies of the question and 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, that's good.
link |
I know it sounds weird, but for most parts,
link |
like look, strict systems, I think to use Stack Overflow,
link |
you have to have the idea that, OK, strict systems ultimately
link |
And I do think in programming, you're
link |
familiar with loose typing versus strict typing, right?
link |
The idea that you can declare a variable,
link |
not declare a variable, rather, just start using a variable.
link |
And OK, I see it's implicitly an integer.
link |
Well, duck is now an integer of 5, 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, in the Ruby community,
link |
they're like, yeah, this is awesome.
link |
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
link |
TypeScript for Microsoft from the guy who
link |
built C Sharp Anders, who's one of the greatest
link |
minds in software development, right,
link |
like in terms of language design.
link |
And says, no, no, no, we want to bolt on a strict type
link |
system to JavaScript because it makes things better.
link |
And now everybody's like, oh my god, we deployed TypeScript
link |
and found 50 latent bugs 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 because strictness is correct.
link |
Strictness produces better results.
link |
That's what I'm saying, right?
link |
So strict typing of variables, I would
link |
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.
link |
You typed deck instead of duck, right?
link |
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.
link |
That doesn't mean mean.
link |
That doesn't mean angry.
link |
It just means strict, OK?
link |
So I think where there's misunderstanding
link |
is people get cranky, right?
link |
Like, another question you asked is like, why are programmers
link |
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 |
And what is the computer 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 going to 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 |
You start to think, oh, well, being really strict arbitrarily
link |
An error of 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 internalize
link |
criminals and kind of are criminals themselves,
link |
like this trope of the master detective
link |
is good because he 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 |
You kind of become a jerk to everybody
link |
because that's what you've internalized.
link |
You're almost not a jerk, but you have no patience
link |
for a lack of strictness, as you said.
link |
It's not out of a sense of meanness.
link |
But I do believe it's an occupational hazard
link |
of being a programmer is you start
link |
to behave like the computer.
link |
You're very unforgiving.
link |
You're very terse.
link |
You're very, oh, wrong, incorrect, move on.
link |
It's like, well, can you help me?
link |
What could I do to fix?
link |
No, wrong, next question.
link |
Like, that's normal for the computer.
link |
I don't know if you remember in Saturday Night Live,
link |
in the 90s, they had this character who was an IT guy.
link |
Was that Jimmy Fallon?
link |
OK, yeah, I remember.
link |
He had no patience for it.
link |
Might have been Mad TV, actually.
link |
But anyway, that's always been the perception.
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, let's start with,
link |
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 Mike,
link |
but one of the things John Carmack, one of the best
link |
points he makes in the book Masters of Doom, which
link |
is a fantastic book, and anybody listening to this
link |
who hasn't read it, please read it.
link |
It's such a great book, is that at the time,
link |
they were working on stuff like Wolfenstein and Doom.
link |
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 discourse forums.
link |
They didn't have places to go to get people to help them.
link |
They had to work on their own.
link |
And that's why it took a genius like Carmack
link |
to do this stuff, because you had
link |
to be a genius to invent from first principles.
link |
A lot of the stuff he was like, the hacks he was coming up
link |
with were genius, genius level stuff.
link |
But you don't need 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, really good
link |
questions that are really well researched, which implies,
link |
oh, I went out and researched for three hours
link |
before I wrote these questions.
link |
That's what you should be doing, because that's
link |
what's going to make you good.
link |
To me, this is the big difference
link |
between programming in the 80s versus programming today,
link |
is you kind of had to be by yourself back then.
link |
Where would you go for answers?
link |
I remember in the early days when
link |
I was learning Visual Basic for Windows,
link |
I would call the Microsoft Helpline on the phone
link |
when I had programming.
link |
Because I was like, I don't know what to do.
link |
So I would go and call, and they had these huge phone banks.
link |
And I'm like, can you imagine how alien that is now?
link |
Who would do that?
link |
So there was just nowhere else to go when you got stuck.
link |
I had the books that came with it.
link |
I read those, studied those religiously.
link |
I just saw a post from Steve Sanofsky
link |
that said the C++ version 7 came with 10,000 pages
link |
of written material.
link |
Because where else were you going to figure that stuff out?
link |
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 and not
link |
thinking that you're the best programmer in the world.
link |
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, what is it, 15 years, really,
link |
of being a public figure?
link |
I would say the big insight that I had is, eventually,
link |
as a programmer, you have to stop writing code
link |
to be effective, which is kind of disturbing.
link |
Because you really love it.
link |
But you realize being effective at programming,
link |
at programming in the general sense,
link |
doesn't mean writing code.
link |
And a lot of times, you can be much more successful by not
link |
writing code and writing code in terms of just solving
link |
the problems you have, essentially hiring people
link |
that are really good and setting them free
link |
and giving them basic direction on strategy and stuff.
link |
Because a lot of the problems you encounter
link |
aren't necessarily solved through really gnarly code.
link |
They're solved by conceptual solutions, which can then
link |
be turned into code.
link |
But are you even solving the right problem?
link |
So I would say, for me, the main insight I have
link |
is, to succeed as a programmer, you eventually
link |
kind of stop writing code.
link |
That's going to sound discouraging, probably,
link |
to people hearing.
link |
But I don't mean it that way.
link |
What I mean is that you're coding
link |
at a higher level language.
link |
Eventually, like, OK, so we're coding in assembly language.
link |
That's the beginning, right?
link |
You're hardcoded to the architecture.
link |
Then you have stuff like C, where it's like, wow,
link |
we can abstract across the architecture.
link |
We can write code.
link |
I can then compile that code for ARM
link |
or whatever x86 or whatever else is out there.
link |
And then even higher level than that,
link |
you're looking at Python, Ruby, interpreted languages.
link |
And then, to me, as a programmer,
link |
I'm like, OK, I want to go even higher.
link |
I want to go higher than that.
link |
How do I abstract higher than the language?
link |
It's like, well, you abstract in spoken language
link |
and written language, right?
link |
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
link |
that there is, which is, for me, English,
link |
whatever your spoken language is.
link |
So it's all about being effective, right?
link |
And I think Patrick McKenzie, patio11 on Hacker News
link |
and works at Stripe, 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.
link |
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, that's another thing,
link |
if you look at my early blog entries, is about, wow,
link |
programming is about people more than it's
link |
about code, which doesn't really make sense.
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 |
PeopleWare, another classic programming book,
link |
which, again, up there with Code Complete,
link |
please read PeopleWare.
link |
It's that software is people.
link |
People are the software, first and foremost.
link |
So a lot of the skills that I was working on early
link |
in the blog were about figuring out the people
link |
parts of programming, which were the harder parts.
link |
The hard part of programming, once you
link |
get a certain skill level in programming,
link |
you can pretty much solve any reasonable problem that's
link |
put in front of you.
link |
You're not writing algorithms from scratch.
link |
That just doesn't happen.
link |
So any sort of reasonable problem put in front of you,
link |
you're going to be able to solve.
link |
But what you can't solve is, 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, oh, we
link |
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 writing
link |
These are not your problems.
link |
Your problem is your manager or a co worker
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.
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 and higher level abstractions
link |
and go into natural language, you're
link |
also the guy who preached building it, diving in
link |
and doing it, and learn by doing.
link |
Do you worry that as you get to higher and higher level
link |
abstractions, you lose track of the lower level of just
link |
Do you worry about that, even not maybe now,
link |
but 10 years from now, 20 years from now?
link |
I mean, there is always that paranoia around, oh, gosh,
link |
I don't feel it's valuable 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, and this
link |
is another valuable observation in Stack Overflow,
link |
you can be super proficient in, for example, C Sharp,
link |
which I was working in.
link |
That's what we built Stack Overflow in and still
link |
And then switch to Ruby, and you're a newbie again.
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.
link |
I have all the fundamental concepts to be a programmer.
link |
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 I already
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, carried over?
link |
That's what I was trying to get to.
link |
It's like what I realized, particularly when I started
link |
with just me and Robin, I realized if I bother Robin,
link |
I am now costing us productivity.
link |
Every time I go to Robin, rather than building our first alpha
link |
version of discourse, he's now answering my stupid questions
link |
Is that a good use of his time?
link |
Is that a good use of my time?
link |
And the answer to both of those was resoundingly no.
link |
We were getting to an alpha, and it was pretty much just,
link |
OK, we'll hire more programmers.
link |
We eventually hired Neil, and then eventually Sam,
link |
who came in as a cofounder.
link |
Actually, it was Sam first, then Neil later.
link |
But the answer to the problem is just
link |
hire other competent programmers.
link |
Now I shall pull myself up by my bootstraps
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
link |
go on in the project, like building the prototype.
link |
You mentioned, well, how do you, if you're not writing code,
link |
how does everybody keep focus on what are we building?
link |
Well, first, basic mockups and research.
link |
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 |
We have screenshots of it.
link |
I'm just embarrassed to look at it now.
link |
But it was the prototype.
link |
We were figuring out what's working, what's not working.
link |
Because there's such a broad gap between the way
link |
you think things will work in your mind or even on paper
link |
and the way they work once you sit and live in the software,
link |
like actually spend time living and breathing in software,
link |
So my philosophy is get to a prototype.
link |
And then what you're really optimizing
link |
for is speed of iteration, 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 of any
link |
software tech company, it's the speed at which somebody
link |
can say, hey, we really need this word in the product.
link |
Change this word, right?
link |
Because it will be more clear to the user.
link |
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 in your software
link |
and rolled out to users, that is your life cycle.
link |
That's your health, your heartbeat.
link |
If your heartbeat is like super slow, you're basically dead.
link |
Like, if it takes two weeks or even a month
link |
to get that single word changed, everybody's like, oh my god,
link |
this is a great idea.
link |
That word is so much clearer.
link |
I'm talking about like a super, like everybody's
link |
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 months to roll out.
link |
It's like, well, you're dead.
link |
You can't iterate.
link |
You can't, how are you going to do anything, right?
link |
So anyway, about the heartbeat, it's
link |
like, get the prototype and then iterate on it.
link |
That's what I view as the central tenet of modern software
link |
That's fascinating that you put it that way.
link |
So I work and I build autonomous vehicles.
link |
And when you look at what, maybe compare Tesla
link |
to most other automakers, the heart beat for Tesla
link |
is literally days now in terms of they can over the air
link |
deploy software updates to all their vehicles, which
link |
is markedly different than every other automaker, which takes
link |
years to update a piece of software.
link |
And that's reflected in everything
link |
that's the final product.
link |
That's reflected in really how slowly they
link |
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 it is a measure of health.
link |
You should have a healthy heartbeat.
link |
It's up to 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 going
link |
to be frustrated because that's how you build software.
link |
You make mistakes.
link |
You see what it feels like and say, oh, God,
link |
that was a terrible idea.
link |
Oh, my gosh, this could be even better if we did Y, right?
link |
You turn the crank.
link |
And then the more you do that, the faster
link |
you get ahead of your competitors ultimately.
link |
It's rate of change, right?
link |
How fast are you moving?
link |
Well, within a year, you're going to be miles away
link |
by the time they catch up with you, right?
link |
That's the way it works.
link |
And plus, as a software developer and user,
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 |
I'm like, yes, change the software.
link |
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 are some changes that suck.
link |
I've seen it many times.
link |
But in general, that's what makes software cool, right?
link |
It's that it is so malleable.
link |
Fighting that is weird to me.
link |
Because it's like, well, you're fighting
link |
the essence of the thing that you're building.
link |
That doesn't make sense.
link |
You want to really embrace that.
link |
Not to be a hummingbird, but embrace it
link |
to a healthy cycle of your heartbeat, right?
link |
So you talk about that people really don't change.
link |
That's why probably a lot of the stuff you write about in your blog
link |
probably will remain true.
link |
Well, there's a flip side of the coin.
link |
People don't change.
link |
Like, investing and understanding people
link |
is like learning Unix in 1970.
link |
Because nothing has changed, right?
link |
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 going to be good for like two years, right?
link |
But if you look at the future of programming,
link |
so there's a people component, but there's also
link |
the technology itself.
link |
What do you see as the future of programming?
link |
Will it change significantly, or as far as you can tell,
link |
people are ultimately programming,
link |
and so it's not something that you foresee changing
link |
in any fundamental way?
link |
Well, you've got to go look back on sort
link |
of the basics of programming.
link |
And one of things that always shocked me
link |
is like source control.
link |
Like, I didn't learn anything about source control.
link |
Granted, I graduated from college in 1992.
link |
But I remember hearing from people as late as like 1998,
link |
1999, like even maybe today, they're
link |
not learning source control.
link |
And to me, it's like, well, how can you not
link |
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 |
Just basic software, the literal bedrock of software
link |
development is source control.
link |
Now, you compare it today, like GitHub, right?
link |
Like Microsoft bought GitHub, which
link |
I think was an incredibly smart acquisition move
link |
Now they have anybody who wants reasonable source control
link |
to go sign up on GitHub.
link |
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
link |
advanced 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 going to say no.
link |
But I think the baseline of what we view as fundamentals
link |
will continue to go up and actually get better,
link |
like source control.
link |
That's one of the fundamentals that has gotten hundreds
link |
of orders of magnitude better than it was 10, 20 years ago.
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 |
Maybe you can comment on that.
link |
And the other one is artificial intelligence,
link |
which promises to, in some ways, to do
link |
some of the programming for you 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
link |
is that it does some of the useful parts for you
link |
where you don't have to think about it.
link |
So do you see smartphones, the fact that everybody has one,
link |
and they're getting more and more powerful as potentially
link |
changing programming?
link |
And do you see AI as potentially changing programming?
link |
OK, so that's good.
link |
So smartphones have definitely changed.
link |
I mean, since, I guess, 2010 is when they really
link |
started getting super popular.
link |
I mean, in the last eight years, the world
link |
has literally changed, right?
link |
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 with a lot
link |
of the positive and negative ramifications of that, right?
link |
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 |
It's not quite the utopia that we thought it would be, right?
link |
Computers can be used for a lot of stuff that's not necessarily
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, smallish,
link |
touch screen computer.
link |
But as for programming, I don't know.
link |
I don't think that I've kind of, over time,
link |
come to subscribe to the Unix view of the world
link |
when it comes to programming.
link |
You want to teach these basic command line things,
link |
and that is just what programming
link |
is going to be for, I think, a long, long time.
link |
I don't think there's any magical visual programming
link |
that's going to happen.
link |
I've, over time, have become a believer in that Unix
link |
philosophy of just, you know, they kind of had
link |
to write with Unix.
link |
That's going to 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.
link |
It'll get simpler.
link |
But it's still fundamentally going
link |
to be command line tools, fancy IDEs.
link |
That's kind of it for the foreseeable future.
link |
I'm not seeing any visual programming stuff
link |
Because you kind of think, like, what
link |
do you do on a smartphone that will be directly
link |
analogous to programming?
link |
Like, I'm trying to think, right?
link |
And there's really not much.
link |
So not necessarily analogous to programming,
link |
but the kind of things that, the kind of programs
link |
you would need to write might need to be very different.
link |
And the kind of languages.
link |
I mean, but I probably also subscribe to the same,
link |
just because everything in this world
link |
might be written in JavaScript.
link |
That's already happening.
link |
I mean, discourse is a bet.
link |
Discourse 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 more
link |
than a programming shift.
link |
Now, your other question was about artificial intelligence
link |
and sort of devices predicting what you're going to do.
link |
And I do think there's some strength to that.
link |
I think artificial intelligence is kind of overselling it
link |
in terms of what it's doing.
link |
It's more like, people are predictable, right?
link |
People do the same things.
link |
Let me give you an example.
link |
One check we put in a discourse that's
link |
been 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, OK, this
link |
is a suspicious login at that point.
link |
So we would alert you.
link |
But that's not AI, right?
link |
That's just a heuristic of like, how did you, in one hour,
link |
get 2,000 miles, right?
link |
I mean, you're grand.
link |
Maybe you're on a VPN.
link |
There's other ways to happen.
link |
That's just a basic prediction based on the idea
link |
that people pretty much don't move around that much.
link |
They may travel occasionally.
link |
But nobody, unless you're a traveling salesman that's
link |
literally traveling the world every day,
link |
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 |
For example, Google, I think it's
link |
called Google Now or whatever that Google thing is
link |
that predicts your commute and predicts,
link |
based on your phone location, 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 |
I hesitate to call it full blown AI.
link |
It's just computers getting better at like, first of all,
link |
they have a ton of data 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 communication, and feeding that into some basic heuristics
link |
and maybe some fancy algorithms that turn it
link |
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, because that's usually
link |
what we do at this time of day, right?
link |
In the context of actually the act of programming,
link |
do you see IDEs improving and making
link |
the life of programming as better?
link |
I do think that is possible, because there's
link |
a lot of repetition in programming, right?
link |
Oh, you know, Clippy would be the bad example of, oh, I see.
link |
It looks like you're writing a for loop.
link |
But there are patterns in code, right?
link |
And actually, libraries are kind of like that, right?
link |
Rather than go code up your own HTTP request library,
link |
it's like, well, you'd use one of the existing ones
link |
That's already a troubleshot, right?
link |
It's not AI, per se.
link |
It's just building better LEGO bricks, bigger LEGO bricks,
link |
that have more functionality in them,
link |
so people don't have to worry about the low level
link |
stuff as much anymore.
link |
Like, WordPress, for example, to me,
link |
is like a tool for somebody who isn't a programmer
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, what I'm seeing,
link |
like, there'll be more gluing and less actual programming.
link |
And that's a good thing, right?
link |
Because most of the stuff you need
link |
is kind of out there already.
link |
You said 1970s, Unix.
link |
Do you see PHP and these kind of old remnants
link |
of the early birth of programming
link |
remaining with us for a long time?
link |
Like you said, Unix in itself.
link |
Do you see, ultimately, this stuff just being there
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 |
Now, on the desktop, right, you need a GUI,
link |
you need all that 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 gonna be programming.
link |
Now, it's a question of where the programming's gonna be.
link |
There's gonna be a lot more like client side programming,
link |
because 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, obviously,
link |
we have to display the posts 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 gonna be server side, I would say, yeah,
link |
the Unix philosophy definitely won.
link |
And there'll be different veneers over Unix,
link |
but it's still, if you peel away one or two layers,
link |
it's gonna be Unixy for a long, I think Unix won.
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, continuing the discourse
link |
in trying to improve conversation on the web?
link |
Well, discourse is what I've viewed as a,
link |
and originally I called it a five year project,
link |
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 five years in.
link |
This is the part where it starts getting good.
link |
Like we have a good product now.
link |
Discourse, there's any project you build in software,
link |
it takes three years to build what you want it
link |
Like V1 is gonna 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 |
to the point that like, it's a really good product now.
link |
We have serious momentum.
link |
And my original vision was,
link |
I wanna be the WordPress of discussion.
link |
Meaning someone came to you and said,
link |
I wanna 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
link |
for blogging most of the time.
link |
But if someone said, hey, I need a group of people
link |
to get together and do something,
link |
the answer should be discourse, right?
link |
That should be the default answer for people.
link |
Because it's open source, it's free,
link |
doesn't cost you anything.
link |
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 have a kind of heavy stack.
link |
Like there's a lot of stuff in discourse.
link |
You need Postgres, you need Redis, you need Ruby,
link |
and Rails, you need a sidekick for scheduling.
link |
It's not a trivial amount of stuff
link |
because 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, eventually,
link |
this is gonna be very cheap for everybody
link |
and I wanna build it right.
link |
Using again, 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 |
We're not strictly segmenting into the open source
link |
versus the commercial side.
link |
We have a hosting business.
link |
That's how discourse makes money
link |
is we host discourse instances
link |
and we have really close relationship with our customers
link |
of the symbiosis of them giving us feedback on the product.
link |
We definitely wait 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 wanna 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 |
It's a company that's basically funded on advertisements.
link |
Let me ask if you can comment on it.
link |
I think advertisement is 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, it's connecting you
link |
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 AdBlocker 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 like, I actually am pro ads
link |
and I have a contrarian viewpoint.
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 wanna support
link |
the people that are doing this work
link |
through seeing their ads.
link |
But that said, I run AdBlock now,
link |
which I didn't wanna do, but I was convinced
link |
by all these articles, like 30, 40 megabytes of stuff
link |
just to serve you ads.
link |
Yeah, it feels like ads now are like the experts exchange
link |
of whenever you start a stock overflow.
link |
It's a little bit, it's overwhelming.
link |
Oh, there's so many companies in ad tech
link |
that it's embarrassing.
link |
Like you can do that, have you seen those logo charts
link |
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 wanna point out
link |
that very, very few discourse 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 |
If you had clean, fast ads that were exactly
link |
the stuff 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, discourse sites
link |
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 yo yo, 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 yo yo on that site
link |
and you clicked 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 to switch to discourse.
link |
I basically paid them to switch to discourse
link |
because I was like, look, you guys got to 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 and just do that
link |
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 discourse.
link |
You've created the code keyboard.
link |
I've programmed most of my adult life on 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,
link |
even like an onscreen keyboard.
link |
Oh, god, that's terrifying.
link |
I mean, if you look back at the early days of computing,
link |
there were chiclet keyboards, which are awful.
link |
But what's a chiclet keyboard?
link |
OK, well, it's just like thin rubber membranes.
link |
Oh, the rubber ones, oh, no.
link |
So it's a fetish item.
link |
All that really says is, look, I care really about keyboards
link |
because the keyboard is the primary method of communication
link |
with the computer.
link |
So it's just like having a nice mic for this podcast.
link |
You want a nice keyboard, right?
link |
Because it has a very tactile feel.
link |
I can tell exactly when I press the key.
link |
I get that little click.
link |
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 |
make sure it's as good as it feels good to use for me.
link |
And 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 |
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
link |
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 |
I mean, and it's funny because artisanal keyboards have
link |
Like Massdrop has gone ballistic with this stuff.
link |
There's probably like 500 keyboard projects
link |
on Massdrop alone.
link |
And there's some other guy I follow on Twitter.
link |
I used to write for the site The Tech Report way
link |
And he's like, every week he's just
link |
posting what I call keyboard porn of just cool keyboards.
link |
Like, oh my god, those look really cool, right?
link |
It's like, how many keyboards does this guy have, right?
link |
It's kind of like me with yo yos.
link |
How many yo yos 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 that
link |
doesn't have a mechanical to research it, look into it,
link |
and see what you like.
link |
And it's ultimately a fetish item.
link |
But I think these sort of items, these religious artifacts
link |
that we have, 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 |
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.