The road to wisdom? --- Well, it's plain
and simple to express:
and err again
By Piet Hein (Danish Poet/ Scientist/ Designer)
I mistakenly bought this gem while actually looking for Beautiful Code. The tag line of the book, Dreaming in Code, is"Two Dozen Programmers, Three Years, 4,732 Bugs, and one Quest for Transcendent Software." The software project this book talks about as a case study is Chandler, which started around 2003 and expected to provide a solid version 1.0 to the world for personal information management by the end of the year. The project is still at version 0.7.7 at the time of this writing.
You might be thinking what exactly is so hard about writing a PIM tool. Well, if you want to do it right, and different, it would definitely take long. Just for the sake of example, consider how you enter dates in modern day information systems: using a drop down calendar, right? How about letting the user type in the date in any format he wants: "June 25, 2008" or "25-06-08" or even "today." These and several other novel ideas were behind the tool to make it the next "killer application."
The project was initiated by Mitch Kapor of Lotus fame. In later years, it turned out to be extremely ambitious, and Scott Rosenberg (author of Dreaming in Code) tries to find out the reasons behind the slow progress/ wrong estimates of the project in paritcular, and why software is so hard in general. To give you an idea of what the current version of Chandler delivers, I quote from the project wiki:
The book has around 350 pages divided into 12 chapters. Below is a brief outline of each chapter:
- "Software Time" sets the stage in an interesting manner; comparing author's youth game programming to modern day's web 2.0 site management. He also talks of bridge construction and mechanical engineering, and comes back to this comparison quite often in the book.
- The chapter titled "Doomed" starts the discussion on the Chandler project from a meeting being held in July 2003; the meeting discusses a bug, flickering when Chandler's window is resized. The bug turns out to be in wxWidgets which is used by the project team to build a cross platform UI for Chandler. It also reveals to the user that the project has missed several of its release deadlines and the team is in trouble.
- "The Soul of Agenda" goes into some history of "personal information management tools." It also talks of the last project Kapor managed at Lotus, Agenda. The software came with the idea of "put it in first; categorize it later," which Kapor wanted to be the core of Chandler as well.
- "Prototypes and Pythons" talks of Rapid Application Development and some history of programming languages, specially the creation of Python and the new ground it intended to break. Chandler team finally settled for Python as its programming language.
- "Lego Land" discusses the repository design of Chandler and Zope Object Database aka ZODB. The chapter goes into the core issue of "building reusable software components," like Lego blocks that can be connected to build something new. It's a dream promoised by every new technology/ programming language but which, in reality, has never come true. Other topics of interest could be Brad Cox' Objective-C.
- The topics covered in "Managing Dogs and Geeks" are the Mythical-Man-Month, Dilbert's Pointy Hair Boss, the word Geek and how to manage them.
- "Getting Design Done" talks of User Interface designing. Additionally, it discusses the merits of going with a web based approach vs. a cross platform desktop application. Chandler finally settled with CPIA, Chandler Presentation and Interaction Architecture.
- "Detail View" tells the readers how a feature that might seem tiny to end-users, has hundreds of issues associated with it which need to be handled by the software developers. The book gives the example of "a recurring task in a calendar." Do we generate all instances of this recurring task? What if the time for one particular instance of the recurrence needs to be changed? What would happen if we want to associate some notes with this task?
- "Stickies on a Whiteboard" informs us how Chandler's featuers were divided into releases to finally get something out. It also taks about the push to use "WebDAV" for information sharing between Chandler clients.
- In the chapter labelled "Methods," Scott Rosenberg digresses for a moment to talk of software methodologies, ranging from waterfall through CMM to eXtreme Programming. I consider to be the best part of the whole book. If you can get an excerpt of this chapter, I highly recommend reading it.
- Besides Methdos, "Engineers and Artists" is an extremely well-written chapter. This one is also applicable to software development in general. Amongst other interesting ideas, Scott talks of how essays/ poems written by students are read out in an arts class for criticism/ review/ improvement and no such practice is carried out in software engineering curriculum. Another interesting concept is that of Leakage of Abstraction.
- The term dogfood as discussed in "The Road to Dogfood" is using your software for your own work. Chandler finally delivered a working Calendar application and Mitch Kapor started using it for himself.
- A Long Bet is a closing chapter where we are told that Kapor wagered $20,000 that by 2029 no computer or "machine intelligence" would have passed the Turing Test but Kurzweil, a leading inventor, disagrees.
I give this book an 8 out of 10; there is some repetition and the focus is too much towards Chandler, which make me deduct two points. It's another must have!