I imagine Scott Rosenberg reckoned he’d picked a winner when he started Dreaming in Code, his 2007 book chronicling the development of the Chandler personal information manager. The project seemed to have everything going for it. It had all the fashionable features: GTD! Open Source! Peer-to-peer! Level the silos! It was headed by software legend Mitch Kapor. It had infinite funding. It had talented programmers with impeccable resumes—decades upon decades of successful experience creating good software.
Over the course of Dreaming, though, we see this elite team gradually self-destruct. We see vague spec. We see unrealistic deadlines. We see huge mid-stream course changes. As Rosenberg writes, “By now, I know, any software developer reading this volume has likely thrown it across the room in despair, thinking, ‘Stop the madness! They’re making every mistake in the book!’” Dreaming finally ends four years into Chandler’s development—with version 1.0 still a distant vision (it was finally released, mostly to yawns, last August ).
Rosenberg, though, is savvy enough to turn the Chandler team’s failure into his own success. Not only does he use the story to anchor an excellent (if basic) introduction into the practices and quirks of the industry as a whole, he weaves an engrossing and deeply human narrative.
Aristotle said tragedy should evoke fear and pity in the viewer, and Rosenberg deftly supplies us with both. On the one hand, Dreaming reads like watching a horror movie: “No! Why are you splitting up to explore the house!? Why do you keep changing the UI every 6 months!? Noooo!!!!” At the same, Rosenberg does a pretty good job of making us really like many of the characters. Kapor, in particular, comes off as both an intelligent visionary and genuinely good guy. Watching Chandler implode, I feel bad for him.
In interviews, Rosenberg shows again and again how the characters, all experienced programmers, understand the Classic Mistakes. Then he describes with agonizing clarity how they turn right around and proceed to make just those mistakes. I think it’s this quality that put me so in mind of classical tragedy, where the noble hero is undone by just these sorts of tragic flaws or mistakes.
Rosenberg resist the temptation to write another Lessons From Software Failure manual. Instead he shows how smart, capable programmers working in an ideal environment can reenact the same fatal mistakes programmers were cataloging decades ago. Like Greek drama, Dreaming confronts the ineluctability of failure head-on. Rosenberg’s ultimate thesis is nothing more or less than the classic words of Donald Knuth, with which he opens the book: Software is hard. Sophocles would be proud.
Other reviews I liked: