August 17, 2007

Interview with Joel Spolsky

The current issue of the ACM magazine Queue (v5i5 July/August 2007) has an interesting interview with software development guru Joel Spolsky, author of the Joel on Software blog.

Some excerpts:

BF You’ve written a few books in the past few years, and I see many books piled up in your office. What are you reading now? Anything to recommend?

JS There aren’t many books on the state of the art in software development and software management right now, which are the kinds of things that I like to write and read about. Unfortunately, we haven’t moved beyond the anecdote phase, and attempts to move beyond the anecdote phase are usually just anecdotes with statistics.

Part of the problem is there really isn’t a science going on here, which is very frustrating. The same applies to an awful lot of business writing. It’s very easy to write a book called, for example, The Starbucks Principle or The Dell Way, and just bring up a whole bunch of random anecdotes and somehow tie them together thematically and pretend that this is a real thing that you can do and be successful at.

And, lo and behold, another moron then is going to try to attempt the same thing in his or her own company. It doesn’t work because it doesn’t apply or because it didn’t work in the original company, either—it’s just an anecdote that somebody pulled out of thin air. That’s one of the problems that this particular field has been suffering from.

What we do have are anecdotes from the elderly, people like me, or even the truly elderly, the Gerald Weinbergs of the world, writing brilliant things. Timothy Lister, Tom DeMarco, Ed Yourdon—these are people writing, “I’ve been here for a long time. I know I’m a curmudgeon, but let me tell you young folk what it’s like, da da da da da da da. Here are some examples. What this showed was da da da.” If you read a bunch of those anecdotes, you actually may learn something. That’s sort of the oral knowledge of our field.


BF Since you’re passionate about how people interact with computers, I’d like to get your thoughts on the current buzz about Web 2.0 user interface technologies. Has this stuff made our lives better or worse?

JS It has made life a lot harder for programmers, but it has probably benefited users when the programmers do it well. When the user interface works in the way that it’s expected to, and the user model corresponds to the program model, then it’s great for users.

On the other hand, it’s much harder for programmers for several reasons. First, the number of languages you program in has increased. You’re always writing some JavaScript for the browser. And then you’re writing in whatever server-side application language you use—Java, PHP, etc. And then you’re writing in HTML and CSS. You’ve got a bunch of languages to learn, to know, and to keep track of.

Code lives in lots of different places. Just because you wrote a little function that calculates the time of day in the current time zone in one place—let’s say server-side PHP—does that mean it’s going to work for you in JavaScript? That requires all kinds of coordination. The number of things that can go wrong is absurd. You have to test on three or four different popular browsers, at the very least.

Once again, we have hit the world where you have to write really small amounts of code and make them very tight and very fast. For a while we had the luxury of being able to write really sloppy code and never bother optimizing anything, because computers worked “fast enough” and the amount of code didn’t really matter. When you’re writing client-side JavaScript, however, there’s download time, and then the code has to compile. There is a practical limit to the amount of code that you can write on the client side.

No comments: