September 17, 2009
Follow me on Twitter

Dumb Software Isn’t Dumb

Seth Goden predicts the end of dumb desktop software. For example, take his iCal calendar:

If I try to schedule an appointment for 2 pm, it requires me to not only hit the 2, but also select pm. I have never once had a meeting at 2 am. Shouldn't it know that?

He proceeds from this to say that "The people who make desktop software are making themselves obsolete. When you start developing on the web, your default is to be smart, to interact and to be open (with other software and with your users)."

This is wrong.

First, the feature he wants is actually not so great — not when you schedule the 2am wakeup call for your 6am flight to Mumbai (where you have never been in your life) and find that your calendar changed the wakeup call to 2pm because it thought you wouldn't want to be disturbed. Besides, you never go to Mumbai; you must be catching the 6pm to Memphis.

Every day offers all sorts of unique circumstances. You know which matter because you know a lot. Your children don’t understand you, your rabbi doesn’t understand you, your dog doesn’t understand you. You want your calendar to understand you?

Second, machine learning is hard. The “smart” features Goden wants are based on inductive learning, but induction is full of tricks. Sure, your address book is full of phone numbers of people you haven’t called in ten years. Some of those people are dead. Some are people you’ll never need to call. But there’s also the phone number of the fellow who owes you one big favor, and someday (though that day may never come) you may need to call him and ask him for that favor. But if your address book considerately deleted it for you, you’re out of luck. (That Obama kid you knew in school? Well, you don’t need his cell phone number now that you’re grown up, do you!)

Remember the problem with Mom cleaning your room? Even your mother didn’t always know what was terrifically valuable to you and what was junk. Will your calendar will be better?

Third, Web development doesn’t make it easier. In fact, server-side developers are likely to be short on CPU, so lots of clever inductive strategies that are viable on the desktop won’t work in Web apps. Well, they’ll work in beta, and for the press briefing when the system has maybe ten users. Once things get built out? Fail whale.

Think I'm wrong? Just ask Sandy.

Of course, one advantage Web developers have had is that they’re new. It’s long been a maxim in software development that sometimes it pays to hire kids, because kids don’t always know what’s impossible, and sometimes find it easier to solve unsolvable problems than to learn why it can’t be done. But that has nothing to do with the Web.

Fourth, these features are expensive. That can work for core systems like the built-in calendar, and it’s fine for appliances like the iPhone, since development costs are amortized over zillions of users. But for software that everyone doesn’t use (or that everyone doesn’t use yet) the cost of getting the software to anticipate what you want can exceed the cost of asking you to show it what you want — often by orders of magnitude. This is the 37 Signals lesson: you don’t always need to be smart if you’re simple and fast and people understand what you do.

Note to marketers: software is not always the same as soap and cereal. Sometimes you can sell sizzle in software, but it’s got to work well at a good price. That’s engineering. Imaginary mystical Web goodness isn’t engineering, it’s wishing for magic.