Not that long ago, being educated meant above all knowing Latin and Greek. At the more academic high schools and universities, we still expect some language proficiency (generally in modern languages) from the graduates. When I get involved in discussions about the future of education, many people promote the importance of learning Mandarin given the rising importance of China.
But there’s another realm of languages that is more fundamental to our century than Mandarin. Convinced of this, at some point in the mid-90s I went out and bought the so-called wizard book, The Structure and Interpretation of Computer Programs, and began working my way through its chapters. Perhaps it’s a sign of my own talents and interests that I only made it about a third of the way through. I did, however, spend a year not long after that learning ancient Greek with reasonable success. Planned obsolescence on my part, perhaps.
I suspect Scott Rosenberg would agree with my hunch about the primacy of programming in understanding today’s world. His new book, Dreaming in Code, follows a single software project, Chandler, and tries to reveal what makes software both so hard to do well and so compelling for its practitioners. In the course of chronicling the twists and turns of Chandler’s development, Rosenberg writes about the history of software development and the many, generally failed attempts to turn a craft into a science.
The great virtue of Dreaming in Code is that Chandler is an object lesson for the book’s thesis. When Rosenberg started the project in 2002, Chandler’s progenitor, Mitch Kapor, estimated that a first release would be available in 2003 or, at latest, in early 2004. Here we are in early 2007 and Chandler is only up to release 0.7. The incomplete story of Chandler is also, however, a cloud that hung over my reading of the book. I knew from the start that the debates about, say, the right programming language to use, or whether or not to be server-based were preludes to endless delays, what Rosenberg terms “software time”. I was also acutely conscious, as I read about the attempts to create a revolutionary personal information manager with Chandler that new products like Google Calendar were obviating the need for some of Chandler’s ideas. The great examples of the kind of narrative that Rosenberg set out to write — I think of Tracy Kidder’s The Soul of a New Machine and House or Steven Levy’s Insanely Great — have a Hollywood-like story arc. In the end, the minicomputer is made, the house completed, the Macintosh launched. There’s none of that satisfaction in Dreaming in Code.
There are many other compensations. Rosenberg helps a non-programmer like me gain some understanding of why truly innovative software is so rare and, when it works, so remarkable. Dave Winer used to say, “We make shitty software. With bugs!” Dreaming in Code makes it clear how perfectly Dave’s jolly realism reflects the reality of software development. And I’m a lot closer to understanding this key building block of our world.