
Jeff Atwood: Stack Overflow and Coding Horror
Lex Fridman PodcastEpisode mentions
People mentions
Reviews
No reviews yet, be the first!
Transcript
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 at Lex Friedman spelled Frid and now here's my conversation with Jeff Atwood. Having co created and managed for a few years the world's largest community of programmers in Stack overflow ten years ago, what do you think motivates most programmers? Is it fame, fortune, glory, process of programming itself? Or is it the sense of belonging to a community?
I think it's puzzles, really. I think it's this idea of working on puzzles independently of other people and just solving a problem, sort of like on your own almost, although nobody really works alone in programming anymore. But I will say there's an aspect of sort of hiding yourself away and just sort of beating on a problem until you solve it. Like brute force, basically, to me, is what a lot of programming is. The computer is so fast, right? You can do things that would take forever for a human, but you can just do them so many times and so often that you get the answer right.
You're saying just the pure act of tinkering with the code.
Yes.
Is the thing that drives most programs, the struggle, balance within, the joy of overcoming the brute force process of pain and suffering that eventually leads to something.
That actually works well, data is fun, too. Like there's this thing called the shuffling problem, like the naive shuffle that most programmers write has a huge flaw. And there's a lot of articles online about this because it can be really bad. If you're like a casino and you have an unsophisticated programmer writing your shuffle algorithm, there's surprising ways to get this wrong. But the neat thing is the way to figure that out is just to run your shuffle a bunch of times and see how many orientations of cards you get. You should get an equal distribution of all the cards. And with the naive method of shuffling, if you just look at the data, if you just brute force and say, okay, I don't know what's going to happen, you just write a program that does it a billion times and then see what the buckets look like of the data. And the Monty hall problem is another example of that where you have three doors and somebody gives you information about another door. So the correct answer is you should always switch in the money hall problem, which is not intuitive and it freaks people out all the time, right? But you can solve it with data. If you write a program that does the money hall game never switches and 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?
So empirically find it. But what's the joy of that? So for you personally, outside of family, what motivates you in this process?
Well, to be honest, I don't really write a lot of code anymore. What I do at discourse is like managery stuff, which I always kind of despised, right? As a programmer, you think of managers as people who don't really do anything themselves. But the weird thing about code is you realize that language is code. The ability to direct other people lets you get more stuff done than you could by yourself. Anyway, you said language is code. Language is code.
Meaning communication with other humans.
Yes, it is.
You can think of it as a systematic. So what is it like to be, before we get into programming, what makes a good manager? What makes a good leader?
Well, I think a leader, it's all about leading by example, first of all. Like sort of doing and being the things that you want to be. Now, this can be kind of exhausting, particularly when you have kids, because you realize that your kids are watching you all the time, even in ways that you've stopped seeing yourself. Like the hardest person to see on the planet is really yourself, right? It's a lot easier to see other people and make judgments about them. But yourself, like, you're super biased. You don't actually see yourself the way other people see you. Often you're very, very hard on yourself in a way that other people really aren't going to be. So that's one of the insights is you got to be really diligent about thinking. Like, am I behaving in a way that represents how I want other people to behave? Right? Like leading through example. There's a lot of examples of leaders that really mess this up, right? Like they make decisions that are like, wow, it's a bad example for other people. So I think leading by example is one. The other one, I believe, is working really hard. I don't mean like working exhaustively, but showing a real passion for the problem. 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 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 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 do you get people to use complete sentences, although those are problems as well. But how do I get people to get along with each other, right, and solve whatever problem it is they set up to solve or reach some consensus on discussion, or just not hurt each other, even maybe it's a discussion that doesn't really matter. But are people like yelling at each other and why? Right. That's not the purpose of this kind of communication. So I would say leadership is about setting an example, doing the things that represent what you want to be and making sure that you're actually doing those things. And there's a trick to that too, because the things you don't do also say a lot about what you are. Yeah.
So let's pause on that one. So those two things are fascinating. So how do you have as a leader 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 both that the things you're doing are the wrong things to be doing, the way you speak to others, the way you behave, and the things you're not doing, how do you get that signal?
There's two aspects to that. One is like processing feedback that you're getting.
How do you get feedback?
Well, right? Are you getting feedback? Right. 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, there can be misunderstandings, things like that. So it's part of 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 going to have a bad day. Something could happen to that person. There's a lot of variables. So first, when you think about leadership, have multiple people doing leadership and have them talk amongst each other. So they're giving each other feedback about the decisions that they're making. And then when you do get feedback, I think there's that little voice in your head, right, or your gut, or wherever you want to put it in your body. I think that voice is really important. I think most people who have any kind of moral compass or most people want to do the right thing. I do believe that. I mean, there might be a handful of sociopaths out there that don't, but most people, they want other people to think of them as a good person. And why wouldn't you? Right? Like, do you want people to despise you? I mean, that's just weird, right? So you have that little voice, that sort of the angel and devil on your shoulder sort of talking to you about what you're doing, how you're doing. How does it make you feel to make these decisions? Right? And I think having some attunement to that voice is important.
But you said that voice also for. I think this is a programmer situation, too, where sometimes the devil on the shoulder is a little too loud. So you're a little too self critical for a lot of developers, especially when you have introverted personality. How do you struggle with the self criticism or the criticism others? So one of the things of leadership is to do something that's potentially unpopular or where people doubt you and you still go through with the decision. So what's that balance like?
I think you have to walk people through your decision making, right? This is where blogging is really important and communication is so important. Again, code language is just another kind of code. It's like, here is the program by which I arrived at the conclusion that I'm going to reach, right? 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, we've been thinking about 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, maybe I don't totally agree with you, but I can kind of see where you're coming from, and I see it's not just arbitrary decision delivered from a cloud of flames in the sky, right. It's like a human trying to reach some kind of consensus about 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.
And the other one you said is passion or hard work. Sorry.
Well, those are tied together in my mind, let's say hard work, compassion. For me, I just really love the problem discourse is setting out to solve. Because in a way, it's like 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. First, because I think Facebook is really good at execution. I got to compliment them. They're very competent in terms of what
To see the rest of the transcript, you must sign in