The Shlemiel way of software

Author Joel Spolsky talks about what Microsoft has in common with his grandparents and what Isaac Bashevis Singer has to do with code-generating schemes.

Dec 9, 2004 | Any decent programmer can sketch out an algorithm. It takes some special inspiration to explain one by telling an old joke about a painter named Shlemiel.

The connection between software and Yiddish humor may not have been evident until Joel Spolsky began writing his Joel on Software essays and blog in 2000. But now that Spolsky has demonstrated it, the payoff is clear. For starters, Spolsky's writing is a lot more fun to read than most of the mountain of verbiage under the "how to write software" rubric. And once you've read his explanation of the dreaded "Shlemiel the painter algorithm" -- a clumsy way of writing a routine that involves repetitious round trips, each one longer than the previous -- you won't easily forget it, whether you're a programmer who has learned to avoid a dumb mistake or anyone else who might spy Shlemiel-like behavior in the world beyond RAM.

Spolsky, a professor's son who grew up in New Mexico and Israel (where he served in the armed forces), worked as a program manager on Microsoft Excel in the early '90s and later for the free e-mail provider Juno before cofounding Fog Creek Software. His entertaining and crystal-clear essays have placed him in the very small class of programming pros -- from Frederick Brooks near the dawn of computing time to Ellen Ullman, Paul Graham and Dave Winer today -- who are able to write about their insular world in a way that wins the respect of their colleagues and the attention of outsiders.

The best of Spolsky's essays have now been collected between soft covers in a generous volume with a fanciful title: "Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work With Them in Some Capacity."

Joel on Software

By Joel Spolsky

Apress

362 pages

Nonfiction

Buy this book

Amid the clank of old heating pipes at the Fog Creek office atop an old building near New York's Penn Station, I spoke with Spolsky recently about what's wrong with software development today, what Microsoft has in common with his grandparents and what schemes for automatically generating code have to do with the writing of Isaac Bashevis Singer.

Why, after decades of ostensible progress in the field, does it still seem so hard to make good software?

Nobody would be surprised if you told them it was hard to do open heart surgery. OK, fine, so maybe software isn't open heart surgery. But it has about the same number of moving parts, it's probably just as complicated, and it's critical in a different way. But there's something weird about designing software specifically: Everybody thinks they know how to do it, even when they have no training. They just think, Oh sure, I can do that!

There are many different schools of thought on better ways to organize software development. Do you subscribe to any of them?

There's certainly a lot of faux methodologies, what I often call "big-M" methodologies, extreme programming being a very popular one right now. And even when they're reflecting good ideas or best practices, the real goal of the methodologies is to sell books, not to actually solve anybody's problem. And selling the books is actually just a way to sell consulting engagements that the people who write those books do at high cost; that's their career -- giving speeches to people working for very boring companies on how to do software better.

The key problem with the methodologies is that, implemented by smart people -- the kind of people who invent methodologies -- they work. Implemented by shlubs who will not do anything more than follow instructions they are given, they don't work.

Recent Stories