Thompson: Yeah. That’s all this place does. It’s very hard to read. So yougo off and you start reading the binding code. And then this code. And thenthe general IPC. That gets you a handle into where you can actually startreading stuff and understanding stuff. Before that, you can’t understand athing.
Seibel: When you work on a team, what’s the structure that you like?
Thompson: Just working with good, compatible people.
Seibel: When you’re working with compatible people, do you favor strongcode ownership: “I wrote this piece of code; it is mine and I’m responsiblefor it,” or more shared ownership: “We all own this code together andanyone can do what they see fit.”?
Thompson: I’ve always worked halfway in between. There’s somebodywho owns it and if you have a problem with it, you mail them or tell themand their job is to fix it. And then at some point they disappear, they don’twant it, they don’t fix it, they’re not responsive—then you fix it. Thecatchphrase is, “You touched it last.” You own it. So it’s halfway between.You don’t have a bunch of people going in and modifying the code willy-nilly.It’s all filtered through an owner. But that owner can change pretty easily.
Seibel: These days there are folks who advocate pair programming,meaning two people working at one keyboard. Have you ever worked thatway?
Thompson: Something small can be done like that. Very often I’ll be typingand somebody else, who will obviously be faster at it than I, will sit downand they’ll type and I’ll talk. I’ve done that on orders of minutes to hours,very few hours, to get one thing done that both of us could have doneseparately.
Seibel: And did you find that the result was better or it got done faster?
Thompson: The result isn’t better. Probably debugging is faster—as you’retyping, someone can catch a bug over your shoulder. So I think it willgenerate fewer bugs as you go. But I didn’t find it as a philosophy as a wayto go—it just happens.
Seibel: Do you still enjoy programming?
Thompson: Yes. I like small programs. Small, meaning you can do it in amonth. If you’re trying to do some monster task that takes a year, I can’tkeep in it that long.
Seibel: Was that always the case, or have you lost the energy for longerprojects?
Thompson: I don’t know. It depends on the actual thing. Something bigthat takes years, like an operating system, you subdivide that and there arelots of fun pieces, so that counts as multiple small things as opposed to onebig thing. But there are lots of things that are just one big thing, and those Ithink I’ve always found difficult. I need gratification, feedback. And if youhave to sit there and work and work and work for days, months and seenothing except a pile of code, then I have trouble doing that.
Seibel: You’ve mostly worked in research and it seems you’ve had a lot oflatitude to work on what you like, but did it change when it become a job?Did it take any of the fun out of it?
Thompson: No. It’s always been fun, and mostly because I just selectedwhat I wanted to do. And even when it was a job, back in college, therewere tons and tons of jobs available. It seemed to me that there were tonsof people who were doing something, whatever it is, and they needed somelittle programming task done on the side to aid them. So they were perfectfor me. They were little tiny jobs that I could get into, get in and out in daysand pick and choose which one I wanted to take.
I think my first one was a humanities professor cataloging Homer’s work.And he had The Iliad and The Odyssey on cards. He wanted word frequenciesand counts—essentially statistical analysis of these two works. And that wasfun. It was text processing, which just wasn’t done by computers in thosedays. So that was my first odd job.
Seibel: In a 1999 interview you talked about how you had told your son heshould go into biology instead of computers because you thoughtcomputers were played out. That was almost ten years ago. How do youfeel about that now?
Thompson: I feel the same. Nothing much new has happened incomputers that you couldn’t have predicted. The last significant thing, Ithink, was the Internet, and that was certainly in place in ’99. Everything hasexpanded—the speed of individual computers is still expandingexponentially, but what’s different?
Seibel: Reading the history of Unix, it seems like you guys basicallyinvented an operating system because you wanted a way to play with thiscomputer. So in order to do what today might be a very basic thing, such aswrite a game or something on a computer, well, you had to write a wholeoperating system. You needed to write compilers and build a lot ofinfrastructure to be able to do anything. I’m sure all of that was fun for itsown sake. But I wonder if maybe the complexity of modern programmingthat we talked about before, with all these layers that fit together, is thatjust the modern equivalent of, “Well, first step is you have to build yourown operating system”? At least you don’t have to do that anymore.
Thompson: But it’s worse than that. The operating system is not onlygiven; it’s mandatory. If you interview somebody coming out of computerscience right now, they don’t understand the underlying computing at all. It’sreally, really scary how abstract they are from what a computer is or eventhe theory of computing. They just don’t understand it.
Seibel: I was thinking about your advice to your son to go into biologyinstead of computing. Isn’t there something about programming—theintellectual fun of defining a process that can be enacted for you by thesemagical machines—that’s the same whether you’re operating very close tothe hardware at a very abstract level?
Thompson: It’s addictive. But you wouldn’t want to tell your kid to go intocrack. And I think it’s changed. It might just be my aging, but it seems likewhen you’re just building another layer on top of another layer on top ofanother layer, you don’t really get the benefit of writing, say, a DFA. I thinkby necessity algorithms—new algorithms are just getting more complexover time. A new algorithm to do something is based on 50 other littlealgorithms. Back when I was a kid you were doing these little algorithms andthey were fun. You could understand them without it being an accountingjob where you divide it up into cases and this case is solved by thisalgorithm that you read about but you don’t really know and on and on. Soit’s different. I really believe it’s different and most of it is because the wholething is layered over time and we’re dealing with layers. It might be that I’mtoo much of a curmudgeon to understand layers.