Software All-Stars

A compendium of one man's idea of best writings on software has its hits and misses.

The heaping together of paintings by Old Masters in museums is a catastrophe; likewise, a collection of a hundred Great Brains makes one big fathead.
—Carl Jung

Let us hope that the principle which Jung enunciated for Old Masters and Great Brains does not apply to writing about software. Otherwise, Joel Spolsky's latest production, The Best Software Writing I (Apress, 2005), is in definite trouble. The idea behind this book is pretty simple: Joel invited his readers to nominate the best software writing that they found littering the Internet, and then he selected the pieces that he felt were really best. The result is a collection of essays on diverse topics, with very little code in sight. But how does the end result stack up? That's the question I want to consider here, at the risk of leaving a distinct aroma of sour grapes in my own corner of the Web (after all, he didn't choose any of my writing to include).

Titles Count
That's what my thesis advisor used to remind me on a regular basis (usually when he was bouncing back one of my college essays awash in red ink). In this particular case, the title is misleading right off the bat. A more honed title would have been something like "Pretty good writing by software geeks that was published online and that Joel or his readers happened to run across." From the publishing standpoint, though, there are some problems with that title: It wouldn't fit on a book spine or in Amazon's database, and probably would have sold about as well as red t-shirts at a Democratic party convention.

Still, it's worth taking a few moments to realize what this book is not. You won't find any papers excerpted from conference proceedings here (though Adam Bosworth does sneak in a pretty informal conference talk) or academic publications. In fact, things go to the far extreme: There are comic strips and the sort of slapdash informal speculation that weblogs are littered with. That's understandable, since Joel apparently took as his mission finding things that would be fun to read, as well as things that made some interesting point about software development.

So, although Best Software Writing makes for a snappy title (and that I at the end is an obvious setup for a sequel, just like the average summer blockbuster movie ending these days), don't try to take "best" in any absolute sense. Look on it as an anthology of writing by software folks for software folks, and you'll be a lot closer to the mark.

Reaching Into the Mixed Bag
As with most anthologies, this one is a mixed bag. I personally could happily go the rest of my life without ever reading another supercilious essay by Paul Graham or suffering through another Rory Blyth comic strip. Of course, those are only personal preferences; many people find Rory's stuff uproariously funny, and for them, I am happy.

On the other hand, there's always time to read another nugget of Windows history from Raymond Chen (who writes here about backwards compatibility tweaking and why it is necessary in Windows), and without this book I wouldn't have discovered Gregor Hohpe's simple, real-world explanation of the perils of two-phase commit ("Starbucks Does Not Use Two-Phase Commit," an analogy I shall happily steal the next time I need to explain things to a new developer). But you know, it doesn't matter a whole lot that there are some things here that I don't like. With a collection of short pieces like this (29 in all) it's easy to just flip to the next one when a particular essay bores or annoys you, though if you've got a short fuse you may occasionally need to retrieve the book from across the room.

Let's talk about some of the definite highlights of the book (again, from my own idiosyncratic point of view). Eric Sink has a lovely two-parter called "Closing the Gap," the gap in question being that between the customer and your product. If you're trying to sell software, you definitely want this gap to be closed, or at least you want your customer's money to cross it. Eric is a relatively successful software guy, in terms of actually selling a product as well as building it, and here he shares a lot of good advice on sales and marketing and other skills in which many developers are utterly lacking.

On the "fun" side of the spectrum is Aaron Swartz's PowerPoint translation of Edward R. Tufte's anti-PowerPoint screed "The Cognitive Style of PowerPoint." Tufte, of course, has made part of his career out of repeating loudly that using PowerPoint makes you a stupid and bad presenter, in a manner reminiscent of those who would shut down all television with the exception of PBS and possibly the morning farm price report. Swartz reduces Tufte to slides and bullet points, and it's up to you to decide how serious he is — or how seriously he takes Tufte.

On a more serious note, Eric Lippert's "How Many Microsoft Employees Does it Take to Change a Lightbulb" is a cogent explanation of the amount of effort it takes to add five lines of code to a mature product shipped by a large corporation. Yes, your particular problem might only take five lines of code to solve. But by the time those five lines are specified and tested and localized and examined for security implications and made useful by blind Windows 95 users, the cost is staggering. That's the sort of thing you don't generally learn in school when you're using Pascal to put together a linked list so that your instructor will pat you on the head.

Moving back to the amusing side of the book, I love Leon Bambrick's skewering of the Windows Search user interface. "Aware for the Silliest User Interface: Windows Search" has nearly enough nasty things to say about that silly dog, though I would have appreciated it even more if firearms had made an appearance.

Some of the essays here edge over into the social consequences of computing. Cory Doctorow's "Save Canada's Internet from WIPO" looks at the bad effects of the notice-and-takedown approach to copyright violations (though, like much of the strident social warning stuff from the protectors of the Internet, I think it's a bit over the top). Regardless of your politics, such things are worth thinking about.

The Envelope, Please
All in all, I'd say about half the pieces in this book are, from my point of view, superior enough to warrant inclusion, and only about a third are real clunkers that should have been left on the sticky floor of the Internet. Given how opinionated I tend to be, that's a pretty darned good average for any anthology. An anthology inevitably reflects the tastes of its editor, and you should go into it expecting to have to browse around to find the high points. If I can find two or three good essays in a collection like this, I consider it worth my time, so finding a dozen or more makes this a superior product.

More importantly from the point of view of this column, how does The Best Software Writing I fit into the goal of educating developers to be better at their craft? I don't see this as a book that's going to teach anyone deep truths about software engineering, but it still has its place. The longer I spend in this field, the more I want to deal with other developers who have interests beyond the code; reading books like this can help you find the points where software touches on the rest of the world. If you want something light to browse through between heavier tomes, or a book that might provoke a few interesting lunchroom discussions around the corporate table, go for it.

Want to read more of Mike's work? Visit his Larkware site for daily updates at http://www.larkware.com.

About the Author

Mike Gunderloy, MCSE, MCSD, MCDBA, is a former MCP columnist and the author of numerous development books.

comments powered by Disqus
Most   Popular