by Chris Douce
by Scott Rosenberg
Crown Publishing, 2007
Dreaming in Code is a fun book. It is a book about a group of programmers and the discipline of programming. Dreaming in Code takes the reader on two journeys. The first journey follows a programming project run by Mitch Kapor who founded Lotus Inc., the company that developed the Lotus 123 spreadsheet and the Lotus Agenda information management software.
The project that Kapor founded had the intention of creating a product that had the 'soul' of his earlier Agenda product. Back in the nineties I have vague recollections of Agenda. As well as 123 being installed on a number of IBM office computers that I used to meddle with, I recall having started Agenda once or twice. I remember it being talked about as if it was a mysterious piece of magic - that is was powerful in ways that the owner of the PC could not articulate. I also remember that it took an age to load!
At the time, and in this office, this version of Lotus Agenda was unused. Agenda ran on DOS machines and sat 'in software time' (a common, and flexible theme throughout the book) just before the world of Windows (I ask Mac and Linux users for forgiveness) and the consumer availability of the Internet. Agenda wasn't the commercial success that Lotus 123 became, and Kapor moved on.
Dreaming in Code charts the development of an 'Agenda successor' over a period of three years. The story is a compelling one. The characters are clearly presented and the problems they grapple with are clearly discussed. Rosenberg's writing left me eagerly wondering 'what happens next!?'
To some degree, Dreaming in Code could be described as a popular ethnography of a particular software development team. I particularly urge researchers who are studying groups of programmers to give this book a go.
Towards the middle of the book I started to reflect on my own experience as a programmer (or software 'engineer'). Although I didn't verbalise what I was thinking, Rosenberg asked the questions that I was thinking, namely, 'why all this chaos?' and 'where on earth is the process?'
These questions start what I consider to be the second journey - a ride into the thorny and important topics of methodology. Rosenberg discusses and explores different approaches to software design, presenting an effective potted history of where we have been and what is being talked about today.
Some of the topics discussed resemble some of those explored by PPIG members: how programmers work together, the difficulties within computer science and programming education, the complexity of recursion (apparently there's a whole book on the topic!), the naming of identifiers (and the misapplication of Hungarian notation) and, of course, the classic case of the goto statement.
A central theme is, of course, the inherent complexity of software systems and the approaches (and tools) that programmers adopt to manage complexity. Rosenberg also presents the paradox that high-levels of individual productivity can be present within a project that appears to be moving at a glacial pace.
I place Dreaming in Code in the same category as Fire in the Valley and A Brief History of the Future. Perhaps I enjoyed it because of could relate to so many of the ideas presented within the book - I have been a programmer and I have my own 'hobby horses', just as I have witnessed other developers ride theirs as Rosenberg cleverly presents.
Rosenberg has clearly taken lots of time to learn about the practice and craft of programming. I disagree with his comment that programmers 'do not read about their own discipline'. I certainly hope some will read this book (as well as the literature about software disasters). From my perspective? It's packed with interesting quotes. I'm even tempted to read it again. Recommended.
Many thanks to the Open University library for ordering this copy.
The book also has a website.
Do you know of a journal that may be of interest to fellow PPIG members? If so, please tell us about it. Interested in writing a review, or perhaps you are an editor and would like to introduce your journal to us? Please feel free to send us a message.