I just finished reading Dreaming in Code by Scott Rosenberg. The book describes Mitch Kapor’s valiant effort at creating Chandler, a software product that was supposed to be the mother of all PIMs. Scott was there from the start and describes the various mistakes made, such as not having a finalized user interface more than two years into development, switching from peer-to-peer to a CalDAV-based approach late in the game, and so forth.
Mitch is the guy who invented Lotus 1-2-3; he’s been around the block once or twice. The book is a worthwhile read for anyone involved in a team software development effort, or about to embark on one.
Dreaming in Code was a Christmas gift from a colleague, and I suspect that her choice of books is not coincidental. See, we’re starting work on this major new software project. I am not at liberty to disclose much about it, so I’ll call it Project Luceen for now, after my daughter’s middle name. We haven’t starting coding yet — the developers are wrapping up work on another project and I am finalizing the user interface and writing the specs. But while reading the book, the following passage on page 260 caught my attention:
“Success is a by-product of iron-willed restraint — a choice firmly made and vociferously reasserted at every challenge to limit a project’s scope. Where you find software success stories, you invariably find people who are good at saying no. [,,,] the successful programmer thrives because of, not in spite of, constraints.”
Most people think of featuritis as the constant adding of new features, from the meaningful to the superfluous. Kind of like the artist who does not know when to stop working on a painting. But it’s more than that: featuritis is not having a solidly defined set of features before development starts. This is partly what dogged SuperLab 4.0’s development. In the case of Chandler, the feature set was a moving target.
After reading the book, I went back to the specs document and swapped items 1 and 2! The screen snapshot below is of the top of the very first page — yes, even before the table of contents.