Sunday, July 22, 2007

Good Read: Dreaming in Code

I finished Scott Rosenberg's Dreaming in Code last night. It kept me up way late.


Spoiler alert: I do say a little about what happens in the book. Also, while I don't explicitly say how it ends, you might pick up clues.

Still here? Okay, good!

I'd heard about this book before it came out, and I was looking forward to it. As fate would have it, I renewed my Salon subscription around the time it was released, and I noticed that I could get a copy as a fringe benny. Nice! Anyway, it took the usual six weeks for delivery, and then I stuck it in the pile of books to be read when I have enough time to read them in one sitting, and … I finally got around to it.

Dreaming in Code is too often portrayed as the software version of Tracy Kidder's The Soul of a New Machine. This is an understandable blurb or elevator pitch, but it's limiting and it's more than a little unfair. Rosenberg does frame the book as himself playing fly on the wall, watching a team of programmers trying to design and build a killer app named Chandler, and so the parallel is obvious. But (going on long-term memory here) Kidder wrote as though he was absolutely new to what he was reporting on. Rosenberg, by contrast, displays at least some chops -- he starts by telling a great story that took place way back in the year 2000: sweating it out alone, under the hood, in the dark hours of early morning, responsible for a key upgrade to Salon's web publishing software.

Rosenberg's experience and evident long-time interest in fighting playing with computers lets him go beyond Kidder's approach. Throughout, he steps away from just reporting on the daily grind. He gives history, he brings in other points of view, and he lets himself intrude when he's not with the Chandler team. I was going to say he provides context for the inner story, but it's a lot more than that. Toward the end of the book, he devotes the better part of entire chapters to an overview of software development, as an industry and as an art. He examines why it's so hard, and without being a doomsayer, why it might never get much better.

To my mind, Rosenberg's global commentary is the better part of the book. Some of the coverage of the Chandler woes reminded me of cringe moments from my own code monkey life. I was also a little irritated by the company's set-up: this was a project with a vague holy grail, a ton of internal cash, and no real deadlines. They had a rock star CEO who attracted rock star programmers. Consequently and unsurprisingly, Chandler immediately suffered paralysis-by-analysis.

It is a tiny drawback to Rosenberg's book that he chose a somewhat atypical company to cover, but it's not, ultimately, that important. What happens compares to most other software development efforts. The only difference, I suppose, is that the plug would have been pulled in other cases; Chandler is still alive.

To be fair about it, the goals of Chandler were admirable. It was to be something that truly let you organize disparate bits of information -- your calendar, email, chats, your own notes, pictures, everything -- all so that it would be easy for you to find, to stay on top of, and to share. You and your friends could not only read each other's Chandler stuff, but you could allow each other to modify it as well. Everything would be available on any computer you might sit down at. Full peer to peer sharing -- no irritating uploads to a server, no clunky Web interface. And best of all, you wouldn't have to restructure your brain to use the program. No irritating constraints. No wrestling with a piece of crap "written by programmers." Intuitive, flexible, infinitely extensible (and did we mention open source?!). Just the way a computer program should work.

Also in fairness: Had I been asked in the beginning, I would have killed to join this effort.

After I finished reading Dreaming in Code, I wondered who I might recommend it to. I suspected people who do software development for a living or as a serious hobby would share my annoyances with the foibles of the Chandler team. I also wondered whether plain and simple users would be scared off by some of the geekery. But, I kept thinking, this is a great book!

So here's why I recommend it.

First, it's really well-written. I'd put Rosenberg's ability to make words flow off the page up against anybody's. When someone writes as well as he does, the topic is almost beside the point.

And for you, specifically?

Maybe you write code, or at least like to tinker. Here's what's in store for you: Rosenberg is sympathetic, without being in any way apologetic, to the developer point of view. If you know what "Hello, world" means, you'll at least like the war stories from software's first fifty years. You'll love the detailed links and references in the notes. You might feel sympathy and a sense of kin to many of the book's characters. And I'm willing to bet you find real meat in Rosenberg's ruminations and prognostications about the whole sorry mess.

Maybe, on the other hand, you don't write code. You think computers should Just Work. You wonder when we'll no longer need wizardly incantations to accomplish what should be easy. You long for a day when "user interface" does not equate to "what were those boneheads thinking?" So what's in store for you?

Maybe, just maybe, you'll be awed by the effort, put forth by so many, to fulfill these dreams.

No comments:

ShareThis