By playing, you agree to uListen's Terms and Privacy Policy and YouTube's Terms of Service.
Lex Fridman PodcastJeff Atwood: Stack Overflow and Coding Horror | Lex Fridman Podcast #7
Summaries, chapters, transcripts, and FAQs on this page are made by uListen, not YouTube.
Great conversations run long. Their best ideas don't have to.
uListen is free on iPhone, iPad, Android, Chrome, and Claude.
See howPartial transcript
75 min read · 15,004 wordsWhat motivates programmers: puzzles, tinkering, and brute-force learning
Lex Fridman 0:00 The following is a conversation with Jeff Atwood. He is the co-founder of Stack Overflow and 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 @lexfrid. Spelled F-R-I-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, 10 years ago, what do you think, uh, motivates most programmers? Is it fame, fortune, glory, process of programming itself, or is it the sense of belonging to a community?
Jeff Atwood 1:16 I think it's, uh, 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 don't, nobody really works alone in programming anymore. But I will say there's a, there's an aspect of sort of hiding yourself away and just sort of beating on a problem til you solve it. Like, brute force basically, to me is what a lot of programming is, is like the computer's so fast, right, that you can do things that would take forever for a human, but you can just do 'em like so many times and so often that you, you get the answer, right?
Lex Fridman 1:52 You're saying just the pure act of tinkering with the code-
Jeff Atwood 1:55 Yes.
Lex Fridman 1:55 ... is, is the thing that drives most programmers. The, the joy, the struggle balanced within the joy of overcoming the, the brute force process of pain and suffering that eventually leads to something that actually works? That-
Using data to beat intuition: shuffling algorithms and the Monty Hall problem
Jeff Atwood 2:09 Well data's fun too. Like there's this thing called the, uh, the shuffling problem. Like the naïve shuffle that most programmers write has a huge flaw, and there's a (laughs) lot of articles online about this 'cause it can be really bad if you're like a casino and you have an unsophisticated programmer writing your shuffle algorithm. There are 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 a l- an equal distribution of all the cards. And with the naïve 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." Um, you just writ- 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 an- correct answer is you should always switch, in the Monty Hall problem, which is not intuitive and peop- 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 then always switches and just compare, you would immediately see that you don't have to be smart, right? You don't have 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?
Lex Fridman 3:19 So empirically find it's, but, uh, what's the joy of that? What, what, so for you, for you personally, uh, outside of family, what motivates you in this process, if at all-
From coding to leadership: “language is code” and leading by example
Jeff Atwood 3:29 Well to be honest, like I don't really write a lot of code anymore. Like what I do at Discourse is like manager-y stuff, which I always kinda despised, right? Like (laughs) as a programmer you think of managers as people who don't really do anything themselves. Uh, 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 y- done than you could by yourself anyway. Right?
Lex Fridman 3:52 You said language is code?
Jeff Atwood 3:53 Language is code.
Lex Fridman 3:54 Meaning communication-
Jeff Atwood 3:55 Yes.
Lex Fridman 3:55 ... with other humans?
Jeff Atwood 3:56 Yes. It is.
Lex Fridman 3:56 You, you can think of it as a systematic... So what, what, what is it like to be, what makes, before we get into programming, what makes a good manager? What makes a good leader?
Jeff Atwood 4:05 Well, I think a leader, it's, 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, particularly when you have kids 'cause you realize that your kids are watching you like all the time, like even w- in ways that you've stopped seeing yourself. Like the hardest person to see on the planet is really yourself, right? It's funny to see other people and, and, and make judgments about them but yourself like, you're super biased. (laughs) 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 aren't going to be. So you know, that's one of the insights is, you know, you gotta 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 (laughs) of leaders that really mess this up, right? Like (laughs) they make decisions that are like wow, that's, why would... You know, it just a, uh, it's, it's, it's a bad example for other people. So I think leading by example is one. Uh, the other one I believe i- is working really hard, and I don't mean like working exhaustively but like showing a real passion for the problem, like you know, not necessarily your solution to the problem but the problem itself is just one that you really believe in. Like with Discourse for example, the problem (laughs) 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 out to solve, or you know, reach some consensus on discussion, or just like not hurt each other even, right? Like maybe it's a discussion that 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, the things you don't do also say a lot about what you are.
Self-awareness and decision-making: feedback loops, shared leadership, and moral intuition
Lex Fridman 6:01 Yeah, so let's- let's pause on that one because those two things are fascinating. So how do you have, as a leader, is 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 of 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 signal?
Jeff Atwood 6:25 I think there's- there's two aspects to that. One is, like, processing feedback that you're getting. So...
Lex Fridman 6:29 How do you get feedback?
Jeff Atwood 6:30 Well, right-
Lex Fridman 6:30 (laughs)
Jeff Atwood 6:30 So are- are you- are you getting feedback, right? Like, so one way we do it, for example, at 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, wow, that's, you know, there can be misunderstandings, things like that. 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 in my experience. For communities, for example, like, if you have a community that's run by one person, that one person makes all the decisions, that person's gonna have a bad day (laughs) . 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, have- have multiple people doing leadership and have them talk amongst each other so you're giving each other feedback about the decisions, uh, 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 body. Uh, 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- a handful of sociopaths out there that don't, but most people, they want other people to think of them as a good person.
Lex Fridman 7:34 Yeah.
Jeff Atwood 7:34 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's sort of the- 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 (laughs) is important.
Handling criticism and unpopular choices: explain the reasoning, not just the decision
Lex Fridman 7:50 But you said that voice also for... I think this is a programmer situation, too, where sometimes the devil on the shoulder is a little- a little too loud. So you're a little too self-critical, uh, for a lot of developers, uh, especially when you have introverted personality. How do you struggle with the self-criticism or the criticism of others? So, uh, one of the things of leadership is to do something that's, uh, potentially unpopular or- or people doubt you and you still go through with the decision. So what's that balance like?
Jeff Atwood 8:21 I think you have to walk people through your decision-making, right? Like, you have to... This is where blogging is really important and 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 going to reach," right?
Lex Fridman 8:32 Mm-hmm.
Jeff Atwood 8:33 Uh, it's one thing to say, like, "This is a decision, it's final. Deal with it." Right? That's not usually satisfying to people. But if you say, "Look, you know, we've been thinking of 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 what we want to achieve. And we've looked at these options and we think this of the available options is the best option." People will be like, "Oh, okay. All right, maybe I don't totally agree with you, but I can kind of see where you're coming from." And, like, I see it's not just arbitrary decision delivered from a- a cloud of flames in the sky (laughs) , 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 at this problem.
Why Discourse exists: resisting platform ownership and rebuilding community autonomy
Lex Fridman 9:18 And the other one you said is passion, so... or, uh, hard work, sorry. Uh...
Jeff Atwood 9:22 Well, those are tied together to me-
Lex Fridman 9:23 Yeah.
Jeff Atwood 9:23 ... in my mind. I wouldn't say hard work and passion. Like, for me, like, I just really love the problem Discourse is setting 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 because I don't... I think Facebook is really good at execution. I got to 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?
Lex Fridman 9:56 Is it... You talking about the company or just the mechanism-
Jeff Atwood 9:58 Well-
Lex Fridman 9:58 ... of how Facebook works?
Jeff Atwood 9:59 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 happen can happen. But like this- this idea of a company town where all human communication is implicitly owned by WhatsApp, Instagram, and Facebook. And it's really disturbing too, because Facebook is really smart. Like I said, they're great at execution. Buying WhatsApp and buying Instagram were incredibly smart decisions.
Lex Fridman 10:32 Mm-hmm.
Jeff Atwood 10:33 Um, and they also do this thing, I don't know if you know, but they- 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-
Lex Fridman 10:51 So l- let's- let's just 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 communities? So there's Stack Overflow that you've built, there's Discourse.
Jeff Atwood 11:05 Yeah.
Lex Fridman 11:05 So Stack Overflow is kind of like a wiki, Wikipedia, you talk about, uh, 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 Discourse? (laughs)
Jeff Atwood 11:18 Yeah.
Lex Fridman 11:18 Start from the beginning.
How Stack Overflow was invented: Frankensteining voting, wiki editing, blogging identity, and reputation
Jeff Atwood 11:19 Well, let me start from the very beginning. So Stack Overflow is a very structured wiki-style Q&A for programmers, right? And, uh, that was the problem we first worked on. And 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 Q&A, which is a very narrow subset of- of human communication, right?
Lex Fridman 11:36 So, sorry, so- so when you started Stack Overflow, you thought...... you didn't even know the Q&A.
Jeff Atwood 11:41 Not really.
Lex Fridman 11:42 You didn't know it would be Q&A.
Jeff Atwood 11:42 I mean, we kind of... Well, we didn't know. We did- we had an idea of like, okay, these are things that we see working online. We had a goal, right? Our goal was, uh, there was this site, Experts Exchange, with a very-
Lex Fridman 11:51 (laughs)
Jeff Atwood 11:51 ... unfortunate name.
Lex Fridman 11:52 Thank you for killing that site.
Jeff Atwood 11:54 Yeah. I know, right? Like and a lot of people don't remember it anymore, which is great.
Lex Fridman 11:57 Right.
Jeff Atwood 11:57 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.
Lex Fridman 12:01 (laughs)
Jeff Atwood 12:02 Uh, 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, okay, we'll take aspects of Digg and Reddit, like voting, were very important. Uh, reordering answers based on votes. Wiki style stuff of like being able to edit posts, not just your post, but other people's posts to make them better and keep them more up-to-date. Uh, ownership of blogging of like, okay, this is me. I'm saying this in my voice, you know. This is the stuff that I know and, you know, you get... Your, your reputation accrues to you.
Lex Fridman 12:32 Mm-hmm.
Jeff Atwood 12:33 Uh, and it's peer recognition. So you asked earlier like, what motivates programmers? I think peer recognition motivates them a lot. Uh, that was one of the key insights of Stack Overflow was like, recognition from your peers is why things get done. Not necessarily money, not necessarily 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. Um, 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, uh, and that became
Why Stack Overflow became strict: separating Q&A from discussion and designing for intentional learning
Jeff Atwood 13:03 Stack Overflow. And it, it... 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, "Okay, is it answering the question? Is it clarifying the question or could it be an alternative answer to the same question?" 'Cause there's usually more than one way to do it in programming. There's like say five to 10 ways. And one of the patterns we got into early on with Stack Overflow was, there are questions where there would be like hundreds of answers and we're like, "Well, how can there be a programming question with 500, 200, 500 answers?" And we looked at those and 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? Uh, and we had to sort of backfill a bunch of 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 'cause I don't know what the funniest programming cartoon is, so-"
Lex Fridman 13:59 Mm-hmm.
Jeff Atwood 13:59 "... sorry, can't compile this code now." Right? It's not a real problem you're facing (laughs) in your job. So that was one rule. And then second, like, what can you really learn from that? It's like what I call accidental learning or Reddit style learning.
Lex Fridman 14:09 Mm-hmm.
Jeff Atwood 14:10 Where you're just like, "Oh, I'll just browse some things and oh wow, you know, did you know tree frogs only live three years?" I mean, I, I just made that up. I don't know if that's true, but, uh, I didn't really set out to learn that. I don't need to know that, right?
Lex Fridman 14:20 Yeah.
Jeff Atwood 14:20 It's accidental learning. It was more intentional learning where you're like, "Okay, I have a problem and I want to learn about stuff around this problem I'm having." Right? And it could be theory, it 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?
Lex Fridman 14:37 Mm-hmm.
Jeff Atwood 14:38 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.
Lex Fridman 14:43 Mm-hmm.
Jeff Atwood 14:43 And the system became very strict over time and a lot of people still complain about that. And I wrote, uh, my latest blog entry, uh, What Does StackOverflow Want To Be, Want To Be When It Grows Up?
Lex Fridman 14:52 When It Grows Up. Celebrating the 10 year anniversary. Yeah.
Jeff Atwood 14:54 Yeah. So 10 years and it, the system has 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 programmer got like 500 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 it because they wrote the joke? Probably not. I mean, if they did maybe, or the cartoon, right?
Lex Fridman 15:17 Mm-hmm.
Jeff Atwood 15:18 They're getting a bunch of reputation based on someone else's work that's not even like programming, it's just-
Lex Fridman 15:23 Right.
Jeff Atwood 15:23 ... a joke, right? It's a-
Lex Fridman 15:24 Yeah.
Jeff Atwood 15:24 ... related program. So you, you begin to resent that. You're like, "Well that's not fair." And it isn't. At some level they're correct. I mean, I empathize 'cause like it's not correct to 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 l- laying out, oh, here's why you're seeing the behavior that you're seeing and 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 get reputation for that and not so much for, "Wow, look at this funny thing I saw." Right?
Lex Fridman 15:51 Great. So there's this very specific Q&A format and then take me through the journey towards Discourse and Facebook and Twitter. So you start at the beginning that StackOverflow evolved to have a purpose. So where does Discourse, this, uh, passion you have for, uh, creating community for discussion, what, where does that... when was that born and how?
Q&A vs forums: why some topics (Lego, Poker) fail in Stack Exchange’s format
Jeff Atwood 16:12 Well, part of it is based on the realization that StackOverflow is only good for very specific subjects where there's sort of a... 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, of knowledge that defines like whatever it is, you can refer to that book and it'll give you the answer. There has to be... it only works on subjects where there's like semi-clear answers to things-
Lex Fridman 16:35 Mm-hmm.
Jeff Atwood 16:35 ... that can be verified in some form. Uh, now again, there's always more than one way to do it. Uh, there's complete flexibility in the system around that, but where it falls down is, is stuff like Poker and Lego. Like we had... if you go to stackexchange.com, we have an engine that, that tries to launch different Q&A topics, right?
Lex Fridman 16:52 Mm-hmm.
Jeff Atwood 16:52 And people can propose, uh, Q&A topics, um, sample questions and, and if it gets enough support within the network, we launch that Q&A site. So some of the ones we launched were Poker and Lego and they did horribly, right? Because, um, I mean they 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, to, to smoke while playing Poker or, you know, what's, what's a cool set of cards to use when I'm playing Poker or, you know, what's 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-
Lex Fridman 17:34 Right.
Jeff Atwood 17:34 ... you know, same thing like here's this cool Lego set I found. Look how awesome this is. And like yeah, that's freaking awesome. Right?
Lex Fridman 17:38 Mm-hmm.
Jeff Atwood 17:38 It's not a question, right? There's all these social components to discussions that don't fit at all. Like we literally have to disallow those in StackOverflow 'cause 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?
Lex Fridman 17:58 (laughs)
Jeff Atwood 17:58 Like, it's not a blocking problem in the world.
Lex Fridman 18:00 Yeah, that's right.
Jeff Atwood 18:00 It's just an opportunity to hang out and, and discuss. So Discourse was a way to address that and say, "Look, you know," uh, discussion forum software had, was very, very bad. And when I came out of Stack Overflow in tw- late tw- early 20- early 2013, early, early 2012, um, it was still very, very bad. I expected it improved in, in, in the four years since I last looked, but it had not improved at all. And I was like, "Well, that's kinda terrible because I love these communities of people talking about things that they love," you know? That, that they're 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, have this startup. Here's my idea." And, uh, the first thing I would say to them is like, "Well, first, why are you asking me? Like, I don't really know your, your field, right, like, 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'd say, "Oh, great idea," like, "How do I do that?"
Lex Fridman 18:56 Mm-hmm.
Jeff Atwood 18:56 And then that's when I started playing sad trombone 'cause I realized all the software involving talking to your users, customers, audience, patrons, whatever it is, it was all really bad. You know?
Lex Fridman 19:05 Mm-hmm.
Jeff Atwood 19:05 It 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, is from their users, from their community, right? That's what we did on Stack Overflow.
Forums as the internet’s “interest graph”: what’s broken and what Discourse tries to fix
Lex Fridman 19:18 So what we're talking about with forums, the, what is it, the dark matter of the internet, uh, it's still... I don't know if it's still, but for the 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, so you're posting one after the other, and there's pagination, so it's every... There's, uh, 10 posts, then you go to the next page, and th- that format still is used by, like, um, uh, we're doing a lot of research with Tesla, of vehicles, and there's a Tesla Motors Club forum, which is extremely pop-
Jeff Atwood 19:54 We really wanted to run that, actually. (laughs) They pinged us about it, I don't think we got it, but I really would've liked to get on that one.
Lex Fridman 19:59 But they 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?
Jeff Atwood 20:12 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-
Lex Fridman 20:24 Mm-hmm.
Jeff Atwood 20:24 ... right? Like, like, through friendship or, you know, any other reason. Facebook's idea of the world is sort of the s- the status update, right? Like, a friend of yours did something, ate at a restaurant, right? Um, whereas discussion forums were traditionally 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. I don't know if you saw The Oatmeal, he did a whole love comic to Tesla.
Lex Fridman 20:52 (laughs)
Jeff Atwood 20:53 And it was actually kinda cool 'cause I learned some stuff. He was talking about 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. And to me, that Oatmeal post, if you read it, is the genesis of pretty much all interest communities.
Lex Fridman 21:05 Mm-hmm.
Jeff Atwood 21:05 I just really love this stuff. So like for me, for example, there's 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?
Lex Fridman 21:18 Yeah.
Jeff Atwood 21:18 Like, to me, the, 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, uh, this is my coworker, this is my relative, this is my friend.
Lex Fridman 21:33 Mm-hmm.
Jeff Atwood 21:33 Um, but not so much about the interests. So I think that's the, the linchpin of which forums and communities are built on that I personally love. Like, I, 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, um, a lot of stuff in the world gets done. Like, I once had someone describe 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 deep in those things." (laughs)
Lex Fridman 21:59 (laughs)
Jeff Atwood 21:59 And I was like, "Oh, that's kinda right," that's kinda what I do. I'll get into something and just be super into that for a couple years or whatever and just learn all I can about it and go super deep in it. And, uh, 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 kinda unlock 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 kinda own themselves, set their own norms, set their own rules-
Lex Fridman 22:24 Mm-hmm.
Jeff Atwood 22:25 ... um, control the experience, 'cause commu- uh, community is also about ownership, right? Like, if, if you're meeting at the Barnes & Noble every Thursday and Barnes & Noble says, "Get out of here, you guys don't buy enough books," well, you know, you're kinda hosed, right? Barnes & Noble owns you, right? Like, (laughs) you can't...
Lex Fridman 22:38 (laughs)
Jeff Atwood 22:38 But if you have your own meeting space, you know, your own clubhouse, you can set your own rules, decide what you wanna talk about there, and just really generate a lot better information than you could, it's like, hanging out at Barnes & Noble every Thursday at 3:00 PM, right? Uh, so that's kinda the vision of Discourse, is a place where it's, it's fully open source, you can take the software, you can install it anywhere.
Lex Fridman 22:58 Mm-hmm.
Jeff Atwood 22:59 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 wanna talk to their community. It's like, "Well, install Discourse," right? That's what we do at Discourse. That's what I did at Stack Overflow. I spent a lot of time on Meta Stack Overflow, which is our internal-
Lex Fridman 23:16 Mm-hmm.
Jeff Atwood 23:16 ... well, uh, public community feedback site, and, uh, just experiencing what the users were experiencing, right? 'Cause 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 of reasons. It might be bad feedback, it might be-
Lex Fridman 23:33 Mm-hmm.
Jeff Atwood 23:33 ... crazy feedback, it might be feedback you just can't act on right now. But there's 10% of it that's like gold.
Lex Fridman 23:38 Mm-hmm.
Jeff Atwood 23:38 It's like literally gold and diamonds where it's, like, feedback of really good improvements to your core product-
Lex Fridman 23:43 Mm-hmm.
Jeff Atwood 23:43 ... that are not super hard to get to and actually make a lot of sense. And my favorite is about 5% of that was 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 derive from Meta Stack Overflow feedback, and Meta Discourse, right? Same exact principle at Discourse. You know-... we're getting ideas from the community. I was like, "Oh, my God. I never thought of that, but that's fantastic," right? Like, I love that relationship with the community.
Growing communities from scratch: persistence, ritual, and the Coding Horror → Stack Overflow pipeline
Lex Fridman 24:07 From built- having built these communities, what have you, what have you learned about, what's the process of getting a critical mass of members in a community? Is it luck, skill, timing, persistence? What is... Uh, is it the tools, like Discourse, that empower that community? What-what's the key aspect of starting from one guy or gal and then building it to two, and then 10, and 100, and 1,000, and so on?
Jeff Atwood 24:30 I think when you're starting with a, an n-of-one, I mean, I think it's persistence and-and also you have to be interesting. Like, uh, somebody I really admire once said 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?
Lex Fridman 24:46 Yeah.
Jeff Atwood 24:46 And then do that for, like, 10 years. (laughs) 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 it, which is, another way of saying kind of entertaining way of saying it.
Lex Fridman 24:58 Mm-hmm.
Jeff Atwood 24:58 Uh, 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, uh, three times a week."
Lex Fridman 25:07 Mm-hmm.
Jeff Atwood 25:08 And you have to stick to that schedule, right?
Lex Fridman 25:09 Mm-hmm.
Jeff Atwood 25:10 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, and it helps, again, if it's something you're passionate about, this won't feel like work. You're like, "I love this. I could talk about this all day, every day," right? (laughs) Uh, you just have to do it in a way that's interesting to other people. And then as you're growing the community, um, 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-
Lex Fridman 25:37 Mm-hmm.
Jeff Atwood 25:37 ... even in the case of blogging, like, I felt earl- in the early days of my blog, which I started in 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.
Lex Fridman 25:50 Mm-hmm.
Jeff Atwood 25:51 And I was like, "I wanna do something." And then, then I met Joel and said, "Hey, Joel, I wanna do something, take this ball of energy for my blog and do something." And all the people reading my blog saw that and was like, "Oh, cool, you're involving us. You're saying, 'Look, you're part of this community, let's build this thing together.'" Like, they picked the name, like, we voted on the name for Stack Overflow on my blog. Like, we came up... And naming is super hard, first of all, I... The hardest problem in computer science is coming with a good name for stuff, right?
Lex Fridman 26:13 Yup.
Jeff Atwood 26:13 Um, but there, you can go back to my blog. There's the poll where we voted and Stack Overflow became the name of the site. And all the early beta users of Stack Overflow were, were 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-"
Lex Fridman 26:31 Mm-hmm.
Jeff Atwood 26:32 "... 'cause I don't have enough people to work to talk t-to about it." 'Cause at the time, I worked a place where, you know, programming wasn't the core output of the company.
Lex Fridman 26:38 Mm-hmm.
Jeff Atwood 26:38 It was a, 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 found Joel, and eventually built Stack Overflow from that one core of, of activity, right? But it was that repetition of feeding back in feedback from my blog comments-
Lex Fridman 26:57 Mm-hmm.
Jeff Atwood 26:57 ... feedback from Joel, feedback from the, the early Stack Overflow community. Um, when people see that you're doing that, they will follow along with you, right? They'll say, "Oh, cool. You're here in good faith. You're actually, you know, not listening to everything, 'cause that's impossible, that's impossible, but you're actually, you know, weighting our feedback in what you're doing."
Lex Fridman 27:13 Mm-hmm.
Jeff Atwood 27:13 Because... And why wouldn't I? Because who does all the work on Stack Overflow? Me? Joel?
Lex Fridman 27:17 Mm-hmm.
Jeff Atwood 27:18 No, it's the other-
Lex Fridman 27:19 The programmers, yeah.
Jeff Atwood 27:19 ... 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 Q&A problem in a very specific way, not 'cause we're jerks about it, but because these strict set of rules help us get really good results, right? Um, and programmers, that's an easy sell for the most part, 'cause programmers are used to dealing with ridiculous systems of rules, like constantly. That's basically their job.
Lex Fridman 27:46 (laughs) Yeah.
Jeff Atwood 27:46 So they're, they're very, "Oh, yeah, super strict system of rules that lets me get what I want. That's programming," right? That's what Stack Overflow is, so.
Writing craft and scary decisions: naming, reading aloud, and refusing to sell the blog
Lex Fridman 27:53 So you're making it sound easy, but in 2004... Le- let's go back there. In 2004, you started the blog, Coding Horror. Was it called that at the beginning, just at the very beginning?
Jeff Atwood 28:03 It was. One of the smart things I did, it's, it's from a book by Steve McConnell, Code Complete-
Lex Fridman 28:06 Mm-hmm.
Jeff Atwood 28:06 ... which is one of my favorite programming books, still probably my number one programming book for anyone to read. Uh, and one of the smart things I did back then, I don't always do smart things when I start stuff. I contacted Steve and said, "Hey, I really like this, uh..." It was a sidebar illustration indicating danger in code, right? Coding Horror was like, "Watch out." (laughs)
Lex Fridman 28:24 Mm-hmm.
Jeff Atwood 28:25 And I love that illustration 'cause it spoke to me.
Lex Fridman 28:27 Yeah.
Jeff Atwood 28:27 'Cause I saw that illustration and go, "Oh, my God. Th- that's me. Like, I'm always my own worst enemy."
Lex Fridman 28:31 Yeah.
Jeff Atwood 28:31 Like, that's the key insight in programming, is, every time you write something, think, "How am I gonna screw myself?" Because you will.
Lex Fridman 28:37 (laughs)
Jeff Atwood 28:38 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-"
Lex Fridman 28:56 Mm-hmm.
Jeff Atwood 28:57 "... could do wrong?" 'Cause that is actually how you get to be a better programmer (laughs) a lot of times, right?
Lex Fridman 29:00 Yeah.
Jeff Atwood 29:00 So that sidebar illustration, I loved it so much. And I, I wrote Steve before I started my blog and said, "Hey, can I have permission to use this? 'Cause I just really like this illustration." And Steve was kind enough to le- give me permission to do that, and-
Lex Fridman 29:11 Interesting.
Jeff Atwood 29:11 ... continues to give me permission, so yeah.
Lex Fridman 29:13 Really? That's awesome. Uh, but in 2004, you started this blog. You know, you look at, uh, Stephen King, uh, his book on writing, or Steven Pressfield, uh, War of Art book. I mean, it seems like writers suffer. I mean, it's a hard process of writing, right? It's like every-
Jeff Atwood 29:32 There's a lot of, there's gonna be suffering.
Lex Fridman 29:34 Yeah. (laughs)
Jeff Atwood 29:34 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-
Lex Fridman 29:41 Right.
Jeff Atwood 29:42 ... said disparaging things about it. You have to, like, have the attitudes like, you know, "No matter what happens, I wanna do this for me," right? It's not about you, it's about me. I mean, i-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 the things I do, for example, when- when writing is like I- I read it out loud. One of the best pieces of advice for writing anything is read it out loud-
Lex Fridman 30:12 Mm-hmm.
Jeff Atwood 30:12 ... 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 more time to think about what you're saying. But like, it should sound natural when you say it. And I think that's probably the single best writing advice I can give anyone is just- just read it over and over out loud, make sure it sounds like something you would normally say-
Lex Fridman 30:32 So-
Jeff Atwood 30:32 ... and it sounds good.
Lex Fridman 30:33 And what's your process of writing? Say there's usually a pretty good idea behind the blog post.
Jeff Atwood 30:39 So ideas, right. So I think you gotta (laughs) have the concept that there's so many interesting things in the world. Like, I mean, my God, the world is amazing, right? Like, i- i- i- it's-
Lex Fridman 30:49 (laughs)
Jeff Atwood 30:49 ... you can never write about everything that's going on because it- 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- to like mine stuff is go back to old books, because they bring up old stuff that's still super relevant. And I- I did that a lot because I was like reading classic programming books and a lot of the early blog posts were like, "Oh, I was reading this programming book and they brought up this really cool concept-"
Lex Fridman 31:13 Mm-hmm.
Jeff Atwood 31:13 "... and I want to talk about this 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?
Lex Fridman 31:19 Right.
Jeff Atwood 31:19 Like you don't have to go, "What should I talk about?" It's like well, just go dig up some old classic programming books and-
Lex Fridman 31:24 Mm-hmm.
Jeff Atwood 31:25 ... find something that, "Oh wow, that's interesting," or "How does that apply today?" Or "What about X and Y?" Or compare these two concepts.
Lex Fridman 31:31 So pull a couple sentences from that book and then, uh, sort of play off of it, almost like-
Jeff Atwood 31:35 Yeah.
Lex Fridman 31:35 ... agree or disagree. It's so, in 2007, uh, 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 nonlinear decisions you made through life, uh, that's-
Jeff Atwood 31:54 (laughs)
Lex Fridman 31:54 ... it's- it's, so what was that decision like?
Jeff Atwood 31:56 Right. So I, one of the things I love is the, uh, Choose Your Own Adventure books, which I loved as a kid and I feel like they're early programmer books because 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- the classic Choose Your Own Adventure books and how many outcomes are bad. (laughs)
Lex Fridman 32:12 Mm-hmm.
Jeff Atwood 32:12 There's a lot of bad outcomes. So part of the game is like, "Oh, I got a bad outcome. Go back one step, go back one further step." It's like, "How did I get here," right? Like it's a sequence of decisions that... (laughs) And this is true of life, right? Like every decision is- is a sequence, right? I- i- i- individually, n- any individual decision is not necessarily right or wrong, but they- they lead you down a path, right? So I- I do think there's some truth to that. So this particular decision, uh, the blog had gotten fairly popular. There was a lot of RSS readers that I discovered.
Lex Fridman 32:39 Mm-hmm.
Jeff Atwood 32:39 And this guy contacted me out of the- out of the blue from this like bug tracking company. He's like, "Oh, I really want to buy your blog," for like, uh, I think it was around, it was $100,000, might have been like $80,000 but it was- it was a lot, right?
Lex Fridman 32:49 Mm-hmm.
Jeff Atwood 32:49 Like and that's, you know, at the time like I would have a- a year's worth of salary all at once so I had to really think about like, "Well," you know, and I remember talking to people at the time. I was like, "Wow, that's a lot of money." But then on the other hand, like I really liked my blog, right? Like do I want to sell my blog? Because it wouldn't really belong to me anymore at that point. And, uh, one of the guidelines that I like to... I don't like to give advice to people a lot, but one of the pieces of advice I do give because I do think it's really true and it- it's generally helpful is whenever you're looking at a set of decisions like, "Oh gosh, should I do A, B or C?" You've 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.
Lex Fridman 33:30 Mm-hmm.
Jeff Atwood 33:30 You're not pushing yourself. You're not choosing the thing that's going to help you grow. So for me, the scarier choice was to say no and I was like, "Well no, let's just see where this is going," right?
Lex Fridman 33:38 Mm-hmm.
Jeff Atwood 33:38 Because then I own it. I mean, it belongs to me. It's my thing, uh, and I can just take it and- and to some other logical conclusion, right? Because imagine how different the world would have been had I said yes and sold the blog. It's like there probably wouldn't be Stack Overflow. (laughs)
Lex Fridman 33:50 Yeah.
Jeff Atwood 33:51 Uh, 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?
Lex Fridman 33:58 Do the thing that scares you.
Jeff Atwood 33:59 Yeah.
Startup formation and product development: co-founders, research the failures, prototype fast
Lex Fridman 33:59 So speaking of which, startups. I think there's, uh, specifics and more general questions that a lot of people would be interested in. You started Stack Overflow, you started Discourse, so what's the, you know there was one, two, three guys, whatever it is in the beginning. Uh, what was that process like? Do you start talking about it? Do you start programming? Do you start, like where does the birth and the catalyst that actually takes this off?
Jeff Atwood 34:25 Well, I can talk about in the context of both Stack Overflow and Discourse. So if I think the key thing initially is there is a problem, something, there's some state of the world that's unsatisfactory to the point that like you're upset about it, right?
Lex Fridman 34:36 Mm-hmm.
Jeff Atwood 34:36 Like in that case it was Experts Exchange. I mean Joel's original idea because I approached Joel as like, "Look Joel, I have all this energy behind 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. It's not my forte.
Lex Fridman 34:52 Mm-hmm.
Jeff Atwood 34:52 Which is another reason I like, 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 a community-
Lex Fridman 34:59 (laughs)
Jeff Atwood 34:59 ... 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 experience is hideous, right?
Lex Fridman 35:08 Right.
Jeff Atwood 35:08 It's- it's trying to trick you. It feels like a used car salesman. It's just bad.
Lex Fridman 35:11 (laughs)
Jeff Atwood 35:12 So I was like, "Oh, that's awesome." It- it feeds into 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... uh, an injustice that we will right-
Lex Fridman 35:24 Mm-hmm.
Jeff Atwood 35:24 ... 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, startup, whatever. Forums are such a great building block of online community and they're hideous. They were so bad, right?
Lex Fridman 35:39 Mm-hmm.
Jeff Atwood 35:39 It was embarrassing. Like I literally was embarrassed to be associated with this software, right? I was like we have to have software that you can be proud of. It's like this is competitive with Reddit. This is competitive with Twitter. This is competitive with Facebook, right?
Lex Fridman 35:49 Mm-hmm.
Jeff Atwood 35:50 I would be proud to have the software on my site. Um, so that was the genesis of Discourse was feeling very strongly about, um...... there needs to be a, a good solution for communities. So that's step one. Dennis's funny idea he feels super strongly about, right? And then people galvanize around the idea. Like, Joel was already super excited about the idea. I was excited about the idea. So with the forum software, I was posting on Twitter, I had researched... As part of my research, I start researching a problem, right? And I, I found a game called Forum Wars, which was a parody of forum. It's still very, very funny of like forum behavior circa like I would say 2003. (laughs)
Lex Fridman 36:25 Uh-huh.
Jeff Atwood 36:26 It, it's aged some, right? Like, uh, the behavior's a little different in the era of Twitter, but it was awesome. It was very funny and it was like a game. It was like an RPG and it had a forum attached to it. So it was like a game about forums with a forum attached to it. 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 said, "Hey, you know, I saw you've 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 'cause 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." 'Cause like I couldn't have wished for a better person to walk through the door-
Lex Fridman 36:59 Mm-hmm.
Jeff Atwood 36:59 ... and say, "I'm excited about this too." Same thing with Joel, right? I mean, Joel is a legend in the industry, right? So when he walked through this, said, "I'm excited about this problem." I was like, "Me too, man. We can do this," right? So th- that to me is the most important step. It's like having an idea you're super excited about and another person, a co-founder, right? 'Cause again, you get that dual leadership, right? Of like, am I making a bad decision? (laughs) Sometimes it's nice to have checks of like, is this a good idea? I don't know, right?
Lex Fridman 37:23 So those are the, the crucial seeds, but then starting to build stuff, whether it's you programming or somebody else, it's-
Jeff Atwood 37:28 There is prototyping. So there's tons of research.
Lex Fridman 37:30 ... prototyping.
Jeff Atwood 37:30 There's tons of research. Like what, what's out there that failed because a lot of people look at successes. Oh, look at how successful X is. Everybody looks at the successes. Those are boring.
Lex Fridman 37:38 Mm-hmm.
Jeff Atwood 37:38 Show me the failures 'cause that is what's interesting. That's where people were experimenting and 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?
Lex Fridman 37:49 Yeah.
Jeff Atwood 37:50 So look at all the failures. Don't just look what everybody looks at, which is like, oh 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, right? Was that. And then when we... For example, when we did uh, uh, uh, Stack Overflow, we're like, "Okay, well I really like elements of voting in Digg and Reddit. I like the, the, the Wikipedia, everything's up to date. Nothing is like an old tombstone that like-"
Lex Fridman 38:14 Mm-hmm.
Jeff Atwood 38:14 "... 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, Joe wrote this and look how good Joe's answer is, right? Like-
Lex Fridman 38:25 Mm-hmm.
Jeff Atwood 38:26 All these concepts we were rolling together, researching all the things that are out there that were 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 are 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, it's not a free. That stuff doesn't come for free, right? It's not like we will all have perfect answers and nobody will have to get their feelings hurt or nobody will have to get downvoted. Like, that, it doesn't work that way, right? Like...
Stack Overflow’s ‘big city’ ethos: anxiety, duplicates, strictness, and why programmers can seem harsh
Lex Fridman 39:06 So this is an interesting point and a small tangent. Uh, you write about anxiety. Uh, so I, I've posted a lot of questions and written answers on Stack Overflow. On the question side, usually go to something very specific to something I'm working on. And 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.
Jeff Atwood 39:35 Right.
Lex Fridman 39:36 But-
Jeff Atwood 39:36 That, that's a tough sell, right? Because people are like, "Well, you know, I don't really care about the community. What I care about is my problem."
Lex Fridman 39:41 My problem.
Jeff Atwood 39:42 Um, and that, and that's fair, right? It, it's sort of that, again, that tension, that balancing act of we want to help you, but we also want to help everybody that comes behind you, right? The long line of people are gonna come and say, "Oh, I kind of have that problem too," right? And if nobody's ever gonna 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 that? How do you know that nobody's ever going to have this particular question again? Um, so there's a lot of tension in the system.
Lex Fridman 40:06 Do you think that anxiety of asking the question, the anxiety of answering, that tension is inherent to programmers? Is it inherent to this kind of process or, or can it be improved? Can it be happy land where the, that tension is not quite so harsh?
Jeff Atwood 40:26 Uh, I, I don't think Stack Overflow can totally change the way 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 Q&A system and what are the core pages in a Q&A 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-
Lex Fridman 40:45 Mm-hmm.
Jeff Atwood 40:45 ... someone trying to ask a question, that's the point at which 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 to put in the title? One word that's not good to put in the title is problem, for example. (laughs)
Lex Fridman 41:05 Mm-hmm.
Jeff Atwood 41:05 "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, um, 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?
Lex Fridman 41:25 Mm-hmm.
Jeff Atwood 41:26 You could opt in to a special mentor. I think that would be fantastic. Like, I don't have any objection to that at all in terms of being an opt-in system 'cause there are people that are like, "You know, I just want to help them. I want to help a person no matter what. I want to go above and beyond."
Lex Fridman 41:37 Yeah.
Jeff Atwood 41:37 "I want to spend like hours with this person." Um, uh, it depends what their goals are, right? Like-
Lex Fridman 41:42 It's a great idea.
Jeff Atwood 41:43 ... who am I to judge, right? So that's fine. It, it's not precluded from happening. But there's a certain big city ethos that we started with of like, look, we're 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."
Lex Fridman 41:55 (laughs) Right.
Jeff Atwood 41:55 "Let me show you around." That's not how New York City works, right?
Lex Fridman 41:59 Right.
Jeff Atwood 41:59 I mean, and, you know-... again, New York City has 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?
Lex Fridman 42:07 Mm-hmm.
Jeff Atwood 42:07 They're like, "Look, I have things to do. I'm busy. I'm a busy professional, as are you."
Lex Fridman 42:11 Mm-hmm.
Jeff Atwood 42:11 "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-written question with a lot of detail about why you're doing it, what you're doing, what you researched, what you found, right? 'Cause you're a professional, like me, right?" And this rubs people sometimes the wrong way.
Lex Fridman 42:31 Mm-hmm.
Jeff Atwood 42:31 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, for beginners." And I, I still think Stack Overflow is, is not... was never designed (laughs) for beginners, right?
Lex Fridman 42:41 For beginners, yeah.
Jeff Atwood 42:41 There's this misconception that, you know, even Joel says something, "Oh, yeah, Stack Overflow for beginners." And I think if you're a prodigy, it can be.
Lex Fridman 42:48 Right. But for the most part, not.
Jeff Atwood 42:50 But that's not really representative, right? Like, I think as a beginner, you want a totally different set of tools. (laughs) You want, like, sc- live screen sharing, live chat. You want access to resources. You want a playground, like a, a, a playground you can experiment in and, like, test and all the stuff that we just don't give people because that was never really the, the audience that we were designing Stack Overflow for. That doesn't mean it's wrong.
Lex Fridman 43:10 Mm-hmm.
Jeff Atwood 43:10 And I think it would be awesome if there was a site like that on the internet, or if Stack Overflow said, "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 or the tension that you described is there to... for people to be, "Look, I'm a little nervous 'cause I know I gotta do my best work," right?
Lex Fridman 43:26 The other one is something you talk about, which is also really interesting to me, is duplicate questions or du-... It's a, it's a really difficult problem that you highlight.
Jeff Atwood 43:38 Super pro-... It's super hard.
Lex Fridman 43:39 Like, you could take one little topic and you could probably write 10, 20, 30 ways of asking about that topic, and they 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?
Jeff Atwood 44:02 (music)
Lex Fridman 44:02 Or is it a totally hopeless, difficult, impossible task?
Jeff Atwood 44:06 I think it's a very, very hard computer science problem, and partly 'cause 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.
Lex Fridman 44:18 Yeah.
Jeff Atwood 44:18 I'm like, "Oh my God." From a computer science perspec- perspective, how do you even begin to solve that?
Lex Fridman 44:23 (laughs)
Jeff Atwood 44:23 And it happens all the time. People are super good at this, right?
Lex Fridman 44:25 Mm-hmm.
Jeff Atwood 44:26 Accidentally a- asking the same thing in, in, like, in, uh, 10, 20 different ways. And the other complexity is we want some of those duplicates to exist 'cause-
Lex Fridman 44:34 Mm-hmm.
Jeff Atwood 44:34 ... if there's five versions with different words, have those five versions point to the one centralized answer, right?
Lex Fridman 44:39 Mm-hmm.
Jeff Atwood 44:39 It's like, "Okay, th- this is a duplicate. No, no worries. This... Here's, here's the answer that you wanted over here on this, this, this, you know, the, the prime example that we wanna have."
Lex Fridman 44:47 Mm-hmm.
Jeff Atwood 44:47 Um, rather than having 10 copies of the question and the answer, because if you have 10 copies of the question and answer, this also devalues the reputation system, which programmers hate, as I previously mentioned. You're getting reputation for an answer that somebody else already gave.
Lex Fridman 44:59 Hm.
Jeff Atwood 44:59 It's like, well, it's an answer, but somebody else already gave that answer, so why are you getting reputation for the same answer as the other guy who gave it four years ago? People get offended by that, right? So the reputation system itself adds tension to the system-
Lex Fridman 45:11 Mm-hmm.
Jeff Atwood 45:11 ... in that the people that... who have a lot of reputation become very incentivized to enforce the reputation system. (laughs) Um, and for the most part, that's good. I know it sounds weird, but for the most part, it's like, look, strict systems, I think to use Stack Overflow, you have to have the idea that, okay, strict systems ultimately work better. And I do think in programming, uh, you're familiar with, um, loose typing versus strict typing, right?
Lex Fridman 45:31 Mm-hmm.
Jeff Atwood 45:31 The idea that you can declare a variable... not declare a variable, rather. Just start using a variable and, "Okay, I see it's implicitly an integer. Bam, awesome. Duck equals five." Well, duck is now an integer of five, right? And you're like, "Cool, awesome." Simpler, right? "Why would I wanna 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 program's validity after the fact-
Lex Fridman 45:51 Mm-hmm.
Jeff Atwood 45:51 ... to catch any bugs that, 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# Anders, who's one of the greatest minds in, in software development, right? Like, in terms of language design, and says, "No, no, no. We wanna bolt on a strict type system to JavaScript 'cause 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 'cause 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 (laughs) in every language, right? Duck equals five should generate an error 'cause no, you didn't declare... You didn't tell me that duck was an integer, right? That's a bug, right? Or maybe you mistyped it. You typed deck, right? Instead of duck, right? You never know. This happens all the time, right?
Lex Fridman 46:48 Mm-hmm.
Jeff Atwood 46:48 So, with that in mind, I will say that the strictness of the system is correct. Now, that doesn't mean cruel. That doesn't mean mean. That doesn't mean angry. It just means strict, 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?"
Lex Fridman 47:05 (laughs)
Jeff Atwood 47:05 Well, who do programmers work with all day long? So I have a theory that if you're at a job and you work with assholes all day long, what do you eventually become? An-
Lex Fridman 47:14 An asshole.
Jeff Atwood 47:15 An asshole. And what is the computer, except the world's biggest asshole?
Lex Fridman 47:19 Hm.
Jeff Atwood 47:19 Because the computer has no time for your bullshit. The computer... (laughs) The minute you make a mistake, everything comes crashing down, right?
Lex Fridman 47:25 Hm.
Jeff Atwood 47:25 O- 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 kinda 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 56249 is a completely good error message, 'cause that's what the computer gave me.
Lex Fridman 47:55 Mm-hmm.
Jeff Atwood 47:55 Right? So you kind of forget (laughs) to be a person at some level. And you know how they say great detectives internalize criminals and kind of are criminals themselves?
Lex Fridman 48:04 Mm-hmm.
Jeff Atwood 48:04 Like, this trope of the master detective is good 'cause he can think like the criminal. Well, I do think that's true of programmers. Really good programmers think like the computer-
Lex Fridman 48:12 Mm-hmm.
Jeff Atwood 48:12 ... because that's their job. But if you internalize it too much, you become the computer and you become a- kind of become a jerk to everybody-
Lex Fridman 48:19 Right.
Jeff Atwood 48:19 ... because that's what you've internalized.
Lex Fridman 48:21 You're almost not a jerk, but you have no patience for a lack of strictness-
Jeff Atwood 48:25 Yes.
Lex Fridman 48:25 ... as you said. Which-
Jeff Atwood 48:26 It- 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, incorrect."
Lex Fridman 48:37 (laughs)
Jeff Atwood 48:37 "Move on." It's like, "Well, can you help me?" Like, "What could I do to fix..." "Nope, wrong. So, next question." (laughs) Right?
Lex Fridman 48:44 (laughs)
Jeff Atwood 48:44 Like, that's normal for the computer (laughs) , right? Just, "Fail. Next." Right? Like...
Lex Fridman 48:48 (laughs) .
Jeff Atwood 48:49 I don't know if you remember in Saturday Night Live, like, in the '90s, they had this character who was an IT guy.
Lex Fridman 48:54 Yeah.
Jeff Atwood 48:54 The move guy. "Move."
Lex Fridman 48:56 "Move." Was that, uh, Jimmy Fallon? No. No.
Jeff Atwood 48:59 I can't remember.
Lex Fridman 48:59 Who played him? Um, okay, yeah, yeah, I remember. "Move."
Jeff Atwood 49:02 Right.
Lex Fridman 49:03 Yeah.
Jeff Atwood 49:03 He had no patience for anybody.
Lex Fridman 49:04 It might've been MAD TV, actually. Or not-
Jeff Atwood 49:05 Was it MAD TV? Might've been, might've been. 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?
The arc of a programmer: peopleware, abstraction upward, and the future (GitHub, Unix, AI, monetization, keyboards)
Lex Fridman 49:14 You've written so many blog posts about programming, about programs, programming, uh, programmers. What do you think makes a good... Let's start with, what makes a good solo programmer?
Jeff Atwood 49:29 Well, I don't think you should be a solo programmer. I think to- to be a good solo programmer, it's kind of like what I talked about, uh, well, not on mic, but one of the things, uh, John Carmack, one of the c- best points he makes in the book Masters of Doom, which is a fantastic book, any- anybody listening to this who hasn't read it, please read it, 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 StackOverflow, 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, right? They had to work (laughs) on their own. And that's why it took a genius like Carmack to do this stuff.
Lex Fridman 50:04 Mm-hmm.
Jeff Atwood 50:04 'Cause 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 this question." It's like, that's what you should be doing, because that's what's gonna make you good, right?
Lex Fridman 50:27 Mm-hmm.
Jeff Atwood 50:28 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 VisualBasic for Windows, like, I would call the Microsoft helpline on the phone when I had, like, a problem.
Lex Fridman 50:45 (laughs)
Jeff Atwood 50:45 'Cause I was like, "I don't know what to do." So I would, like, go and call, and they had these huge phone banks. I'm like, "Can you imagine how alien that is now?"
Lex Fridman 50:51 (laughs)
Jeff Atwood 50:51 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- I had the books that came with it. I read those, studied those religiously. I r- I just saw a post from Steve Sinofsky that said the C++ version 7 came with s- like, 10,000 pages of written material, because where else were you gonna figure that stuff out? Go to the library? I mean, you didn't have Wikipedia, you didn't have, you know, Reddit, you didn't have (laughs) anywhere to go to answer these questions.
Lex Fridman 51:20 So you- you- you've talked about, through the years, uh, basically not having an ego and n- not thinking that you're, uh, the best programmer in the world, and so always kind of, uh, 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 the past, what is it, 15 years, really, of being a public figure?
Jeff Atwood 51:49 I- 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 kinda disturbing, um, 'cause you really love it, and...
Lex Fridman 51:58 (laughs)
Jeff Atwood 51:58 But you realize, like, being effective at programming, at programming in the- in the general sense, uh, doesn't mean writing code. And a lot of times you can be much more successful by not writing code than 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. 'Cause a lot of the problems you- you encounter aren't necessarily solved through, like, really gnarly code. They're solved by conceptual solutions-
Lex Fridman 52:24 Mm-hmm.
Jeff Atwood 52:25 ... which can then be turned into code, but are you even solving the right problem? I mean... So, I- I would say, for me (laughs) , the main insight I have is- is- is to succeed as a programmer, you eventually kind of stop writing code. That's gonna sound discouraging, probably (laughs) , to people hearing it, but I don't mean it that way. What I mean is that you're coding at a higher-level language. Eventually, you're like, "Okay-
Lex Fridman 52:44 Right.
Jeff Atwood 52:44 ... so we're coding in assembly language," right? That's the beginning, right? You're hardcoded to the- the architecture. Then you have stuff like C where it's like, wow, we can abstract across the architecture-
Lex Fridman 52:52 Mm-hmm.
Jeff Atwood 52:52 ... we 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 than that, right? Like, you're looking at, like, Python, Ruby, interpreted languages. And then, to me, as a programmer, like, okay, I wanna go even higher. I wanna go higher than that. How do I abstract higher than language? It's like, well, you abstract in spoken (laughs) language-
Lex Fridman 53:11 Mm-hmm.
Jeff Atwood 53:11 ... 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? Um, you're writing in the highest-level language that there is, which is, for me, English, right? Whatever your spoken language is.
Lex Fridman 53:22 Mm-hmm.
Jeff Atwood 53:23 So, it's all about being effective, right?
Lex Fridman 53:26 Yeah.
Jeff Atwood 53:26 And I think, uh, uh, uh, Patrick McKenzie, patty11 on- 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 in your career. And I really believe that. And I- and again, I apologize if this is- sound discouraging. I don't mean it to be, but he's so right. Because (laughs) all the stuff that goes on around the code, like the people?
Lex Fridman 53:48 Mm-hmm.
Jeff Atwood 53:49 Like, that's another thing. If you look at my early blog entries, it was- it was about, "Wow..."... programming is about people more than it's about code. Which doesn't really make sense, right?
Lex Fridman 53:56 Right.
Jeff Atwood 53:56 But it's about, can these people even get along together? Can they understand (laughs) each other? Can you even explain to me what it is you're working on? Are you solving the right problem? Peopleware, right? Another classic programming book, which again-
Lex Fridman 54:07 Peopleware.
Jeff Atwood 54:07 ... up there with Code Complete. Please read Peopleware. 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 in 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 level 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 put in- put in front of you, you're gonna be able to solve. But what you can't solve is, "Our manager is a total jerk."
Lex Fridman 54:36 (laughs)
Jeff Atwood 54:36 You cannot solve that with code. That is not a code solvable problem, and yet that will cripple you way more than, "Oh, we had to use this stupid framework I don't like." Or, 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 problem is your manager or a coworker is so toxic to everybody else on your team that, like, nobody can get anything done 'cause everybody's so stressed out and freaked out, right? These are the (laughs) problems that you have to attack.
Lex Fridman 55:04 Absolutely. And so as you go to these higher level abstractions as you've developed as a programmer, to higher and higher level abstractions and go into natural language, d- you're also the guy who kind of preached, you know, building it, you know, j- diving in and doing it and, and, and like, learn by doing.
Jeff Atwood 55:21 Yes.
Lex Fridman 55:22 Uh, do you, do you worry that as you get to higher and higher level abstractions you lose track of the lower level of just building, uh, is like? Do you worry about that? You know, even not maybe now-
Jeff Atwood 55:38 Well-
Lex Fridman 55:38 ... but 10 years from now, 20 years from now?
Jeff Atwood 55:41 Well, no. I mean, there is always that paranoia, right? "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 abstraction from Stack Overflow, you can be super proficient in, for example, C# which I was working in, that's where we built Stack Overflow and then still is written in, and then switch to Ruby and you're a newbie again, right? Like, I'm... But s- but you have the framework. I know what a for loop is, I know what recursion is. I know, you know, what a, what a, what a stack- stack trace is, 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."
Lex Fridman 56:20 Well, so, like, th- 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?
Jeff Atwood 56:28 Well, that's the thing.
Lex Fridman 56:29 Carried over.
Jeff Atwood 56:29 That's what I was trying to get to, is like what I realized, particularly when I started with 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, uh, uh, our, our first alpha version of Discourse-
Lex Fridman 56:43 Mm-hmm.
Jeff Atwood 56:43 ... 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? And the answer to both of those was resoundingly no, right?
Lex Fridman 56:52 Mm-hmm.
Jeff Atwood 56:53 Like, we were getting to an alpha and it was pretty much just, "Okay, we'll hire more programmers," right? Like we, we eventually, uh, hired Neil, uh, and then eventually Sam, who came in as a co-founder. Um, well, actually it was Sam first, then Neil later. But the answer to that problem is just hire other competent programmers. It's not like teach, "Now I shall t- pull myself up by my bootstraps and, and, and learn Ruby." But at some point, writing code becomes a liability to you-
Lex Fridman 57:15 Mm-hmm.
Jeff Atwood 57:16 ... 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, how does everybody keep focus on like, what, what are we building? Well, first basic mockups and research, right? Like, like, "What, what do we even want to build?" There's a little bit of that that goes on. But then very quickly you get to the prototype stage. Like, build a prototype, let's iterate on the prototype really, really rapidly. And that's what we did with Discourse, and that's what we, we demoed to get our, our seed funding for Discourse was the, the alpha version of Discourse, um, 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.
Lex Fridman 57:47 (laughs)
Jeff Atwood 57:47 Um, I have, we have screenshots of it and I'm just like embarrassed to look at it now. Um, but it was the prototype. We were figuring out, like, what, what's working, what's not working. 'Cause there's such a broad gap between, between, um, the way you think things will work in your mind or even on paper-
Lex Fridman 58:00 Mm-hmm.
Jeff Atwood 58:00 ... and the way they work once you sit and live in the software. Like, actually spend time living and breathing in the software is so different. So, my philosophy is get to a, a prototype, and then what you're really optimizing for is speed of iteration, like how you can turn the crank.
Lex Fridman 58:14 Mm-hmm.
Jeff Atwood 58:14 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 wanna 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 changed to this word." Right? Because it will be more clear to the users. Like what, like instead of respond, it's reply or something. But there's some... The, the, from the conception of that idea to how quickly that single word can be changed in your software and rolled out to users, that is your life cycle.
Lex Fridman 58:44 Mm-hmm.
Jeff Atwood 58:45 That's your health, your, your heartbeat. If your heartbeat is like super slow, you're basically dead. No seriously, like if it-
Lex Fridman 58:52 Absolutely.
Jeff Atwood 58:52 ... takes two weeks or even a month to get that single word changed. Everybody's like, "Oh my God, this is a great idea. That word is so much clearer." I'm talking about like a super, like everybody's on board for this change. It's not like, "Let's just change a word 'cause we're bored." It's like, "This is an awesome change." Um, and then it takes a, you know, month to roll out. It's like, well, you're dead. Like you can't iterate. You can't... H- how are you gonna do anything, right? Like, so anyway, about the heartbeat-
Lex Fridman 59:13 Yeah. (laughs)
Jeff Atwood 59:13 ... it's like get the, the prototype and then iterate on it. That's, that's what I view as like the central tenet of s- modern software development.
Lex Fridman 59:20 That's fascinating that you put it that way. It's actually... So I work in a, I build autonomous vehicles, and when you look at what, uh, maybe compare a Tesla to most other automakers, uh, the, the cycl- the, whatever, the heartbeat for Tesla is literally days, uh, in terms of they can, um, 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, uh, and that's reflected in everything that's, um-... the, the final product. It's reflected in really how slowly they adapt to the times, and so on.
Jeff Atwood 59:58 And to be clear, I'm not saying being a hummingbird is the goal either.
Lex Fridman 1:00:00 Right.
Jeff Atwood 1:00:00 It's like, you don't want a heartbeat that's like, so fast, it's like, your, your wing, y- you know, you're just freaking out. But like, it is a measure of health. You should have a healthy heartbeat.
Lex Fridman 1:00:07 Right.
Jeff Atwood 1:00:07 It's up to... for people listening to this to decide what that means, but it has to be healthy, it has to be reasonable 'cause otherwise you're just gonna be frustrated 'cause 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 Y," 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-
Lex Fridman 1:00:34 Mm-hmm.
Jeff Atwood 1:00:34 ... by the time they catch up with you, right? (laughs) Like, that's the way it works. And plus, users... Like, I, I... As a software developer and user, I love software that's constantly changing because-
Lex Fridman 1:00:43 Mm-hmm.
Jeff Atwood 1:00:43 ... I, I don't understand people who 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."
Lex Fridman 1:00:50 Yep.
Jeff Atwood 1:00:51 That's, 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 granted, there are some changes that suck (laughs) . 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 'cause it's like, well, you're fighting the essence of the thing that you're building. Like, that doesn't make sense. You wanna really embrace that. Not, not to be a hummingbird, but like, embrace it to a healthy cycle of your heartbeat, right?
Lex Fridman 1:01:18 So you talk about that people really don't change. It's true. The... That's why probably a lot of the stuff you write about in your blog probably will remain true.
Jeff Atwood 1:01:27 Well, 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-
Lex Fridman 1:01:37 Yeah.
Jeff Atwood 1:01:37 ... 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? Max.
Lex Fridman 1:01:45 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, uh, people are ultimately programming and so they will not... It, it's not something that you foresee changing in any fundamental way?
Jeff Atwood 1:02:10 Well, you gotta go look back on sort of the basics of programming. And one of the things that always shocked me is, like, source control. Like, I didn't learn anything about source control. Now gran- I, I graduated from college in 19, uh, 92. But I remember hearing from people like in la- as late as like 1998, 1999, 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 that you don't lose your work. Like, just, just basic soft- the be- literal bedrock of software development-
Lex Fridman 1:02:40 Mm-hmm.
Jeff Atwood 1:02:40 ... is source control. Now you compare it today, like GitHub, right? Like, Microsoft bought GitHub, which I think was an incredibly smart acquisition move on their part. Now they have... Anybody who wants, like, reasonable source controls, they can go sign up on GitHub. It's all set up for you, right?
Lex Fridman 1:02:52 Mm-hmm.
Jeff Atwood 1:02:52 There's tons of walkthroughs, tons of tutorials. So from
The published transcript ends here. Continue watching on YouTube
Episode duration: 1:20:08
In the uListen app, the transcript lights up word by word as you listen. Get uListen
Transcript of episode KZkYSSE8HHI