Sat, 17 Sep 2005

"I've tried to explain this a few times to you but you're simply ignoring the facts"

There are three things I've learnt, the hard way, about software. The first, and the root of the other two, is that you must fear complexity above all else.

The second is summed up in Worse is better: that simplicity is virtue in itself, and a greater virtue than anything else. This must be carefully applied to the whole system, however: if you create an API which is simple, and has a simple implementation, but forces complexity on the user, you're not winning.

The third learned from Linus Torvalds, who once said his job was to say "no". People always want to add features, but a maintainer's job is to weigh the environmental damage. This, too, stems from a fear of complexity.

The title quote is from an irritated user who believed I was ignoring all evidence that a feature was necessary. This happens reasonably often among programmers who weigh features as a virtue: any potential use justifies a feature. As it turns out, he actually produced a really good reason for the feature in that same EMail, so I will be implementing it.

Wasteful as this process might seem (yes, it would have been easier to implement the feature the first time around), it represents a hard-won understanding that I am simply not smart enough to get things right the first time. So, fearing complexity, I implement as little as possible: simplicity is easier to fix.

[/tech] permanent link