I have a strong preference for simplicity in software, and I’m frequently frustrated by people who seem to value complexity instead, and who don’t seem to understand why the simpler solution is usually preferable.
But I shouldn’t be so hard on them, I guess, because it’s all a matter of degree. There are designs that are too simple for me to really grasp. And I don’t mean designs that are too simple to work; I mean designs that seem too simple to me, because I don’t understand how the simple solution meets all the needs. Want examples? Take a look at nearly everything Ward Cunningham does.
FIT is the latest thing Ward has blown my mind with, but it’s certainly not the first:
- I’m sorry, but how could the WikiWikiWeb ever work? This simple little web site, with a trivial formatting language, where you create new pages just by linking to them, and you link just by SmashingWordsTogether, and anyone can edit the entire text of any page at any time. But it does work, and it created a vibrant community of mostly like-minded software developers. It makes a terrific discussion tool for teams of almost any size.
- Last year at OOPSLA, Ward helped run the workshop on Software Archaeology. His position paper floored me. He presented perhaps the most useful tool discussed in the workshop, and it’s one that he wrote himself in less than a hundred lines of Perl.
- Also last year, after Bob Martin and Robert Koss used the development of a bowling score program to illustrate the process of pair programming, several people in the XP community used the same example to illustrate other parts of the process, and different programming techniques. Ward’s solution was unique in its approach, and the only thing that makes it at all difficult to comprehend is that it’s written in a rather unnatural style of Perl. (Ward used Perl’s regular expression operations to simulate an APL-ish style of problem solving.) Once you get past that, it’s breathtakingly simple. I’m embarrassed to say that I would never have tried any of those approaches to those problems, because they would’ve struck me as naive. But I would’ve been wrong.
The funny thing is that, as folks have mentioned FIT to me over the past few weeks, all of them have said something like this: “It’s a little mind-bending, but knowing Ward, I suspect the problem is with my mind, not FIT.” That’s exactly how I feel. It’s good to know I’m not alone in that.