I just spent the last four hours lying on the couch reading Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software. I’ve been dragging this book around for a couple of weeks and finally tackled it.
It was simultaneously depressing, anxiety producing, and inspiring. I’ve been involved in thousands of software projects over the past 20 years – my first company wrote hundreds of custom applications – ranging from short projects that took weeks to long projects that stretched out over years. I’ve been involved in numerous different approaches to building software, have worked with amazing teams that struggled to produce anything and average teams that shipped on time and on budget (and all permutations therein.) While my experiences have been all over the map and my level of deep engagement in the design and development process has lessened dramatically over the years, I never forget the joy of shipping a release.
One of my favorite pieces of software of all time was Lotus Agenda. I used it for many years after I started using Windows – I think Agenda was the final DOS-based application that I stopped using. So, when Mitch Kapor (the vision behind Lotus Agenda) announced the creation of the Open Source Application Foundation and the vision of their product Chandler some time in 2002 I was intrigued.
Dreaming in Code chronicles the agonizingly slow creation of Chandler. The book ends in late 2005, well before Chandler is released. It’s 2007 and Chandler is still on version 0.7 with the preview release targeted for April 2007. The vision for Chandler 1.0 is “an open source Personal Information Management (PIM) client application with innovative design and ambitious plans for sharing, extensibility and cross-platform support.”
I stopped paying attention to Chandler several years ago – I’d lost interest around version 0.4 since it basically didn’t do anything usable. I just downloaded and installed version 0.7 and the pain from the book washed over me again. Chandler has a long way to go before it’s useful, and then it’s not clear to me that it’s relevant any more.
Notwithstanding the incredible challenges this project has had, Kapor’s brilliance, patience, vision, and leadership shines through and inspires. My favorite paragraph was when the author – Scott Rosenberg – asks the question “With all the dispiriting delays, had he ever considered shutting Chandler down?” Kapor replies:
“No. There were times when I felt horrible depressed. But I’ve learned in my life, not just there, that if I have very powerful feelings of hopelessness, I should sit with them. I should refrain from taking action – because those feelings tend to be transient; they tend to be triggered by circumstances. Instead, just personally, take some time out, whether it’s an hour or a few hours or a day or two. And that’s as long as it’s ever been with this process to regain perspective. And every time I’ve come back, saying I believe we can find a way to accomplish the long-term vision by adapting how we about about doing it.”
One of my favorite quotes of all time is from Dune – “fear is the mindkiller.” Kapor shows us how he copes with it.
In addition to telling a poignant story of a software project, Rosenberg does an outstanding job of providing a survey course in the evolution of software development. If you are involved in a company that builds software for a living and want additional perspective on it, Dreaming in Code is worth your time.