Thompson: I don’t know. I hate to use the word scientist because I thinkit’s elitist. And implies a PhD. There’s no certificate that says “scientist” onit when you complete the scientist course, so I don’t like the term or use it.Engineer, I do have a degree that says “engineer” on it, so I can use theword engineer. And when I fill out an occupation I either put engineer orprogrammer because I can justify those. But mostly I just don’t worry aboutit.
Seibel: Well, leaving aside what you call yourself, who do you feel the mostaffinity with? Is it a physicist, a guy who builds bridges, a painter, or acarpenter?
Thompson: Kind of the lower things. I believe a craftsman but with acertain amount of artistry to keep it alive.
Seibel: How do you identify talented programmers?
Thompson: It’s just enthusiasm. You ask them what’s the most interestingprogram they worked on. And then you get them to describe it and itsalgorithms and what’s going on. If they can’t withstand my questioning ontheir program, then they’re not good. If I can attack them or find problemswith their algorithms and their solutions and they can’t defend it, beingmuch more personally involved than I am, then no. At the same time youcan get a sense of enthusiasm. It’s not something you ask directly, but in theconversation you’ll come with this enthusiasm-ometer, and that istremendously helpful for me. That’s how I interview. I’ve been told that it’sdevastating to be on the receiving side of that.
Seibel: I would imagine. It’s sort of like an oral exam. Do you supposeyou’ve ever run into people who just didn’t have the personality that candeal with that, independent of their programming ability?
Thompson: No, I don’t think it’s independent of programming. It would beif I started asking them classical computer-science kind of questions, butthat’s not what I’m asking them. I’m asking them to describe somethingthey’ve done that they’ve spent blood on. I’ve never met anybody whoreally did spend blood on something who wasn’t eager to describe whatthey’ve done and how they did it and why. I let them pick the subject. Idon’t pick the subject, so I’m the amateur and they’re the professional inthis subject. If they can’t stand an amateur asking them questions about theirprofession, then they don’t belong.
Seibel: What are you doing here at Google?
Thompson: Infrastructure. Operating-systems kind of stuff. Glue betweenthe pieces. I have a charter for anything I want. The challenge is to get abunch of unreliable machines to work like a reliable multiprocessormachine. I guess that’s the closest thing.
Seibel: Isn’t the point of Google’s famous MapReduce machinery that it’sshared-nothing message-passing rather than a shared memory?
Thompson: Well, it’s a process that has well-known semantics and nofeedback loops. If you have a reliable structure to do that, you can fit a lotof problems into that structure.
Seibel: And are you working on things within that kind of framework?
Thompson: No, it’s just trying to keep the burden of reliability off theindividual programmers. It’s a real tough challenge. All the software here haslayers and layers and layers of what happens if this doesn’t work, whathappens if that doesn’t work. What happens if I don’t work—who kills meand who starts up, who does what. I would guess way more than 50 percentof the code is the what-if kind.
Seibel: So your goal is to have that half of the code go away?
Thompson: Well, it would be hidden somewhere. It would apply in asystematic way to the other code. Hopefully. It’s a hard job.
Seibel: Do you like working here at Google?
Thompson: Parts of it I like, very much. But parts of it are just ponderousbecause there’s money involved in bugs and there’s money involved in lotsof the stuff. The size is unimaginable. Like day one you kind of get somethingcrippling along and day two you’ve got two million users. You just can’timagine such a thing.
Seibel: And you’re actually on the production side. As opposed to being inGoogle Labs, which might be more akin to your past at Bell Labs.
Thompson: But I’m not actually production either. I’m in projects that willbecome production. But I don’t babysit them after they’ve gone. Probably my jobdescription—whether I follow it or not, that’s a different question—would bejust to find something to make life better. Or have some new idea of new stuffthat replaces old stuff. Try to make it better. Whatever it is that’s wrong,that takes time, that causes bugs. If there’s anything in the structure ofGoogle, anything that you can put your finger on that could be done better, tryto do it better.
Seibel: I know Google has a policy where every new employee has to getchecked out on languages before they’re allowed to check code in. Whichmeans you had to get checked out on C.
Thompson: Yeah, I haven’t been.
Seibel: You haven’t been! You’re not allowed to check in code?
Thompson: I’m not allowed to check in code, no.
Seibel: You just haven’t gotten around to it, or you have philosophicalobjections to the Google coding standard?
Thompson: I just haven’t done it. I’ve so far found no need to.
Seibel: So you’re doing your stuff in your own sandbox? Do you mostly doyour stuff in C?
Thompson: I write mostly in C. I do all my test stuff and toy stuff in Cwhile Google is C++, strictly C++. It’s no big deal programming in C++, butI don’t like it. I resist it.
Seibel: You were at AT&T with Bjarne Stroustrup. Were you involved atall in the development of C++?
Thompson: I’m gonna get in trouble.
Seibel: That’s fine.
Thompson: I would try out the language as it was being developed andmake comments on it. It was part of the work atmosphere there. And you’dwrite something and then the next day it wouldn’t work because thelanguage changed. It was very unstable for a very long period of time. Atsome point I said, no, no more.
In an interview I said exactly that, that I didn’t use it just because it wouldn’tstay still for two days in a row. When Stroustrup read the interview hecame screaming into my room about how I was undermining him and what Isaid mattered and I said it was a bad language. I never said it was a badlanguage. On and on and on. Since then I kind of avoid that kind of stuff.
Seibel: Can you say now whether you think it’s a good or bad language?
Thompson: It certainly has its good points. But by and large I think it’s abad language. It does a lot of things half well and it’s just a garbage heap ofideas that are mutually exclusive. Everybody I know, whether it’s personalor corporate, selects a subset and these subsets are different. So it’s not agood language to transport an algorithm—to say, “I wrote it; here, take it.”It’s way too big, way too complex. And it’s obviously built by a committee.
Stroustrup campaigned for years and years and years, way beyond any sortof technical contributions he made to the language, to get it adopted andused. And he sort of ran all the standards committees with a whip and achair. And he said “no” to no one. He put every feature in that languagethat ever existed. It wasn’t cleanly designed—it was just the union ofeverything that came along. And I think it suffered drastically from that.
Seibel: Do you think that was just because he likes all ideas or was it a wayto get the language adopted, by giving everyone what they wanted?
Thompson: I think it’s more the latter than the former.
Seibel: It seems there are a lot of people who say, “Gosh, C++ is terrible.”Yet everyone uses it. For instance, it’s one of Google’s four officiallanguages. Why do folks continue to use it if it’s so bad?