Chris Anderson: OK, so let’s go there, because that’s interesting. You would not let go. So that’s not about being a geek and being smart, that’s about being stubborn?
Linus Torvalds: That’s about being stubborn. That’s about, like, just starting something and not saying, “OK, I’m done, let’s do something else — Look: shiny!” And I notice that in many other parts in my life, too. I lived in Silicon Valley for seven years. And I worked for the same company, in Silicon Valley, for the whole time. That is unheard of. That’s not how Silicon Valley works. The whole point of Silicon Valley is that people jump between jobs to kind of mix up the pot. And that’s not the kind of person I am.
Chris Anderson: But during the actual development of Linux itself, that stubbornness sometimes brought you in conflict with other people. Talk about that a bit. Was that essential to sort of maintain the quality of what was being built? How would you describe what happened?
Linus Torvalds: I don’t know if it’s essential. Going back to the “I’m not a people person,” — sometimes I’m also — shall we say, “myopic” when it comes to other people’s feelings, and that sometimes makes you say things that hurt other people. And I’m not proud of that. But, at the same time, it’s — I get people who tell me that I should be nice. And then when I try to explain to them that maybe you’re nice, maybe you should be more aggressive, they see that as me being not nice. What I’m trying to say is we are different. I’m not a people person; it’s not something I’m particularly proud of, but it’s part of me. And one of the things I really like about open source is it really allows different people to work together. We don’t have to like each other — and sometimes we really don’t like each other. Really — I mean, there are very, very heated arguments. But you can, actually, you can find things that — you don’t even agree to disagree, it’s just that you’re interested in really different things.
And coming back to the point where I said earlier that I was afraid of commercial people taking advantage of your work, it turned out, and very quickly turned out, that those commercial people were lovely, lovely people. And they did all the things that I was not at all interested in doing, and they had completely different goals. And they used open source in ways that I just did not want to go. But because it was open source they could do it, and it actually works really beautifully together. And I actually think it works the same way. You need to have the people-people, the communicators, the warm and friendly people who like — really want to hug you and get you into the community. But that’s not everybody. And that’s not me. I care about the technology. There are people who care about the UI. I can’t do UI to save my life. I mean, if I was stranded on an island and the only way to get off that island was the make a pretty UI, I’d die there. So there’s different kinds of people, and I’m not making excuses, I’m trying to explain.
Chris Anderson: Now, when we talked last week, you talked about some other trait that you have, which I found really interesting. It’s this idea called taste. And I’ve just got a couple of images here. I think this is an example of not particularly good taste in code, and this one is better taste, which one can immediately see. What is the difference between these two?
Linus Torvalds: So this is — How many people here actually have coded?
Chris Anderson: Oh my goodness.
Linus Torvalds: So I guarantee you, everybody who raised their hand, they have done what’s called a singly-linked list. And it’s taught — This, the first not very good taste approach, is basically how it’s taught to be done when you start out coding. And you don’t have to understand the code. The most interesting part to me is the last if statement. Because what happens in a singly-linked list — this is trying to remove an existing entry from a list — and there’s a difference between if it’s the first entry or whether it’s an entry in the middle. Because if it’s the first entry, you have to change the pointer to the first entry. If it’s in the middle, you have to change the pointer of a previous entry. So they’re two completely different cases.
Chris Anderson: And that’s better.
Linus Torvalds: And this is better. It does not have the if statement. And it doesn’t really matter — I don’t want you understand why it doesn’t have the if statement, but I want you to understand that sometimes you can see a problem in a different way and rewrite it so that a special case goes away and becomes the normal case. And that’s good code. But this is simple code. This is CS 101. This is not important — although, details are important. To me, the sign of people I really want to work with is that they have good taste, which is how — I sent you this stupid example that is not relevant because it’s too small. Good taste is much bigger than this. Good taste is about really seeing the big patterns and kind of instinctively knowing what’s the right way to do things.