Categories
Uncategorized

Zen And The Art of Software Design

Japanese Tea Garden
As you sit on a bench with a hot cup of jasmine tea in the middle of the Japanese Tea Garden in San Francisco Park, you can’t help but be overwhelmed by the tranquil beauty of the garden that surrounds you from every direction. It’s a great way to spend an afternoon. I arrived at the garden expecting a wonderfully uncomplicated demonstration of Zen-like simplicity in design after seeing some very provocative pictures of Japanese Zen Gardens online. In this respect, I left disappointed.

The garden is brilliantly beautiful, but its beauty is achieved by bombardment of the exotic, rather than elegant simplicity. In the attached photo, for example, the frame almost bursts at the boarders with colors and plants. Very pretty, but is all that really necessary? Does each plant in the photo really serve a purpose that would be unfulfilled in its absense? Would the garden be any less beautiful with half as many plants? The tree from the Six Feet Under opening sequence is plenty inspiring on its own, even though it’s the only thing in the frame.

I liken the gardens design to the conception of many software systems, particularly many F/OSS projects. Doing less, well, seems to often go undervalued in an attempt to appeal to a wider audience and satisfy all the I-would-use-it-only-ifs presented by the potential userbase. Take this screenshot from easytag, for example. Does this look easy to you? To me this looks like an ugly, unusable piece of shit. Granted, the software appears powerful in that it allows you to customize your process to a very fine level of detail, but wait.. isn’t this software supposed to be easy to use?

To me this functionality is an example of a speculative generality code smell, combined with a very developer-oriented project culture the equates more features to better software. The vast majority of the important cases trying to be achieved here could probably be accomplished without trying to allow for every single possible permutation of tags that is mathematically possible (at least in the user interface).

Less: It’s the new more.