Seibel: The flip side of that these days is…

Fitzpatrick: Programmers’ time is worth more and all that crap? Whichcan be true. This is true for a small number of machines. Once you get to alot of machines, all of a sudden the programmers’ time is worth less thanthe number of machines that this will be deployed against, so now write it inC and profile the hell out of it, and fix the compiler, and pay people to workon GCC to make this compile faster.

Seibel: But even Google uses C++ rather than assembly, so there’s somepoint at which trying to squeeze the maximum performance isn’t worth it.Or is the theory that a good C++ compiler generates better code than allbut the most freakishly rare assembly coders?

Fitzpatrick: We still have some stuff in assembly, but it’s very rare. Wehave profiling for lots and lots of stuff and it has to really be justified torewrite it even from Perl to C, and then from C to assembly. Even if it’s allx86, there are all different variations of x86. Do you really want to writeassembly for every variation of x86? This one uses SSE 2 and that one usesSSE 3.1. Let the compiler deal with it.

Seibel: You learned to program from programming manuals when youwere a little kid. Are there any books that you strongly recommend to newprogrammers now or think that everyone should read?

Fitzpatrick: Back when I was doing Perl—even for people that knew Perlreally well—I would recommend MJD’s Higher-Order Perl. The book is reallyfun in that it starts somewhat simple and you’re like, “Yeah, yeah, I knowwhat a closure is.” And then it just continues to fuck with your head. By theend of the book, you’re just blown away. Even though I knew all that stuff, intheory, just watching it taken to the extreme really changed how I thought. Irecommended that to a bunch of my friends and it blew their minds. Ingeneral, any book that gives people a different style to think in. That’s themost recent example I can think of.

Seibel: I see you’ve got The Art of Computer Programming up there; itdoesn’t look too worn. How much of it have you read?

Fitzpatrick: Oh, I didn’t get it until less than five years ago, maybe fiveyears ago. I bounce around and read parts of it for fun. But at the time I gotit, I had already learned a lot of it through C.S.. So it probably would havebeen more valuable early on, but I didn’t really know about it prior to theInternet.

Seibel: How much math do you think is necessary to be a programmer? Toread Knuth and really understand it, you’ve got to be pretty mathematicallysophisticated, but do you actually need that to be a programmer?

Fitzpatrick: You don’t need that much math. For most programmers, dayto day, statistics is a lot more important. If you’re doing graphics stuff, mathis a lot more important but most people doing Java enterprise stuff or webstuff, it’s not. Logic helps and statistics comes up a lot.

Seibel: You obviously still enjoy programming. But reading some of yourLiveJournal entries from when you were in college, it seems like there weretimes when you were pretty stressed out and hating computers.

Fitzpatrick: Oh, well, I always hate computers. I don’t think we’ve reallymade any progress in quite a long time. Computers seem slower, andcrashier, and buggier than ever. But I’m such an optimist, I keep thinkingthat they’ll get better. It seems like my computing experience was happierten years ago than it is today. It seems like my computer was faster tenyears ago; like my computer worked better ten years ago. Things havegotten faster but the software has gotten slower and buggier in themeantime.

Seibel: Why do you think that is?

Fitzpatrick: I don’t know. Has the bar been lowered? Or are computersfaster so you don’t need to be efficient or you don’t need to know whatyou’re doing? I have no clue. Some combination of all of the above, ormaybe there are so many layers of abstraction that people don’t know whatthe hell is going on underneath because the computers are so damn fast thatit hides your stupidity.

Seibel: So maybe things are not as fast as they ought to be given the speedof computers. But ten years ago there was no way to do what people, asusers, can do today with Google.

Fitzpatrick: Yeah. So some people are writing efficient code and makinguse of it. I don’t play any games, but occasionally I’ll see someone playingsomething and I’m like, “Holy shit, that’s possible?” It just blows me away.Obviously, some people are doing it right.

I guess I’m mostly dissatisfied with the state of my desktop. It seems likethere is a lot of good interesting stuff going on in the back end. But as I’musing my computer I’m more and more frustrated with it. It seems like myMac shouldn’t have a beach ball spinning all the time.

Seibel: Do you have any interest in writing better desktop software?

Fitzpatrick: The problem is, no one uses it. You want to write stuff peopleuse, which comes down to web apps. I lost my laptop the other day andpeople were like, “Oh, my God, did you lose stuff?” I had no files on there.It was an Internet terminal. And it was an encrypted disk so I’m not worriedabout my password or cookies or anything like that. People won’t downloadprograms, I don’t think.

Seibel: Are you more motivated by having users or just by the fun ofprogramming?

Fitzpatrick: There’s definitely some stuff I write for me and I write itexplicitly for me as the only user and I could care less if I get patches andstuff. But a lot of times I want to work with other people. Having users is akey to getting contributors. More users find more bugs and find more usecases. It’s more fun to work with other people, especially on open sourcestuff.

It always feels good when someone writes in to tell you, “Hey, we’re nowusing your software for x.” That’s pretty cool. When I see the number ofweb sites that use memcached or the load balancer or something, I’m like,“Ah, that’s cool.” I remember all these porn sites started telling me they’reusing my file system. Well, that says something. I’m helping serve up porn.On Craigslist, every request goes through a web server that is basically afront end to memcached. OK. That’s cool.

Seibel: Do you think programmers are overenamored of new things? Newlanguages, new tools, new whatever?

Fitzpatrick: They might be. I don’t know if that’s desperation in hoping thenew thing doesn’t suck, like the new programming language does what weall want. But users are the same way. Users always like to get the one withthe higher version number even if it sucks more.

I don’t know if programmers are statistically different than humans ingeneral. New must be better. Which is not always the case, but peoplehope it is. They want it to be.

I remember talking to my dentist a while back and she was going on and onabout, like, the advances in dentistry over the last, like, five years, and shewas really excited about them.

Seibel: A lot of being a modern programmer requires finding the rightpieces that you need to use and understanding them just well enough to usethem. How do you deal with that?

Fitzpatrick: CPAN has everything. There are 14 ID3 parsers. Pick one.

Seibel: So that, in a way, is the problem facing the modernprogrammer—there are 14 of them. How do you pick?

Fitzpatrick: Google search—which one’s highest? Which one do peopletend to like? And knowing people. I got so much more involved in the opensource community once I started going to all these conferences becausethen I would meet people and see who was respected, and who was cool.

Then I would see their code: I remember that guy. He was awesome. Hewas fun, friendly, and attentive, and he really cared about his code. He wasreally passionate when people complained about it. I’m going to use that onebecause if I find any bugs, I know he’ll be crazy about fixing them. Asopposed to the grumpy guy who maybe writes great code, but he’s grumpyand not fun to interact with if you have a question or a bug. So you pickmaintainers you trust or respect.


Перейти на страницу:
Изменить размер шрифта: