Transcript
KZkYSSE8HHI • Jeff Atwood: Stack Overflow and Coding Horror | Lex Fridman Podcast #7
/home/itcorpmy/itcorp.my.id/harry/yt_channel/out/lexfridman/.shards/text-0001.zst#text/0053_KZkYSSE8HHI.txt
Kind: captions
Language: en
the following is a conversation with
Jeff Atwood he is the co-founder of
Stack Overflow
Stack Exchange websites that are visited
by millions of people every single day
much like with Wikipedia it is difficult
to understate the impact on global
knowledge and productivity that these
networks of sites have created Jeff is
also the author of the famed blog coding
horror and the founder of discourse an
open-source software project that seeks
to improve the quality of our online
community discussions this conversation
is part of the MIT course on artificial
general intelligence and the artificial
intelligence podcast if you enjoy it
subscribe on youtube itunes or your
podcast provider of choice or simply
connect with me on twitter at Lex
Friedman spelled Fri D and now here's my
conversation with Jeff Atwood having
co-created and managed for a few years
the world's largest community of
programmers in Stack Overflow ten years
ago what do you think motivates most
programmers is it fame fortune glory
process of programming itself or is it
the sense of belonging to a community
it's puzzles really I think it's this
idea of working on puzzles independently
of other people and just solving a
problem sort of like on your own almost
although you know nobody really works
alone and programming anymore but I will
say there's that there's an aspect of
sort of hiding yourself away and just
sort of beating on a problem until you
solve it like brute force basically to
me it's what a lot of programming is is
like the computer so fast right you can
do things that would take forever for a
human but you just do them like so many
times and so often that you get the
answer right you're saying just the pure
act of tinkering with the code yes is is
the thing that drives most probably the
joy the struggle balance within the joy
of overcoming the the brute-force
process of pain and suffering that
eventually leads to something that
actually works well data is fun too like
there's this thing called the the
shuffling problem like the naive shuffle
that most programmers right has a huge
flaw and there's a lot of articles
online about this because it can be
really bad if you're like a casino and
you have an unsophisticated programmer
writing your shuffle algorithm there's
surprising ways to get this wrong but
the neat thing is the way to figure that
out is just to run your shuffle a bunch
of times and see like how many
orientations of cards you get you should
get an equal distribution of all the
cards and with the naive method of
shuffling if you just look at the data
if you just brute force and say okay I
don't know what's gonna happen
you just write a program that does it a
billion times and then see what the
buckets look like of the data and the
Monty Hall problem is another example of
that where you have three doors and
somebody gives you information about
another door so the correct answer is
you should always switch and the Monty
Hall problem which is not intuitive and
people it freaks people out all the time
right but you can solve it with data if
you write a program that does the Monty
Hall you know game and then never
switches and always switches just
compare you would immediately see that
you don't have to be smart right you
know to figure out the answer
algorithmically you can just brute force
it out with data and say well I know the
answer is this because I ran the program
a billion times and these are the data
buckets that I got from it right so
empirically find it but what's the joy
of that what so for you for you
personally outside of family what
motivates you in this process
yes well to be honest I don't really
write a lot of code anymore like what I
do at discourse is like manager II stuff
which I always kind of despised right
like as a programmer you think of
managers as people who don't really do
anything themselves but the weird thing
about code is like you realize that like
language is code like the ability to
direct other people lets you get more
stuff than you've done then you could by
yourself anyway you should write
languages code languages community
communication yeah those are humans yes
you can think of it as a systemic so
what what is it like to be what makes
before we get into program it what makes
a good manager what makes a good leader
well I think a leader it's all about
leading by example first of all like
sort of doing and being the things that
you want to be now this can be kind of
exhausting particular you have kids
because you realize that your kids are
watching you like all the time like even
in ways that you've stopped seeing
yourself like the hardest person to see
on the planet is really yourself right
it's funnier to see other people and and
and make judgments about them but
yourself like your
for biased you don't actually see
yourself the way other people see you
often you're very very hard on yourself
in a way that other people really aren't
going to be so you know that's one of
the insights is you know you've got to
be really diligent about thinking like
am i behaving in a way that represents
how I want other people to behave right
like leading through example there's a
lot of examples of leaders that really
mess this up right like they make
decisions that are like wow that's why
would you know it's just it's it's it's
a bad example for other people so I
think leading by example is one the
other one I believe it is working really
hard now I don't mean like working
exhaustively but like showing a real
passion for the problem like you know
not necessarily your solution the
problem but the problem itself is just
one that you really believe in like with
discourse for example the problem that
we're looking at which is my current
project is how do you get people in
groups to communicate in a way that
doesn't like break down into the howling
of wolves right like how do you deal
with trolling not like technical
problems of how do I get people to post
paragraphs how do I get people to use
bold how to get people to use complete
sentences although those are problems as
well but like how do I get people to get
along with each other
right like and then solve whatever
problem it is they set up to solver you
know reach some consensus on discussion
or just like not hurt each other even
right like maybe it's a discussion
doesn't really matter but are people
like yelling at each other right and why
right like that's not the purpose of
this kind of communication so I would
say you know leadership is about you
know setting an example you know doing
the things that represent what you want
to be and making sure that you're
actually doing those things and there's
a trick to that too because the things
you don't do also say a lot about what
you are yeah so let's pause on that one
so those two things are fascinating so
how do you have as a leader as that
self-awareness so you just said it's
really hard to be self-aware so for you
personally or maybe for other leaders
you've seen or look up to how do you
know the both that the things you're
doing are the wrong things to be doing
the way you speak to others the way you
behave and the things you're not doing
how do you how do you get that service
there's two aspects that one is like
processing feedback that you're getting
so how you get feedback well right sorry
are you getting feedback right like so
one way we do it for example a discourse
we have three co-founders and we
periodically talk about decisions before
we make them so it's not like one person
can make a mistake or like
that's you know there can be
misunderstanding things like this so
it's part of like group consensus of
leadership is like it's good to have I
think
systems where there's one leader and
that leader has the rule of absolute law
are just really dangerous and my
experience for communities for example
like a few of communities run by one
person that one person makes all the
decisions that person's gonna have a bad
day something could happen to that
person you know something you know
there's a lot of variables so like at
first when you think about leadership
haven't have multiple people doing
leadership and have them talk amongst
each other so giving each other feedback
about the decisions that they're making
and then when you do get feedback I
think there's that little voice in your
head right like or your gut or wherever
you want to put it in your putti I think
that voice is really important like I
think most people who have any kind of
moral compass or like want to do most
people want to do the right thing I do
believe that I mean there might be a
handful of sociopaths out there that
don't but most people they want other
people to think of them as a good person
and why wouldn't you right like do you
want people to despise you I mean that's
just weird right so you have that little
voice that sort of the angel and devil
on your shoulder sort of talking to you
about like what you're doing how you're
doing how does it make you feel to make
these decisions right and I think having
some attunement to that voice is
important but you said that voice also
for I think this is a programmer
situation to what sometimes the devil on
the shoulder is a little a little too
loud so you a little too self-critical
for a lot of developers and especially
when you have introverted personality
how do you struggle with the
self-criticism other criticism others so
one of the things of leadership is to do
something that's not potentially
unpopular or what people doubt you and
you still go through with the decision
so what's that balance like I think you
have to walk people through your
decision-making right like if if this is
where blogging is really important
communication is so important again code
language is just another kind of code is
like here is the program by which I
arrived at the conclusion that I'm gonna
reach right it's one thing to say like
this is decisions final
deal with it right that's not usually
satisfying people but if you say look
you know we've been thinking this
problem for a while here's some stuff
that's happened here's what we think is
right here's our goals here's one
achieve and we've looked at these
options and we think this of available
options is the best option people be
like oh okay
alright maybe I don't totally agree with
you but I can kind of see where you're
coming from and like
see it's not just arbitrary decision
delivered from a cloud of flames in the
sky right it's like a human trying to
reach some kind of consensus about you
know goals and their goals might be
different than yours that's completely
legit right but if you're making that
clear it's like oh well the reason we
don't agree is because we have totally
different goals right like how could we
agree it's not that you're a bad person
it's that we have radically different
goals in mind when we started looking
this problem and the other one you said
is passion so or hard work sorry well
those are tied together to me out in my
mind say Hardware compassionate like for
me like I just really love the problem
discourse is sending out to solve
because in a way it's like there's a
there's a vision of the world where it
all devolves into Facebook basically
owning everything and every aspect of
human communication right and this has
always been kind of a scary world for me
um first cuz I don't I think Facebook is
really good at execution I gotta
compliment them they're very competent
in terms of what they're doing but
Facebook has not much of a moral compass
in terms of Facebook cares about
Facebook really they don't really care
about you and your problems what they
care about is how big they can make
Facebook right is that you're talking
about the company or just a mechanism
how Facebook works kind of both really
right like and the idea with discourse
the reason I'm so passionate about it is
because I believe every community should
have the right to own themselves right
like they should have their own software
that they can run that belongs to them
that's their space where they can set
the rules and if they don't like it they
can move to different hosting or you
know whatever they need they need to
have it can happen but like this this
idea of a company town we're all human
communication is implicitly owned by
whatsapp Instagram and Facebook and its
really disturbing too because Facebook
is really smart like I said they're
great at execution buying and what's
happened buying Instagram were
incredibly smart decisions and they also
do this thing on if you know but they
have this VPN software that they give
away for free on smartphones and it
indirectly feeds all the the data about
the traffic back to Facebook so they can
see what's actually getting popular
through the VPNs right they have low
level access to the network data because
users have let them have that so ok
let's let's take a small pause here
first of all discourse can you talk
about can you lay out the land of all
the different ways you can have
community so there's Stack Overflow that
you've built
there's discourse yeah so Stack Overflow
is kind of like a wiki Wikipedia you
talk
and it's a very specific scalpel very
focused so what is the purpose of
discourse and maybe contrast that with
Facebook first of all say what is this
course yeah start from the beginning
well let me start with the very being so
Stack Overflow is very structured wiki
style QA for programmers right and that
was the problem we first worked on it
when we started we thought it was
discussions because we looked at like
programming forums and other things but
we quickly realized we were doing QA
which is a very narrow subset of human
communication sizes so when you start
Stack Overflow you thought you didn't
even know the QA you know it would be
well we didn't know we did we had an
idea of like ok these are things that we
see working online we had a goal right
our goal was there was this site experts
exchange with a very unfortunate thank
you for killing that site yeah I know
right like a lot of people don't
remember it anymore which is great like
that's the measure of success when
people don't remember the thing that you
were trying to replace then you've
totally won so it was a place to get
answers to programming questions but it
wasn't clear if it was like focused Q&A
if it was a discussion there were plenty
of programming forums so we weren't
really sure we were like ok we'll take
aspects of Digg and reddit like voting
we're very important reordering answers
based on votes wiki style stuff of like
being able to edit post not just your
posts but other people's post to make
them better and keep them more
up-to-date ownership of blogging of like
ok this is me I'm saying this is my
voice you know this is the stuff that I
know and you know you give your
reputation accrues to you and it's pure
recognition so you asked earlier like
what motivates programmers I think peer
recognition motivates them a lot that
was one of the key insights of Stack
Overflow was like recognition from your
peers is why things get done initially
moneyness well your boss but like your
peers saying wow this person really
knows their stuff has a lot of value so
the reputation system came from that so
we were sort of frankensteining a bunch
of stuff together in Stack Overflow of
like stuff we had seen working and we
knew worked and that became Stack
Overflow and over time we realized it
wasn't really discussion it was very
focused questions and answers there
wasn't a lot of room on the page for let
me talk about this tangential thing it
was more like ok he's an answering
question is it clarifying the question
or could it be an alternative answer to
the same question because there's
usually more than one way to do it in
program there's
say five to ten ways and one of the
patterns we got into early on
stackoverflow was there are questions
where there would be like hundreds of
answers more like Wow
how can there be a programming question
with 500 200 500 answers and we looked
at those we realized those were not
really questions in the traditional
sense they were discussions it was stuff
that we allowed early on that we
eventually decided wasn't allowed such
as what's your favorite programming food
you know what's the funniest programming
cartoon you've seen and we had to sort
of backfill oh into rules about like why
isn't this allowed such as is this a
real problem you're facing like nobody
goes to work and says wow I can't work
because I don't know what the funniest
programming cartoon is so sorry can't
compile this code now right it's not a
real problem you're facing in your job
that was run rule and ii like what can
you really learn from that it's like
what i call accidental learning or
reddit style learning where you just
acknowledge browse some things
oh wow you know did you know tree frogs
only live three years I mean I just made
that up I don't know that's true but uh
I didn't really set out to learn that I
don't need to know that right it's an
accidental learning it was more
intentional learning we were like okay I
have a problem and I want to learn about
stuff around this problem having right
and it could be theory could be compiler
theory it could be other stuff but I'm
having a compiler problem hence I need
to know the compiler theory that aspect
of it that gives me the the gets me to
my answer right so kind of a directed
learning so we had to backfill all these
rules as we sort of figured out what the
heck it was we were doing and the system
came very strict over time and a lot of
people still complain about that and I
wrote my latest blog entry what the
Stack Overflow want to be I wanted to be
when it grows out celebrating the
10-year anniversary yeah yeah so ten
years and it that system is trended
towards strictness there's a variety of
reasons for this one is people don't
like to see other people get reputation
for stuff as they view they view as
frivolous which I can actually
understand because if you saw a program
or got like five hundred up votes for
funniest programming cartoon or funniest
comment they had seen in code it's like
well why do they have that reputation is
because they wrote the joke probably not
I mean if they did maybe or the cartoon
right they're getting a bunch of
reputation based on someone else's work
that's not even like programming it's
just a joke right it's a related to
birth so you begin to resent that like
well that's not fair and it isn't at
some level they're correct I mean I
empathize because like it's not correct
you get reputation for that versus
here's a really gnarly
regular expression problem and here's a
really you know clever insightful you
know detailed answer laying out oh
here's why you're seeing the behavior
that you're seeing here let me teach you
some things about how to avoid that in
the future that's that's great like
that's gold right you want people to
grab a petition for that not so much for
wow look at this funny thing I saw
alright great so there's this very
specific Q&A format and then take me
through the journey towards this course
in Facebook and Twitter so you start at
the beginning that Stack Overflow
evolved to have a purpose so where does
this course this passion you have for
creating community for discussion what
is that when was that born and well part
of it is based on the realization the
Stack Overflow is only good for very
specific subjects where they're sort of
it's it's based on data facts and
science where answers can be kind of
verified to be true another form of that
is there's the book of knowledge like
the tome of knowledge that defines like
whatever it is you can refer to that
book and I'll give you the answer there
has to be it only works on subjects
where there's like semi clear answers to
things that can be verified in some form
now again there's always more than one
way to do it there's complete
flexibility and system around that but
where it falls down is stuff like poker
and Lego like we had if you go to Stack
Exchange calm we have an engine that
tries to launch different Q&A topics
right and people can propose Q&A topics
sample questions and and if he gets
enough support within the network we
launch that Q&A site so someone's we
launched where poker and Lego and they
did horribly right because I mean there
might still be there lingering on in
some form but it was an experiment this
is like a test right and some subjects
work super well in the stack engine and
some don't
but the reason Lego and Poker don't work
is because they're so social really it's
not about you know what's the rule here
in poker it's like well you know what
kind of cigars do we like to smoke while
playing poker or you know what's what's
a cool set of cards to use when playing
poker or you know what some strategies
like say I have this hand come up with
some strategies I could use it's more of
a discussion around like what's
happening like with Lego
you know same thing like here's this
cool Lego set I found look how awesome
this isn't like yeah that's freaking
awesome right it's not question right
there's all these social components
discussions that don't fit at all like
we literally have to just allow those in
Stack Overflow kids it's not about being
social it's about
problems that you're facing in your work
that you need concrete answers for right
like you have a real demonstrated
problem that's sort of blocking you in
something nobody's blocked by you know
what should I do when I have a straight
flush right like blocking problem in the
world it's just an opportunity to hang
out and discuss so this course was a way
to address that and say look you know
discussion forum software ahead was very
very bad and when I came out of Stack
Overflow until late or early 20 2013
2012 it was still very very bad I've
expected it improved and in the four
years since I last looked but it had not
improved at all and I was like well
that's kind of terrible because I love
these communities of people talking
about things that they love you know
that there's just communities of
interest right and there's no good
software for them like startups would
come to me and say hey Jeff I wanna you
know I have this startup here's my idea
and the first thing I would say them is
like well first why are you asking me
like I don't really know your field
right let it's necessarily like why
aren't you asking like the community
like the people that are interested in
this problem the people that are using
your product why aren't you talking to
them and then they say Oh a great idea
like how do I do that and then that's
when I started playing sad trombone
because I realized all the software
involving talking to your users
customers audience patrons whatever it
is it was all really bad you know I was
like stuff that I would be embarrassed
to recommend to other people and yet
that's where I felt they could get the
biggest and strongest most effective
input for what they should be doing with
their product right it's from their
users from their community right that's
what we did on Stack Overflow
so what we're talking about with forms
the what is it the dark matter of the
Internet it's still I don't know if it's
still but for a longest time it has some
of the most passionate and fascinating
discussions and what's the usual
structure there's usually what it's a
it's linear so it's sequential it's
you're posting one after the other and
there's pagination so it's every there's
a 10th post and you go to the next page
and that format still is used by like
I'm we're doing a lot of research with
Tesla of vehicles and there's Tesla
Motors Club forum which is extremely
really wanted to run that actually they
pinged us about I don't think we got
but I really would like to gotten that
one but they've started before even 2012
I believe I mean they've been running
for a long time it's still an extremely
rich source of information so what
what's broken about that system and how
are you trying to fix it I think there's
a lot of power in in connecting people
that love the same stuff around that
specific topic meaning Facebook's idea
of connection is just any human that's
related to another human right like like
through friendship or you know any other
reason
Facebook's idea of the world is sort of
the status update right like a friend of
yours did something ate at a restaurant
right
whereas discussion forums were
additionally around the interest graph
like I love electric cars specifically I
love Tesla right like I love the way
they approach the the problem I love the
style of the founder I just love the the
design ethic there's a lot to like about
Tesla if you saw the oatmeal he did a
whole love comic to Tesla and it was
actually kind of cool because I learned
some stuff he was some how great Tesla
cars were specifically like how they
were built differently and he went into
a lot of great detail that was really
interesting to me that oatmeal post if
you read it is the genesis of pretty
much all interest communities I just
really love this stuff's like for me
devilish yo-yos right like I'm into the
yo-yo communities and there's these
interest communities are just really
fascinating to me and I feel more
connected to the yo-yo communities than
I do to you know friends that I don't
see that often right like to me that the
powerful thing is the interest graph and
Facebook kind of dabbles in the interest
graph I mean they have groups you can
sign up for groups and stuff but it's
really about the relationship graph like
I'm this is my coworker this is my
relative this is my friend but not so
much about the interest so I think
that's the the linchpin of which forums
and communities are built on that I
personally love like I I like I said
leadership is about passion right and
being passionate about stuff is is a
really valid way to look at the world
and I think it's a way a lot of stuff in
the world gets done like I once said
someone described me as he's like Jeff
you're a guy who you just get super
passionate about a few things at a time
and you just go super team from those
things and I was like oh that's kind of
right that's kind of what I do I'll get
into something and just be super into
that for a couple years or whatever I
just learn all I can about it and go
super deep in it and that's how I enjoy
experiencing the world right
like not being shallow on a bunch of
things but being really deep on a few
things that I'm interested in so forums
kind of unlocked that right and you know
you don't want a world where everything
belongs to Facebook at least I don't I
want a world where communities can kind
of own themselves set their own norms
set their own rules control the
experience because commit community is
also about ownership right like if if
you're meeting at the Barnes & Noble
every Thursday at Barnes & Noble says
get out of here you guys don't buy
enough books well you know you're kind
of hose right Barnes and Noble owns you
right like you can't but if you have
your own meeting space you know your own
Clubhouse you can set your own rules
decide what you want to talk about there
and just really generate a lot better
information than you could like hanging
out at Barnes & Noble every Thursday at
3:00 p.m. right so that's kind of the
vision of discourse is a place where
it's it's fully open source you can take
the software you can saw it anywhere and
you know you and a group of people can
go deep on whatever it is that you're
into and it this works for startups
right startups are a group of people who
go super deep on a specific problem
right and they want to talk to the
comedian's like well install this course
right that's what we do at this course
that's what I did a stack overflow I
spent a lot of time on meta stack
overflow which is our internal well
public community feedback site and just
experiencing what the users were
experiencing right because they're the
ones doing all the work in the system
and they had a lot of interesting
feedback and there's that 90/10 rule of
like 90% of the feedback you get is not
really actionable for a variety reasons
it might be bad feedback it might be
crazy feedback it might be feedback you
just can't act on right now but there's
10% of it that's like gold it's like
literally gold and diamonds where it's
like feedback of really good
improvements to your core product that
are not super hard to get to and
actually make a lot of sense and my
favorite is about 5% of those stuff I
didn't even see coming it's like oh my
god I never even thought of that but
that's a brilliant idea
right and I can point to so many
features of Stack Overflow that we drive
from metastatic overflow feedback and
meta discourse right same exact
principle at discourse you know we're
getting ideas from the comedian's like
oh my god I never thought of that but
that's fantastic right like I love that
relationship with the community from
having built these communities what have
you what have you learn about what's the
process of getting a critical mass of
members in a community is it luck skill
timing persistence what is is it the
tools like discourse that empower that
community what what's the key aspect of
starting
one guy a gal and then building it to
210 and 100 and a thousand so on I think
we're starting with an end of one I mean
I think it's persistence and and also
you have to be interesting like somebody
I really admire once that's something
that I always liked about blogging he's
like here's how you blog you have to
have something interesting to say and
have an interesting way of saying it
right yeah and then do that for like 10
years so that's the genesis is like you
have to have sort of something
interesting to say that's not exactly
what everyone else is saying and an
interesting way of saying which is
another one same kind of entertaining
way of saying it and then as far as
growing it it's like ritual you know
like you have to like say you're
starting a blog you have to say look I'm
gonna blog every week three times a week
and you have to stick to that schedule
right because until you do that for like
several years you're never gonna get
anywhere like it just takes years to get
to where you need to get to and part of
that is having the discipline to stick
with the schedule and it helps you get
if it's something you're passionate
about this won't feel like work like I
love this I could talk about this all
day every day right you just have to do
in a way that's interesting to other
people and then as you're growing the
community that pattern of participation
within the community of like generating
these artifacts and inviting other
people to help you like collaborate on
these artifacts like even in case of
blogging like I felt in the early days
of my blog which I started 2004 which is
really the genesis of Stack Overflow if
you look at all my blog it leads up to
Stack Overflow which was I have all this
energy in my blog but I don't like
40,000 people were subscribing to me and
I was like I want to do something and
then then I met Joel and said hey Joel I
want to do something take this ball of
energy for my blog and do something and
all the people reading my blog saw
that's oh cool you're involving us
you're saying look you're part of this
community let's build this thing
together like they pick the name like we
voted on the name for Stack Overflow on
my blog like we came and naming is super
hard first why the hardest problem
computer science is coming with a good
name for stuff right yeah but there you
can go back to my log there's the poll
where we voted and Stack Overflow became
the name of the site and all the early
beta users are stuck over we're audience
of my blog plus Joel's blog right so we
started from like if you look at the
Genesis okay I was just a programmer who
said hey I love programming but I have
no outlet to talk about it so I'm just
gonna blog about it because I don't have
enough people to work to talk to about
it because at the time I worked a place
where you know programming wasn't the
core
output of the company was a
pharmaceutical company and I just love
this stuff you know to an absurd degree
so I was like I'll just blog about it
and then I'll find an audience and
eventually found an audience eventually
I found Joel and eventually built Stack
Overflow from that one core of activity
right but it was that repetition of
feeding back in feedback from my blog
comments feedback from Joel feedback
from them the early Stack Overflow
community when people see that you're
doing that they will follow along with
you right they say look cool you're here
in good faith you're actually you know
not listening to everything because I'm
impossible that's impossible
but you're actually you know waiting our
feedback and what you're doing because
I'm and why wouldn't I because who does
all the work on Stack Overflow me Joel
no it's the other programmers that are
doing all the work so you gotta have
some respect for that and then you know
discipline around look you know we're
trying to do a very specific thing here
on Stack Overflow we're not trying to
solve all the world's problems we're
trying to solve this very specific QA
problem in a very specific way not
because we're jerks about it but because
these strict set of rules help us get
really good results right and
programmers that's an easy sell for the
most part because programmers are used
to dealing with ridiculous systems of
rules like constantly that's basically
their job so they're they're very oh
yeah super strict system of rules that
lets me get on what that's programming
right that's what Stack Overflow is so
so you're making it sound easy but in
2004 let's go back there in 2004 you
started the blog I'm quoting horror was
it called that at the beginning at the
very beginning was one of the smart
things I did it's from a book by Steve
McConnell code complete which is where
my favorite programming but still
probably my number one programming book
for anyone to read one of the smart
things I did back then I don't always do
smart things when I start stuff
I contacted Stephen said hey I really
like this it was a sidebar illustration
indicating danger in code right coding
horror was like watch out and I love
that illustration cuz it spoke to me
because I saw that illustration go oh my
god that's me like I'm always my own
worst enemy like that and a key insight
and programming is every time you write
something think how am I gonna screw
myself because you will constantly right
so that that icon was like oh yeah I
need to constantly hold that mirror up
and look and say look you're very
fallible you're gonna screw this up like
how can you build this in such a way
that you're not gonna screw it up later
like how can you
get that discipline around making sure
at every step I'm thinking through all
the things that I could do wrong or that
other people could do wrong because that
is actually how you get to be a better
programmer a lot of times right so that
sidebar illustration I loved it so much
and I wrote Steve before I started my
belonging say hey can I have permission
to use this cuz I just really likes
illustration and Steve was kind enough
to give me a portion to do that and just
continues to give me permission so yeah
really that's awesome but in 2004 you
started this blog you know you look at
it Stephen King this book on writing or
Steven Pressfield the war of art book I
mean it seems like writers suffer I mean
it's a hard process of writing write is
there's gonna be suffering I mean I
won't kid you like well the work is
suffering right like doing the work like
even when you're every week you're like
okay that blog post wasn't very good or
you know people didn't like it or people
write said disparaging things about it
you have to like have the attitudes like
you know no matter what happens I want
to do this for me right it's not about
you it's about me I mean in the end it
is about everyone because this is how
good work gets out into the world but
you have to be pretty strict about
saying like you know I'm selfish in the
sense that I have to do this for me you
know you mentioned Stephen King like his
book on writing but like one of things I
do for example when writing is like I
read it out loud one of the best pieces
of advice for writing anything is read
it out loud like multiple times and make
it sound like you're talking because
that is the goal of good writing it
should sound like you said it with with
slightly better phrasing because you
have two more time to think about your
saying but like it should sound natural
when you say it and I think that's
probably the single best writing advice
and give anyone it's just just read it
over and over outloud make sure it
sounds like something you would normally
say and it sounds good and what's your
process of writing so there's usually a
pretty good idea behind the blog post so
ideas right so I think you gotta have
the concept that there's so many
interesting things in the world like I
mean my god the world is amazing right
like it's you could never write about
everything that's going on because it's
so incredible but if you can't come up
with like let's say one interesting
thing per day to talk about then you're
not trying hard enough because the world
is full of just super interesting stuff
and one great way to like mine stuff is
go back to old books because they bring
old stuff that's still super relevant
and I did that a lot because I was like
reading classic program books and a lot
of the early blockbuster like oh I was
reading this program but can they
brought this really cool concept and I
want talk about some more and you get
the I mean you're not claiming credit
for the idea but it gives you something
interesting to talk about that's kind of
evergreen right like you don't have to
go what should I talk about so just go
dig up some old classic programming
books and find something that oh wow
that's interesting or how does that
apply today or what about X&Y or compare
these two concepts so pull a couple of
sentences from that book and then sort
of play off of it almost reader disagree
that so in 2007 you wrote that you were
offered a significant amount of money to
sell the blog you chose not to what were
all the elements you were thinking about
because I'd like to take you back it
seems like there's a lot of non-linear
decisions you made through life that's
so what was that decision like right so
i one of the things I love is the choose
your own adventure books which I loved
as a kid and I feel like the early
programmer books cuz they're they're all
about if-then statements right if this
then this and they're also very very
unforgiving like there's all these sites
that map the the classic teacher and
venture books and how many how comes are
bad there's a lot of bad outcomes so
part of the game is like oh I got a bow
come go back one step go back on further
steps like how did I get here right like
it's a sequence of decisions and this is
true of life right like every decision
is a sequence right individually any
individual decision is not really right
or wrong but they lead you down a path
right so I do think there's some truth
to that so this particular decision the
blog II got fairly popular there's a lot
of RSS readers that I discovered and
this guy contacted me out of the blue
from this like bug tracking companies
like I really want to buy your blog for
like I think it was around it was a
hundred thousand dollars when I'm in
like eighty thousand but it was it was a
lot right like and that's you know at
the time like I would have a year's
worth of salary all at once so I'd
really think about like well you know
and I remember talking to people the
times like wow that's a lot of money but
then I'm like I really like my blog
right like do I want to sell my blog
because it wouldn't really belong to me
anymore at that point and one of the
guidelines that I like to I don't like
to give advice to people a lot but one
of the piece of advice I do give because
I do think it's really true and it's
generally helpful is whenever you're
looking at a set of decisions like
shut you a B or C you got to pick the
thing that's a little scarier in that
list because not you know not like jump
off a cliff scary but the thing that
makes you nervous because if you pick
the safe choice it's usually you're not
really pushing you're not pushing
yourself you're not choosing the thing
that's gonna help you grow so for me the
scarier choice was to say no I was like
well no let's just see where this is
going right because then I own it I mean
it belongs to me it's my thing and I can
just take it and to some other logical
conclusion right because imagine how
different the world would've been had I
said yes and sold the blog it's like
they're probably gonna be stackoverflow
yeah you know a lot of other stuff would
have changed so for that particular
decision I think it was that same rule
like what scares me a little bit more do
the thing that scares you yeah so
speaking of which startups I think
there's a specific some more general
questions that a lot of people would be
interested in you've started
Stack Overflow you started this course
so what's the here's one two three guys
whatever it is in the beginning what was
that process like do you start talking
about it do you start programming do you
start like where is the birth and the
catalyst that actually I can talk about
in the context of Oh Stack Overflow and
discourse so I think the key thing
initially is there is a problem
something the some state of the world
that's unsatisfactory to the point that
like you're upset about it right like in
that case it was experts exchange I mean
Joel's original idea because I
approached I was like look joy I have
all this energy by my blog I want to do
something I want to build something but
I don't know what it is because I'm not
I'm honestly not a good idea person I'm
really not I'm like the execution guy
I'm really good at execution but I'm not
good at like blue skying ideas not my
forte which is another reason why I like
the community feedback because they blue
sky all day long for you right so when I
can just go in and cherry-pick a blue
sky idea from community even if I have
to spend three hours reading to get one
good idea it's worth it man but anyway
so the idea from Joel was hey experts
exchange
it's got great data but the spirits is
hideous right it's it's trying to trick
you it feels like used-car salesmen it's
just bad so I was like oh that's awesome
it feeds in a community it feeds into
like you know we can make a Creative
Commons so I think the core is to have a
really good idea that you feel very
strongly about in the beginning that
like there's a wrong in the world that
we will an injustice that we will right
through the process of building this
thing for discourse it was like look
there's no good software for communities
to just hang out
and like do stuff right like whether
it's problem-solving start up whatever
forums are such a great building block
or online community and they're hideous
they were so bad right it was
embarrassing like I literally was
embarrassed to be associated with this
software right I was we have to have
software they could be proud of
it's like this is competitive with
Reddit this is competitive Twitter this
is competitor with Facebook right I
would be proud to have the software on
my site so that was the genesis of
discourse was feeling very strongly
about there needs to be a good solution
for communities so that's step one
Genesis why do you feel super strongly
about right and then people galvanize
around the idea like Joel was already
super excited with the idea I was
excited about the idea so with the forum
software I was posting on Twitter I had
research as part of my research I start
researching the problem right and I
found a game called forum Wars which was
a parody of forum it's still very very
funny of like foreign behavior circle
like I would say 2003 and it's aged some
right like the behavior is a little
different in there of Twitter but it was
awesome it was very funny and it was
like a game as like an RPG and it had a
forum attached to it so it was like a
game about forums with a forum attached
I was like this is awesome right this is
so cool and the founder of that company
or that project it wasn't really a
company contacted me this guy Robin Ward
from Toronto's hey you know I saw you
been talking about forums and like I
really love that problem space he's like
I'd still love to build really good
forum software cuz I don't think
anything out there is any good and I was
like awesome at that point I was like
we're starting a company because like I
couldn't have wished for a better person
to walk through the door and say I'm
excited about this - same thing with Joe
right I mean Joel is a legend in the
industry right so when he walks through
so I'm excited about as problems like me
- man we can do this right so that to me
is the most important step it's like
having ID you're super excited about and
another person a co-founder right
because again you get that dual
leadership right of like am I making a
bad decision sometimes it's nice to have
checks of like is this a good idea I
don't know right so those are the the
crucial seeds but then starting to build
stuff whether it's you programmer
there's video types so there's tons of
research there's tons of research like
what what's out there that failed
because a lot of people looked at
successes I look at how successful X's
everybody looks at the successes those
are boring show me the failures because
that is what's interesting that's where
people were experimenting that's where
people were pushing but
and they failed but they probably failed
for reasons that weren't directly about
the quality of their idea right yeah so
look at all the failures don't just look
what everybody looks at which is a go
gosh look at all these successful people
look at the failures look at the things
that didn't work research the entire
field and so that's the research that I
was doing that led me to Robin Wright
was that and then when we for example we
did Stack Overflow
we're like okay well I really like
elements of voting and Digg and reddit I
like the the Wikipedia everything is up
to date nothing is like an old tombstone
that like has horrible out-of-date
information we know that works Wikipedia
is an amazing resource blogging the idea
of ownership is so powerful right like
oh I i jo wrote this and look how good
Joe's answer is right like all these
concepts were rolling out researching
all the things are out there that we're
working and why they were working and
trying to like fold them into that again
that Frankenstein's monster of what
Stack Overflow is and by the way that
wasn't a free decision because there's
still a ton of tension in the Stack
Overflow system there's reasons people
complain about Stack Overflow because
it's so strict right why is it so strict
why you guys always closing my questions
it's because there's so much tension
that we built into the system around
like trying to get good good results out
of the system and you know it it's not a
free that stuff doesn't come for free
right it's not like we we're all have
perfect answers and nobody will have to
get their feelings hurt or nobody will
have to get down voted like that it
doesn't work that way right like so this
is an interesting point a small tangent
yeah you're right about anxiety so I've
posted a lot of questions and answers on
Stack Overflow and the questions I
usually go to something very specific to
something I am working on this is
something you talk about that really the
goal of Stack Overflow isn't about is to
write a question not that's not about
you it's about the question that will
help the community in the future right
but that's a tough sell right because
people are like well you know I don't
really care about the committee what I
care about is my problem my problem and
then that's fair right is it sort of
that again that tension that balancing
active we want to help you but we also
hope that everybody comes behind you
right the long line of people are gonna
come up say oh I kind of have that
problem too right and if nobody's ever
going to come up and say I have this
problem too then that question shouldn't
exist on Stack Overflow because the
question is too specific and that even
that's tension right how do you judge
the how do you know that nobody's ever
gonna have this particular question
again so there's a lot of tension in the
system do you think that anxiety of
asking the question the anxiety of
answering that tension is inherent to
programmers is inherent to this kind of
process
or can it be improved can be happy land
where the that tension is not quite so
harsh uh I don't think Stack Overflow
can totally change though it works one
thing they are working on finally is the
ask page had not changed since 2011 I'm
still kind of bitter about this because
I feel like you have a QA system and
what are the core pages in a KA system
well first of all the question all the
answers and all the also the ask page
particularly when you're a new user or
someone trying to ask question that's
the point on what you need the most help
and we just didn't adapt with the times
but the good news is they're working on
this from what I understand and it's
gonna be a more wizard based format and
you could envision a world where as part
of this wizard based program when you're
asking questions okay come up with a
good title what are good words up in the
title one word that's not good to put in
the title is problem for example I have
a problem oh you have a problem okay a
problem that's great right like you need
specifics right like so it's trying to
help you make a good question title for
example that step will be broken out all
that stuff but one of those steps in
that wizard of asking could say hey I'm
a little nervous you know I've never
done this before can you put me in a
queue for like special mentoring right
you could opt into a special mentor I
think that would be fantastic like I
don't have any objection to that at all
in terms of be an opt-in system because
there are people there like no I just
want to help them I want to help a
person no matter what I want to go above
and beyond I want to spend like hours
with this person uh Ben's what their
goals are right a great idea Who am I to
judge right so that's fine it's not
precluded from happening but there's a
certain big-city ethos that we started
with like look we're of New York City
you don't come to New York City and
expect them to be Oh welcome to the city
Joe how's it going come on in let me
show you around
that's not how New York City works right
I mean and you know again New York City
is a reputation for being rude which I
actually don't think it is having been
there fairly recently it's not rude
people are just like going about their
business right now look look I have
things to do I'm busy I'm a busy
professional as are you
and since you're a busy professional
certainly when you ask a question you're
gonna ask the best possible question
right because you're a busy professional
and you would not accept anything less
than a very well waiting question with a
lot of detail about why you're doing it
what you're doing what you researched
what you found right because you're a
professional like me right and this rubs
people sometimes the wrong way and I
don't think it's wrong to say look I
don't want that experience I want just a
more chill place for beginners and I
still think sacrifice is not was never
designed for beginners right there's
this misconception that you know even
Joel says some - oh yes deck overflow
for beginners and I think if you're a
prodigy it can be all right but that's
not not really representative right like
I think as a beginner you want a totally
different set of tools you want like
live screen sharing live chat you want
access to resources you want a
playground like a playground you can
experiment in and like test and all this
stuff that we just don't give people
because that was never really the the
audience that we were designing the
second true flow for that doesn't mean
it's wrong and I think it would be
awesome if there was a site like that on
the internet or if stack overlies and
hey you know we're gonna start doing
this that's fine too you know I'm not
there I'm not making those decisions but
I do think the pressure the tension that
you describe is there for people to be
look I'm a little nervous cuz I know I
gotta do my best work right the other
one is something you talk about which is
also really interesting to me is
duplicate questions or do it's a it's a
really difficult problem that you
highlight super far is super hard like
you could take one little topic and you
could probably write 10 20 30 ways of
asking about that topic and there will
be all different I don't know if there
should be one page that answers all of
it is there a way that Stack Overflow
can help disambiguate like separate
these duplicate questions or connect
them together or is it a totally
hopeless difficult impossible task I
think it's a very very hard computer
science problem and partly because
people are very good at using completely
different words it always amazed me on
Stack Overflow you'd have two questions
that were functionally identical and one
question had like zero words in common
with the other question like oh my god
from a computer science perspective how
do you even begin to solve that and it
happens all the time people are
super-good at this right accidentally at
asking the same thing in in like in 10
20 different ways and the other
complexity is we want some of those
duplicates to exist because if there's
five versions with different words have
those five versions point to the one
centralized answer right it's like okay
this is duplicate nope no worries this
here's here's the answer that you wanted
over here on this this this you know the
prime example that we want to have
rather having ten copies of the question
and the answer because if you have 10
copies of the question the answer this
also devalues the reputation system
which programmers hate as I previously
mentioned you're getting reputation for
an answer that somebody else or engaged
it's like well it's an answer but
somebody are sorry gave that answer so
why are you getting reputation for the
same answer as the other guy who gave it
4 years ago people get offended by that
right so the reputation system itself
adds tension to the system in that the
people who have a lot of reputation
become very incentivized to enforce the
reputation system and for the most part
that's good I know it sounds weird but
for most parts like look strict systems
I think to use Tec powerful you have to
have the idea that ok strict systems
ultimately work better and I do think in
programming you're familiar with loose
typing versus strict typing right the
idea that you can declare a variable not
declare a variable rather you start
using a variable and ok I see it's
implicitly an integer BAM awesome
duck equals 5 well duck is now an in
under 5 right and you're like cool
awesome simpler right why would I want
to worry about typing and for a long
time like in the Ruby community they're
like yeah this is awesome like you just
do a bunch of unit testing which is
testing your programs validity after the
fact to catch any bugs that that strict
typing of variables would have caught
and now you have this thing called
typescript from Microsoft from the guy
who built c-sharp Manders who's one of
the greatest minds in software
development right like in terms of
language design and says no no no we
want to bolt on a strict type system to
JavaScript because it makes things
better and now everybody's like oh my
god we we deployed typescript and found
50 latent bugs that we didn't know about
right like this is super common so I
think there is a truth in programming
that strictness it's not the goal we're
not saying be super strict cuz
strictness is correct no it's no no
strictness produces better results
that's what I'm saying right so strict
typing of variables I would say you
almost universally have consensus now is
basically correct should be that way in
every language right duck equals 5
should
during an error because you know you
didn't clear you didn't tell me the duck
was an integer right that's a bug right
or maybe you missed time you typed deck
right instead of duck right you never
know this happens all the time right so
with that in mind I will say that the
strictness the system is correct now
that doesn't mean cruel
that doesn't mean mean that doesn't mean
angry it just means tricked okay so I
think where there's misunderstanding is
and people get cranky right like another
question you asked is like why are
programmers kind of mean sometimes well
who'da programmers work with all day
long so I have a theory that if you're
at a job and you work with all
day long
what do you eventually become an
an and what is the computer
except the world's biggest
because the computer has no time for
your the computer the minute
you make a mistake everything else
crashing down right one semicolon has
crashed space missions right so that's
normal
so you begin to internalize that you
begin to think oh my coworker the
computer is super strict and kind of a
jerk about everything so that's kind of
how I'm gonna be because I work with
this computer and I have to accede to
its terms on everything so therefore you
start to absorb that and you start to
think oh well being really strict
arbitrarily is really good an error of
error code five six two four nine is a
completely good error message because
that's what the computer gave me right
so you kind of forget to be a person at
some level and you know they say great
detectives internalized criminals and
kind of are criminals themselves like
this trope of the master detective is
good because you can think like the
criminal well I do think that's true of
programmers really good programmers
think like the computer because that's
their job but if you internalize it too
much you become the computer you become
a kind of become a jerk to everybody
because that's what you've internalized
you're almost not a jerk but you have no
patience for a lack of strictness as you
said it's not out of a sense of meanness
it's accidental but I do believe it's an
occupational hazard of being a
programmer is you start to behave like
the computer you're very unforgiving
you're very terse you're very Oh wrong
and correct move on it's like well can
you help me like what could I do to fix
now wrong say next question right like
that's normal for the computer right
just fail next right like out of you
remember in Saturday Night Live like in
the nine
they had this character was an IT guy
yeah the move guy move was that Jimmy
Fallon no no can't play dumb okay yeah I
remember move right he had no patience
for he might have been MADtv actually
might have been might a bit but anyway
that was the that's always been the
perception right you start to behave
like the computer it's like oh you're
wrong out of the way you know you've
written so many blog posts about
programming about programs programming
programmers what do you think makes a
good let's start with what makes a good
solo programmer well I don't think you
should be a solo programmer I think to
be a good solo programmer it's kind of
like what I talked about well not on mic
but one of the things john carmack one
of the best points he makes in the book
masters of doom which is a fantastic
book anybody listening this who hasn't
read it please read it's such a great
book is that at the time they were
working on stuff like Wolfenstein and
doom like they didn't have the resources
that we have today they didn't have
Stack Overflow they didn't have
Wikipedia they didn't have like
discourse forums they didn't have places
to go to get people to help them write
they had to work on their own and that's
why it took a genius like Carmack to do
this stuff because you had to be a
genius to invent from first principles a
lot of the stuff he was he was like the
hacks he was coming up with were genius
right genius level stuff but you don't
need to be a genius anymore and that
means not working by yourself you have
to be good at researching stuff online
you have to be good at asking questions
really good questions that are really
well researched which implies oh I went
out and researched for three hours
before I wrote those questions like
that's what you should be doing because
that's what's gonna make you good write
to me this is the big difference between
programming in like the 80s versus
programming today is like you you kind
of had to be by yourself back then like
where would you go for answers I
remember in the early days when I was a
learning Visual Basic for Windows like I
would call the Microsoft helpline on the
phone when I had like program because I
was like I don't know what to do so I
would like go and call and they have
these huge phone banks and like can you
imagine how alien that is now like who
would do that right like that's crazy
so there was just nowhere else to go
when you got stuck right like I had the
books that came with it I read those
study those religiously I I just saw a
post from Steve Sinofsky that said this
C++ version seven
came with like 10,000 pages of written
material because where else were you
gonna figure that stuff out go to the
library I mean you don't have what
capito you didn't have you know read it
you know were to go to answer these
questions so you you've talked about
through the years basically not having
an ego and not thinking that you're the
best programmer in the world it's always
kind of just looking to improve to
become a better programmer than you were
yesterday so how have you changed as a
programmer and as a as a thinker
designer around programming over it'll
past what is it 15 years really of being
a public figure I would say the big
insight that I had is eventually as a
programmer you have to kind of stop
writing code to be effective which is
kind of disturbing because you really
love it and but you realize like being
effective at program at programming in
the general sense doesn't mean writing
code and a lot times you can be much
more successful by not writing code and
writing code in terms of just solving
the problems you have essentially hiring
people that are really good and like
setting them free and like giving them
basic direction right like on strategy
and stuff because a lot of the problems
you encounter aren't necessarily solved
through like really gnarly code they're
solved by conceptual solutions which can
then be turned into code but are you
even solving the right problem I mean so
I would say for me the main insight I
have is to succeed as a programmer you
eventually kind of stop writing code
that's gonna sound discouraging probably
to people hearing but I don't mean it
that way what I mean is that you're
coding at a higher level language
eventually like okay so we're coding an
assembly language right that's the
beginning right you're hard coded to the
architecture then you have stuff like
see we're cool we can abstract across
the architecture you can write code I
can then compile that code for arm or
you know you know whatever you know x86
or whatever else is out there and then
even higher level net right like you're
looking like Python Ruby interpreted
languages and then to me as a programmer
like okay I want to go even higher
I want to go higher than that how do I
abstract higher than the language it's
like well you abstract in spoken
language and written language right like
you're sort of inspiring people to get
things done giving them guidance like
what if we did this what if we did this
you're writing in the highest level
language that there is
which is for me English right whatever
your spoken language is so it's all
about being effective right and I think
a patrick mckenzie Patio 11 on Hacker
News and works at stripe has a great
post about this of how calling yourself
a programmer is a career limiting move
at some level once you get far enough
from your crin I really believe that and
again I apologize this is sound
discouraging I don't mean it to be but
he's so right because all the stuff that
goes on around the code like the people
mm-hmm like that's another thing if you
look at my early blogging piece is about
Wow
programming is about people more than
it's about code which doesn't really
make sense right but it's about can
these people even get along together can
they understand each other can you even
explain to me what it is you're working
on are you solving the right problem
people weren't right another classic
programming book which again up there
with code complete please read people
where it's that software is people right
people are the software first and
foremost so a lot of the skills that I
was working on early on the blog were
about figuring out the people parts of
programming which were the harder parts
the hard part of programming once you
get to a certain skill of in programming
you can pretty much solve any reasonable
problem that's put in front of you
you're not writing algorithms from
scratch right that just doesn't happen
so any sort of reasonable problem for in
front of you're gonna be able to solve
but what you can't solve is our manager
is a total jerk you cannot solve that
with code that is not a codes problem
and yet that will you way more
than oh we had to use this stupid
framework I don't like or or you know
Sam keeps writing bad code that I hate
or you know you know Dave is off there
in the wilderness writing god knows what
right these are not your problems your
problems your manager or a co-worker is
so toxic to everybody else in your team
that like nobody can get anything done
because everybody's so stressed out and
freaked out right these are the problems
that you have to attack absolutely and
so as you go to these higher level
abstractions as you developed as a
programmer to higher higher level
abstractions go into natural language
you're also the guy who kind of preached
you know building it you know diving in
and doing it and and and like learn by
doing yes do you do you worry that as
you get to higher higher level
abstractions
you lose track
of the lower level of just building is
like do you worry about that you know
even not maybe now but 10 years from now
20 years from now well no I mean there
is always that paranoia and oh gosh I
don't feel as valuable since I'm not
writing code but for me like when we
started the discourse project it was
Ruby which I didn't really know Ruby I
mean as you pointed out and this is
another valuable have straight from
Stack Overflow you can be super
proficient for example C sharp which I
was working in that's what we built
Stack Overflow and and still is written
in and then switch to Ruby and you're a
newbie again right like I'm but but you
have the framework I know what a for
loop is I know what recursion is I know
you know what would attract a stack
traces right like I have all the
fundamental concepts to be a programmer
I just don't know Ruby so I'm still on a
higher level I'm not like a beginner
beginner like you're saying I'm just
like I need to apply my programming
concepts I already know to Ruby what so
there's a question that's really
interesting so looking at Ruby how do
you go about learning enough that your
intuition can be applied well that
carryover that's all trying to get to is
like what I realized written when I
started was just me and Robin I realized
if I bother Robin I am now costing us
productivity right every time I go to
Robin rather than building the the are
our first alpha version of this course
he's now answering my stupid questions
about Ruby is that a good use of his
time is that a good use of my time
the answer to both of those was
resoundingly no right like we were
getting to an alpha and it was a pretty
much disk ok we'll hire more programmers
right like we eventually hired Neil and
then eventually Sam who came in as a
co-founder actually was Sam first then
Neil later but the answer of the problem
is just hire other competent programmers
it's not like teach now I shalt pull
myself up by my bootstraps and Ruby but
at some point writing code becomes a
liability to you in terms of getting
things done there's so many other things
that go on in the project like building
the prototype like you mentioned like
well how do you if you're not writing
code has every keep focus on like what
what are we building well first basic
mock-ups and research right like what
what do we even want to build there's a
little bit of that that goes on then
very quickly get to the prototype stage
like build a prototype
let's iterate on the prototype really
really rapidly that's what we do at this
course and that's what we we demoed to
get our seed funding for this course was
the the alpha version of discourse that
we had running and ready to go and it
was very it was bad
I mean it was I'll just tell you it was
bad I have we have screenshots and I'm
just like embarrassed to look at it now
but it was the prototype we were
figuring out like what's working what's
not working because there's such a broad
gap Bateen between the way you think
things will work in your mind or even on
paper and the way they work once you sit
and live in the software like actually
spend time living and breathing us out
we're so different
so my philosophy is get to a prototype
and then what you're really optimizing
for speed of iteration like how you can
turn the crank how quickly can we
iterate that's the absolutely critical
metric of any software project and I had
a tweet recently that people liked and I
totally this is so fundamental to what I
do is like if you want to measure the
core competency of any software tech
company it's the speed at which somebody
can say hey we really need this word in
the product change this word right
because it will be more clear to the
users like what like instead of respond
it's a reply or something but there's
some from the conception of that idea to
how quickly that single word can be
changing your software rolled out to
users that is your lifecycle that's your
health your your heartbeat if your
heartbeat is like super slow you're
basically dead no seriously like if it
takes two weeks or even a month to get
that single word change that was oh my
god this great idea that word is so much
clearer I'm talking like a super like
everybody's on board for this change
it's not like let's just change at work
cuz we're bored it's like this is an
awesome change and then it takes a you
know months to roll out it's like what
you're dead like you can't iterate you
can't do anything right like so anyway
about the heartbeat it's like get the
the prototype and then iterate on it
that's that's what I view is like the
central tenets of some modern software
development that's fascinating you put
it that way it's actually so I work in I
build a Thomas vehicles and when you
look at what maybe compare Tesla to most
other automakers the the psych the
whatever the heartbeat for Tesla is
literally days now in terms of they can
over-the-air deploy software updates to
all their vehicles which is markedly
different than every other automaker
which takes years to update a piece of
software and so and that's reflected in
everything that's the the final product
that's reflected and really how slowly
they adapt to the times
clear I'm not saying being a hummingbird
is the goal either it's like you don't a
heartbeat it's like so fast it's like
you're your wing you know you're just
freaking out but like it is a measure of
health you should have a healthy
heartbeat it's up to four people
listening this decide what that means
but it has to be healthy has to be
reasonable because otherwise you just
get me frustrated because like that's
how you build software you make mistakes
you roll it out you live with it
you see what it feels like and say oh
god that was a terrible idea oh my gosh
this could be even better if we did why
right you turn the crank and then the
more you do that the faster you get
ahead of your competitors ultimately
because you're it's rate of change right
delta-v right how fast are you moving
well within a year you're gonna be miles
away
by the time they catch up with you right
like that's the way it works and plus
users like I as a software developer I
love software that's constantly changing
because I don't understand people get
super pissed off when like oh they
changed the software on me how dare they
I'm like yes change the software change
it all the time man that is that's what
makes this stuff great is that it can be
changed so rapidly and become something
that that is greater than it is now now
credit there's some changes that suck I
admit I've seen it many times but in
general it's like that's what makes
software cool right is that it is so
malleable like fighting that is like
weird to me because it's like well
you're fighting the essence of the thing
that you're building like that doesn't
make sense you want to really embrace
that not not to be a hummingbird but
like embrace it to a healthy cycle of
your heartbeat right so you talk about
that people really don't change it's
true
that's why probably a lot of the stuff
you write about in your blog probably
will remain true there's a flip side of
the coin people don't change so
investing and understanding people is is
like learning Unix in 1970 because and
nothing has changed right like yeah all
those things you've learned about people
will still be valid 30 40 years from now
whereas if you learn the latest
JavaScript framework that's gonna be
good for like two years
right yeah exactly so but if you look at
the future of programming so there's a
people component but there's also the
technology itself do you what do you see
as the future of programming will it
change significantly or as as far as you
can tell people are ultimately
programming and so it will not it's not
something that you foresee changing and
you fund the month away well you gotta
go look
on sort of the basics of programming and
one things that always shocked me is
like source control like I didn't learn
anything about source control I graduate
from college in 1992 but I remember
hearing from people like in ladies like
1998-99 like even maybe today they're
not learning source control and to me
it's like well how can you not learn
source control that is so fundamental to
working with other programmers working
in a way they don't lose your work like
just just basics off the bed literal
bedrock software development is source
control now you compare today like
github right like Microsoft brought
github which I think was incredibly
smart acquisition move on their part now
they have anybody who wants like
reasonable source control to go sign
them and github it's all set up for you
right there's tons of walkthroughs tons
of tutorials so from the concept of like
has programming advanced from say 1999
it's like well hell we have github I
mean my god yes right like it's it's
massively advanced over over what it was
now as to whether program is is
significantly different I'm gonna say no
but I think the baseline of like what we
view is like fundamentals will continue
to go up and actually get better like
source control that's one of them in
fundamentals that has gotten I mean
hundreds of orders of magnitude better
than it was 10 20 years ago so those are
the fundamentals let me introduce two
things that maybe you can comment on so
one is mobile phones so that could
fundamentally transform what what
programming is or maybe not maybe you
can comment on that and the other one is
artificial intelligence which promises
to in some ways to do some of the
programming for you is one way to think
about it so it's really what a
programmer is is using the intelligence
that's inside your skull to do something
useful the hope with artificial
intelligence is that it does some of the
useful parts for you you don't have to
think about it so do you see smart
phones the fact that everybody has one
and they're getting more and more
powerful as potentially changing
programming and do you see AI is
potentially changing problem okay so
that's good so smart phones have
definitely changed I mean since you know
I guess 2010 that's when they really
started getting super popular I mean in
the last eight years the world has
literally changed
like everybody carries a computer around
and that's normal I mean that is such a
huge change in society I think we're
still dealing with a lot of the positive
negative ramifications of that right
like everybody's connected all the time
everybody's on the computer all the time
that was my dream world as a geek right
but it's like be careful what you ask
for right like wow no everybody's a
computer it's not quite the utopia that
we thought it would be right computers
can be used for a lot of stuff that's
not necessarily great so to me that's
the central focus of the smartphone is
just that it puts a computer in front of
everyone
granted a small touchscreen smallish
touchscreen computer but as for
programming like I don't know I don't
think that I've kind of over time come
to subscribe to the UNIX view of the
world when it comes to programming it's
like you want to teach these basic
command line things and that is just
what programmers gonna be for I think a
long long time I don't think there's any
magical like visual programming that's
gonna happen I just I don't know I've
over time I've become a believer in that
UNIX philosophy it was just you know
they kind of had it right with UNIX
that's gonna be the way it hits for a
long long time and well we'll continue
to like I said raise the baseline the
tools will get better it'll get simpler
but it's still fun mental gonna be
command-line tools you know makes fancy
IDs that's kind of it for the
foreseeable future I'm not seeing any
visual programming stuff on the horizon
because you can I think like what do you
do on a smartphone that will be directly
analogous to programming like I'm trying
to think right like and there's really
not much so not necessarily analogous to
programming but the kind of things that
the kind of programs you would need to
write might need to be very different
yeah and the kind of language is I mean
but I probably also subscribed to the
same just because everything in this
world might be written in JavaScript
oh yeah that's different that's already
happening I mean this course is a bit on
discourses itself javascript is another
bet on that side of the table and I
still strongly believe in that so I
would say smartphones have mostly a
cultural shift more than a programming
shift now your other question was about
artificial intelligence and like sort of
devices predicting what you're gonna do
and I do think there's some strengths to
that I think artificial intelligence
kind of overselling it in terms of what
it's doing it's more like people are
predictable right
people do the same things like let me
give you an example one one cheque we
put in a discourse that's in a lot of
big commercial websites is say you log
in from New York City now and then an
hour later you log in from San Francisco
like well hmm that's interesting how did
you get from New York to San Francisco
in one hour so at that point you're like
okay this is a suspicious login at that
point so we would alert you it's like
okay but that's an AI right that's just
a heuristic of like how did you in one
hour get 2,000 miles right that doesn't
when you grab maybe you're on a VPN
there's other races happen but that's
just a basic prediction based on the
idea that people pretty much don't move
around that much like they may travel
occasionally but like nobody I mean
unless you're a traveling salesman
that's literally we're traveling the
world every day like there's so much
repetition and predictability in terms
of things you're going to do and I think
good software anticipate your needs like
for example Google I think it's called
Google now or whatever that Google thing
is that predicts your commute and
predicts them based on your phone
location like where are you every day
well that's probably where you work that
kind of stuff I do think computers can
get a lot better at that but I hesitate
to call it like full-blown AI it's just
computers getting better at like first
of all they have a ton of because every
has a smartphone now I'm suddenly how
all this data that we didn't have before
about location about like you know
communication and feeding that into some
some basic heuristics and maybe some
fancy algorithms that turn it into
predictions of anticipating your needs
like like a friend would write like oh
hey I I see your home would you like
some dinner right like let's go get some
food because that's usually what we do
this time of day right and the context
of actually the act of programming DCI
des improving and making the life of
programming is better I do think that is
possible cuz things a lot of repetition
in programming right oh you know Clippy
would be the bad example of oh I see it
looks like you're writing a for loop
um but there are patterns in code right
like in and actually libraries are kind
of like that right like rather than go
you know code up your own HTTP request
library it's like what you'd use one of
the existing ones that we have that's
already troubleshot right it's not a I
per se it's just you know building
better Lego bricks bigger Lego bricks
that have more functionality in them so
people don't have to worry about the
low-level stuff as much anymore
like WordPress for example to me is like
a tool for someone who is in a
programmer to do something I mean you
can turn WordPress into anything it's
kind of crazy actually through perla
plugins right and that's not programming
per se it's just Lego bricks stacking
WordPress elements right a little bit of
configuration glue so I would say maybe
in a broader sense what I'm seeing like
they'll be more gluing and less like
actual programming and that's a good
thing right because most of the stuff
you need is kind of out there already
you said 1970 is Unix do you see PHP and
these kind of old remnants of the early
birth of programming remaining with us
for a long time like you said Unix in
itself
do you see ultimately you know this
stuff just being there out of momentum I
kind of do I mean I was a big believer
in Windows early on and I was a big you
know I was like a UNIX what a waste of
time but over time I've completely
flipped on that where I was like okay
the UNIX guys were right and pretty much
Microsoft and windows were kind of wrong
at least on the server side not on the
desktop right you need a GUI you know
what stuff and yeah the two philosophies
like Apple built on UNIX effectively
Darwin and on the desktop is a slightly
restore even on the server side where
you're going to be programming now it's
question where the program is gonna be
there's gonna be a lot more like
client-side programming because
technically discourse is client-side
programming the way you get discourse we
deliver a big ball of JavaScript which
is then execute locally so we're really
using a lot more local computing power
will still retrieve the data obviously
we have to display the posts on the
screen and so forth but in terms of like
sorting and a lot of the basic stuff
we're using the host processor but to
the extent that a lot of programming is
still gonna be server-side I would say
yeah the UNIX philosophy definitely one
and they'll be different veneers over
the UNIX but it's still if you if you
peel away one or two layers it's gonna
be UNIX safe for a long I think UNIX one
I mean so definitively it's interesting
to hear you say that because you've done
so much excellent work on the Microsoft
and aside in terms of back-end
development cool so what's the future
hold for Jeff Atwood amid the discourse
continuing the discourse in trying to
improve conversation on the web
this force is whatever be it is a and
originally I call it a five-year project
then really quickly revised that to a
ten-year project so where we started in
early to that 2013 that's we launched
the first version so we're still you
know five years in this is the part
where it starts getting good like we
have a good product out this course
there's any any project building
software it takes three years to build
what you wanted to build anyway like v1
is gonna be terrible which it was but
you ship it anyway cuz that's how you
get better at stuff it's about turning
the crank it's not about v1 being
perfect because that's ridiculous it's
about v1 then let's get really good at V
1.1 1.2 1.3 like how fast can we iterate
and I think we're iterating like crazy
on discourse the point that like it's a
really good product now we have serious
momentum and my original vision was I
want to be the wordpress of discussion
meaning someone came to you and said I
want to start a blog although the very
question is kind of archaic now it's
like who actually blogs anymore but I
wanted the answer to that to be it would
be what did WordPress normally because
that's the obvious choice for blogging
most the time but if someone said hey I
want to I need a group of people to get
together and do something the answer
should be discourse right that should be
the default answer for people cuz it's
open source it's free doesn't cost you
anything you control you can run it your
minimum server across four discourses
five bucks a month at this point they
actually got the VPS prices down it used
to be ten dollars a month for one
gigabyte of RAM which we where our
dependent we have a kind of heavy stack
like there's a lot of stuff in discourse
you need post grass you need Redis you
need Ruby on Rails you need a sidekick
for scheduling it's not a trivial amount
of stuff because we were architected for
like look we're building for the next
ten years I don't care about shared PHP
hosting that's that's not my model my
idea is like hey you know eventually
this is gonna be very cheap for
everybody and I want to build it right
using again you know hire bigger
building block levels right that have
more requires and there's a wordpress
model of wordpress.org juarez calm is
their central hosting for this course or
no there is we're not strictly
segmenting into the open source versus
the commercial side we have a hosting
business that's how this course makes
money is we host discourse instances and
we have really close relationship with
our customers of the symbiosis of them
giving us feedback on the product we
definitely wait feedback from customers
a lot heavier than feedback
from somebody who just wanders by and
gives feedback but that's where we make
all our money but we don't have a strict
division we encourage people to use this
course like the whole point is that it's
free right you're anybody can set it up
I don't want to be the only person that
hosts discourse that's absolutely not
the goal but it is a primary way for us
to build a business and it's actually
kind of a great business I mean the
business is going really really well in
terms of hosting so I I used to work at
Google research is a company that's
basically funded on advertisement so
it's Facebook let me ask if you can
comment on it
I think advertisement is best so you'd
be extremely critical on what ads are
but at its best it's actually serving
you in a sense as giving you it's
connecting you to what you would want to
explore so it's like related posts or
related content is the same that's the
best of advertisement so this course is
connecting people based on their
interests it seems like a place where
advertisement at its best could actually
serve the users is that something that
you're considering thinking about as a
way to bring to financially support the
platform that's interesting because I
actually have a contrarian view of
advertising which I kind of agree with
you I recently installed that blocker
like reluctantly because I don't like to
do that but like the performance of the
ads man like they're so heavy now and
like it's just crazy so like it's almost
like a performance argument more than
like I actually am Pro ads and I
contrary I have a contrarian viewpoint I
agree with you if you do ads right it's
showing you stuff you'll be interested
in anyway like I don't mind that that
actually is kind of a good thing
so plus I think it's it's rational to
want to support the people that are
doing this work through seeing their ads
and but that said I run adblock now
which I I didn't want to do but I was
convinced by all these artists like 30
40 megabytes of stuff just to serve you
ads yeah it feels like as now or like
the experts exchange of whenever you
started Stack Overflow it's a little bit
it's all there's so many companies and
Antec though it's embarrassing like you
can do that if you see those logo charts
of like just a whole page just like you
can't even see them they're so small
there's so many companies in the space
but since you brought it up I do want to
point out that very very few discourse
sites
run using an ad-supported model it's not
effective like it's too diluted it's too
weird it doesn't pay well and like users
hate it so it's a combination of like
users hate it it doesn't actually work
that well in practice like in theory yes
I agree with you but if you clean fast
ads that were exactly the stuff you
would be interested awesome we're so far
from that though right like Google does
an okay job
retargeting and stuff like that but in
the in in the real world
discourse sites rarely can make ads work
it just doesn't work for so many reasons
but you know it does work is
subscriptions patreon affiliate codes
for like Amazon of like just oh here
here's a cool yo-yo click and then you
click and go to Amazon they get a small
percentage of that which is fair I think
because you saw the yo-yo on that site
and you click through and you bought it
right that's fair for them to get 5% of
that or 2% of that or whatever it is
those things definitely work in fact a
site that I used to participate on a lot
I helped the owner one things I I got
them switched to discourse obviously
paid them to switch to discourse because
I was like look you guys got a switch I
can't come here anymore all this
terrible in software but I was like a
look and on top of that like you're
serving people ads that they hate like
you should just go full on patreon
because he had a little bit of patreon
go full on patreon do the Amazon
affiliates thing for any Amazon links to
get posted and just do that and just
triple down on that stuff and that's
worked really well for them and this
creator in particular so that stuff
works but traditional ads I mean
definitely not working at least on this
course so last question you've created
the code keyboard I've programmed most
of my adult life and a Kinesis keyboard
I have one upstairs now can you describe
what a mechanical keyboard is and why is
it something that makes you happy well
you know this is another fetish item
really like it's not required you can do
programming on any kind of keyboard
right even like an on-screen keyboard oh
god that's terrifying
right like well you could but if you
look back to the early days computing
there were chiclet keyboards which are I
think those are awful right but what's a
chick like you were oh god okay well
it's just like thin rubber membranes all
the rubber ones oh no super bad right
yeah so it's a fetish item all it really
says is look I care really about
keyboards because the keyboard is the
primary
method of communication with computer
right so it's just like having a nice
mic for this this podcast you want a
nice keyboard right because it has tat
very tactile feel I can tell exactly
when I press the key I get that little
click so oh and it feels good and it's
also kind of a fetish shot it was like
wow I care enough about programming that
I care about the tool the primary tool
that I use committing to computer make
sure it's as good as it feels good to
use for me and like I can be very
productive with it so to be honest it's
a little bit of a fetish item but a good
one it indicates that you're serious and
in case you're interested it indicates
that you care about the fundamentals
because you know what makes you a good
programmer being able to type really
fast right like this is true right so a
core skill is just being able to type
fast enough to get your ideas out of
your head into the codebase so just
practicing your typing can make you a
better programmer it is also something
that makes you well makes you enjoy
typing correct the actual act something
about the process I got played piano
it's time so there's a tactile feel that
ultimately feeds the passion makes you
happy right no totally that's it I mean
and it's funny because artisanal
keyboards have exploded like mass drop
has gone ballistic with this stuff
there's probably like 500 keyboard
projects on mass drop alone and there's
some other guy I follow on Twitter I
used to write for this the site the tech
report way back in the day and he's like
every week he's just posting like what I
call keyboard porn of like just cool
keyboards like how my god they look
really cool right like that's like how
many keyboards this guy yeah
it's got me with yo-yos how many rows do
you have how many do you need well
technically one but I like a lot I don't
know why so same thing with keyboards so
yeah they're awesome
like I highly recommend anybody who
doesn't have a mechanical to research it
look into it and see what you like and
you know it's ultimately a fetish item
but I think these sort of items these
religious artifacts that we have are
part of what make us human like that
that part you important right it's kind
of makes life worth living and yes it's
not necessary in the strictest sense but
ain't nothing necessary if you think of
yet right like and so yeah why not so
sure Jeff thank you so much for talking
today yeah you're welcome thanks for
having
you