The issue of taste really fits in there. You can have a piece of textdescribing something that describes it correctly or it can describe itwell, with some flair. And the same thing’s true of programs. It can getthe job done or it can also make sense, be put together well.

Seibel: And why does that matter? Is that just for the satisfaction of itor is tasteful code also better in some practical way?

Zawinski: To a large degree, tasteful and maintainable are similar. Orvery closely related. One of the things that makes a piece of writingtasteful is if it’s structured in a way that’s easy to grasp. Are the factsloaded up at the front or are they scattered around? If you’re referringback—if you’re flipping through a book, can you figure out where inthe book is the thing you kind of remember? “This was somewherenear the middle because that’s where he talked about this thing.” Or isit just scattered all through. And that’s the same sort of thing thatgoes on with programming a lot.

Seibel: Do you think the kind of people who can be successful atprogramming has changed?

Zawinski: Certainly these days it’s impossible to just write a programfrom scratch that doesn’t have any dependencies. The explosion oftoolkits and libraries and frameworks and that sort of thing—even themost basic piece of software needs those these days. It’s justexploded. These days, everything’s got to be a web app. And that’s justa whole different way of going about it.

So, if anything, that makes the part of the skill set that is being able todive into someone else’s code and figure out how to make use of iteven more important. “I don’t understand this, so I’m going to writemy own” worked better in the past. Whether it was ever a good ideaor not, you could do it. It’s much harder to get away with that now.

Seibel: I wonder if the inclination to take things apart and understandeverything also needs to be a little more tempered these days. If you try totake apart every piece of code you work with, it’ll never end—these days you’vegot to have a little capacity for saying, “I sort of understand how this worksand I’m going to let it go at that until it becomes urgent that I understand itbetter.”

Zawinski: Yeah. My first instinct, because things work that way, isyou’re breeding a generation of programmers who don’t understandanything about efficiency or what’s actually being allocated. When theyrealize, “Oh, my program’s getting gigantic,” what are they going todo? They’re not going to know where to start. That’s my first instinctbecause I’m a caveman. Really that probably doesn’t even matterbecause you’ll just throw more memory at it and it’ll be fine.

Seibel: Or perhaps people will actually learn a more sophisticatedview of what all those things mean. Like, maybe it doesn’t really matterwhether we allocated six bytes or four bytes here—what matters iswhether we’ve sized this thing so it fits in one node of the clusterversus having to spill over onto a second node.

Zawinski: Right, exactly. I think programming has definitely changedin that sense. The things you had to focus on before were different.Before you would focus on counting bytes, and “How big are myobjects? Maybe I should do something different here because thatarray header is really going to add up.” Things like that. No one is evergoing to care about that stuff again. Tricks like XORing your forwardand back pointers into the same word are voodoo—why wouldanyone do that; it’s crazy. But there’s this whole different set of skillsnow that were always around but come more to the front. Peoplewho can dig into an API and figure out which parts you need andwhich parts you don’t, is, I think, one of those important things now.

Seibel: If you were 13 today, would you be drawn to programmingthe way programming is today?

Zawinski: So hard to say. I don’t know any 13-year-olds. I don’t knowwhat the world looks like. Things are harder to take apart now.There’s not going to be some 10-year-old who pops open his cellphone and figures out how the speaker works like I did with a phonewhen I was a little kid. There are no user-serviceable parts anymore.

I feel like that kind of tinkering, taking the back of the tape deck offand seeing how the gears fit together, that sort of exploration is whatled to this for me. Aside from things like LEGO Mindstorms, I don’tthink there’s a lot of opportunity for people to follow that path thesedays. But maybe I’m wrong—like I said, I don’t know any 13-year-olds.I don’t know what the toys are like. There’s a lot of video games;there’s a lot of things with remote controls. I haven’t seen any reallygood construction kinds of toys. Which seems sad.

Seibel: On the flip side, programming itself is much more accessible.You don’t have to master all the intricacies of assembly programmingright off the bat just to make a computer do something neat.

Zawinski: Yeah. I imagine that today’s kids who are getting intoprogramming start off building some web app or writing a Facebookplugin or something. Brad Fitzpatrick, who wrote LiveJournal, is afriend of mine. When he wrote LiveJournal he was goofing around andwrote this Perl script where he and his friends could say, “I’m going toget lunch.” The way he started out was he wrote a little Perl scriptand put it on a web server. Probably things will go more in thatdirection.

Brad Fitzpatrick

Brad Fitzpatrick is the youngest person I interviewed and the only one who hasnever lived in a world without the Internet or personal computers. Born in 1980,he got an early start as a programmer, learning to program at age five on a homebuiltApple II clone. By his teenage years the Internet revolution was in full swingand he was deep into it, building his first commercial web site while still in highschool and starting work on the popular community site LiveJournal the summerbefore he went to college.

Keeping up with LiveJournal’s ever-growing popularity forced Fitzpatrick to learnthe hard way about building scalable web sites and along the way he and theprogrammers at the company he founded, Danga Interactive, ended up buildingseveral pieces of open source software, including memcached, Perlbal, andMogileFS, which are now used on the servers of many of the world’s busiest websites.

Fitzpatrick is a prototypical—if exceptionally accomplished—turn-of-the-centuryweb programmer: his primary programming languages have been Perl and C,though he also works in Java, C++, Python, JavaScript, and C# as needed. Andalmost all the programming he does is somehow network-related, whether it’sbuilding better back-end infrastructure for web sites, designing protocols andsoftware to improve the way blog-reading software knows when blogs have beenupdated, or programming his cell phone to automatically open his garage doorwhen he rides up on his motorcycle.

We talked about learning to program at the same age as he was reading Cliffordthe Big Red Dog, why he was glad he stayed in college while running LiveJournal,and how he learned not to be afraid of reading other people’s code.

Seibel: How did you become a programmer?

Fitzpatrick: My dad was working at Mostek. They made memory and hewas into computers. He built an Apple II from spare parts, pretty much. Heand my mom would sit around the TV soldering it all together. It took themmonths, just soldering it. Then he was able to get ROMs from work thatthey weren’t going to sell because they had a bit, or multiple bits, stuck highor stuck low. Somehow they got the Apple II ROM and they just keptburning it onto these dead chips until they got one that worked, where thestuck bits just happened to be right. Eventually he and a bunch of hiscoworkers managed to make homemade Apple IIs. I was playing on thatfrom age two or so and watching him program.


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