This insightful read provides an engaging and sobering look at the trials and tribulations of software development from the programmer’s perspective, by chronicling Mitch Kapor‘s unfulfilled attempt at designing & coding a novel piece of PIM software (code-named Chandler), during the last few years up in San Francisco. At times a bit tedious in the arcane coding issues, but presents in mostly layman’s terms concepts like refactoring, source control, object modularity, inheritance, etc. as well as project management debacles, heavy processes, the human dimension of it all. And it showcases so well the inherent hell of building good software…and that many top coders are more like artists than we think :-)
There’s a few chapters about UI design, but the story revealed a flawed sense of how design should intersect and coordinate with software engineering. Or even prototype-based innovation! I find it ironic that Kapor is the author of “the software manifesto” in 1990 which extols user experience as a paramount goal, yet this story shows he has no real understanding of how to propagate it throughout a software dev process. The coders are itching to code, alot of folks are simply volunteers, there’s a lone graphic designer handling it all, with constant language confusion between backend and GUI folks, etc. Plus the requirements are being written while the product is being coded… It’s quite literally the same damn story everywhere in the valley!
What I really enjoyed: the author injected notable software history as well, from Alan Kay to NATO (did you know that the first software engineering conference was held by NATO, b/c of the impending crisis of software complexity overwhelming human cognition and planning efforts? (stemmed from a failed IBM project, the RS/360) So clearly it had no effect: Windows is still many million lines of code! :-)
But the ultimate moral of the story as Kapor says it, “software is hard.” I think it’s a great lesson for designers to understand as well, and the Chandler project reveals the difficulty and pain. It might be just “pixels and code” you can tweak at a keystroke (or mouse click) but that doesn’t make it easy!