I like working alone but I just bounce all over the place when I do. On aplane I’ll bring extra laptop batteries and I have a whole developmentenvironment with local web servers and I’ll be in a web browser, testingstuff. But I’ll still be hitting new tabs, and typing “reddit” or “lwn”—sites Iread. Autocomplete and hit Enter, and then—error message. I’ll do thismultiple times within a minute. Holy fuck! Do I do this at work? Am Ireading web sites this often that I don’t even think about it? It’s scary. I hada friend, who had some iptables rule, that on connection to certain IPaddresses between certain hours of the day would redirect to a “Youshould be working,” page. I haven’t got around to doing that, but I need todo something like it, probably.

Seibel: What about code ownership? Is it important for people to owncode individually or is it better for a team to share ownership?

Fitzpatrick: I don’t think code should be owned. I don’t think anyonereally thinks that. The way it works within Google is that it’s one massivesource tree, one root, and one unified build system across all of it. And soanyone can go and change anything. But there are code reviews, anddirectories have owners, always at least two people, just in case someone quitsor is on vacation.

To check in you need three conditions met: You need someone to review itand say it looks good. You need to be certified in the language—basicallyyou’ve proven you know the style of this language—called “readability.” Andthen you also need the approval above from somebody in the owner’s file inthat directory. So in the case that you already are an owner of thatdirectory and you have readability in that language, you just need someoneto say, “Yeah, it looks good.” And it’s a pretty good system, because theretends to be a minimum of two, up to twenty, thirty owners. Once you workon a code base for a while, someone just adds you to owners. I think it’s agreat system.

Seibel: So let’s go back in time a bit—how did LiveJournal start?

Fitzpatrick: It was just fucking around with my friends—what I wanted andwhat we thought would be funny. Commenting on LiveJournal was apractical joke. I was checking my LiveJournal right before I ran into class.We had just introduced friend pages and I saw something my friend wroteand it was really stupid and I wanted to make fun of him. “Oh, but I can’treply.” So I went to class and all throughout class I was thinking, “How can Iadd a reply system?” I was thinking of the existing schema and how wecould render it. I had a two-hour break between classes, so I addcommenting and I reply something smartass and sarcastic and go to myother class. When I came back from my second class, he’s like, “Whatthe fuck? We can comment now?”

Everything on LiveJournal was pretty much a joke. The whole security thing,like friends-only posts and private posts, was because a friend wrote that hewent to a party and woke up drunk in a ditch the next day. His parents readit and were like, “What? You’re drinking?” He was like, “Brad, we need away to lock this shit down!” I was like, “On it!” We already had friends, sowe just made it so some posts are friends only and then your parents—justdon’t be friends with them.

Seibel: In the early days of LiveJournal it seems your life was an endlessseries of late nights, sleeping late, and overall working long hours. Howmuch of that is a necessary part of programming?

Fitzpatrick: I just thought it was the least stressful time. During the day,there’s always something coming up, like another meal is coming up, or aclass, or maybe you get a phone call. There’s always some interruption. Ican’t relax. If I go into work two hours before some meeting, that twohours is less productive than if I didn’t have that meeting that day or if themeeting was the first thing in the morning. Knowing that I have nothingcoming up to bug me, I’m so much more relaxed.

At night I feel like this is my time and I’m stealing this time becauseeveryone else is sleeping. There’s no noise and no interruptions, and I cando whatever. I still stay up late sometimes. I did it this weekend; I was upquite a bit working on different things. But that screws me up for dayssleepwise. I did that mostly when I had to in college, because I had someproject, and I was also doing LiveJournal on the side. The only time to do itwas at night and also all our server maintenance had to be at night. Andthen in the summer, just because why not? There’s no reason to wake upearly in the morning to go to a class or anything, so might as well work atnight.

Seibel: What about the length and intensity? I’m sure you’ve done the 80-,100-, 120-hour weeks. Is that necessary? Under what circumstances is thatreally necessary and when is it just a macho thing that we do?

Fitzpatrick: In my case, I’m not sure it was either necessary or a machothing. I was having fun and it was what I wanted to be doing. Sometimesthings were breaking, but even when they weren’t breaking, I was still doingit just because I was working on a new feature that I really wanted to seehappen.

Seibel: Have you ever been in a situation where you really had to estimatehow long things were going to take?

Fitzpatrick: Once I got to Six Apart. I guess that was my first experience,three and a half years ago. We had started doing migration—we’d have acustomer and they’d say, “Can you move this data?” That requires addingthis support for this code and testing, and pushing it out. I was terrible at it.I probably still am terrible at it, because I always forget a factor, like thebullshit multiplier of having to deal with interruptions and the fact that I’mnever going to get away from maintaining a dozen projects on the side.

I think I’m getting better, but fortunately they don’t ask for that too often.And now when I actually do get a deadline for something, I’m like, “Yay! Adeadline!” and I get so excited that the adrenaline kicks in, and I work, and Ifinish the damn thing. Nothing with Google is really a deadline. With Googleit’s like, “What do you think about launching this? How does that feel?” It’srare that there’s some real deadline. Most of them, we think it’d be nice tolaunch on this date and so everyone tries really hard. But you’re only lettingdown other people that want to see it launch by that day if you don’t finishsomething. And most of the things I work on are very “When it’s done, it’sdone.”

Seibel: When you were hiring programmers at LiveJournal, did you managethem?

Fitzpatrick: Well, I kind of assumed that none of them would needmanaging; that they would just all be self-driven like me. That was a learningexperience in HR, that some people just do what they’re told and don’treally have a passion for excellence. They’re just like, “Done. Nextassignment,” Or they don’t tell you and just browse the Web. So I had acouple of painful experiences. But I think after a year or two of that, Ilearned that people are different.

Some are purists. They would just do abstraction on abstraction onabstractions. They would go really slowly and are very religious about theirstyle. They’re like, “I’m an artisan programmer.” And I was like, “Your codedoesn’t run. It’s not efficient and it doesn’t look like any of the other codethat you’re interacting with.”

Seibel: Did you figure out how to make good use of people like that?

Fitzpatrick: One person, I tried dozens of different things. I think hemight’ve been ten years older than me. I don’t know how much, because Inever ask that—I was afraid of legal hiring questions. But I got the feelingthat he didn’t want to work for some young punk. I was like 22. That oneeventually didn’t work out. That was the only person I let go.


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