Okay. Major disclaimer: I develop software. I've designed many a piece of UI that makes me cringe to think about it (including the most seen and irritating balloon on the face of the planet -- "Wireless Network Connection is now connected". I'll write a blog post on that one sometime soon). So, I'm biased.

That said, I read David S. Platt's blog with a deep sigh [note: looks like David's blog is down at the moment].

Of course, criticizing software UI has a long and storied history. Heck, I do it daily (it's like calisthenics for the mind). However, I have to sigh deeply when I read this kind of surface criticism of things that are way more complex than they appear (I have an old post on this topic, so I won't repeat it).

It's not that I disagree with his points, and I'll put aside the fact that he has a book and a series of classes to sell (I'm sure they're great, and he seems to do a bang up job of teaching people how to code). It's just that these are easy shots and aren't really moving the needle forward on software design. It's a little like beating up on a team that's losing by saying "well, it's because they didn't score any goals. They need to do more of that. And they allowed that other team to score on them. They need to stop doing that." No kidding.

Lesson time, kids:It's really easy to criticize, harder to do a good job in real life.

Here's an example: David's blog has two little links on the right hand side his blog with the words "RSS" and "Atom" (screenshot included below for the lazy).

Aside from the obvious point that using these two highly-technical terms with zero explanation is a bad idea, I'd point out that from an end-user's perspective, these two technologies are completely identical.

So, when a user wants to subscribe to a feed on David's blog (which is what those links are for), David's forcing them to make a choice when it really doesn't matter which one they choose.

Any good UI designer knows that when presented with a choice, many users will just bail out. So why make them choose? Just pick one format, label the link appropriately (like "Subscribe to a feed of this blog"), and ignore the underlying technology. Even better, use the somewhat-standard feed icon to indicate to users that the link is to a feed (I have a mini essay that rambles a bit, but does get around to explaining why icons are good things).

Bottom line, software developers make a lot of assumptions about what people will and will not understand based on their own understanding of the world.

Yes, yes, yes...

Alright, so David makes lots of good points, and it's a bit sad that Vista has only has a slight improvement in that department (death to the "Yes", "No" "Cancel" dialog -- now that's a movement I'd get behind).

But David, if you're reading this, skip the cheap shots and acknowledge the complexity in what you suggest. For example, you might note that an always-saving app is a non-trivial thing to write, and is probably a waste of time for something like notepad. Appealing to Quicken doesn't help, either. A Personal Finance Manager looking like a checkbook is a no-brainer (that's 20-20 hindsight, of course - early PFMs didn't do this). But suggesting the real world mental model for a document editor is pencil and paper? No, seriously... that's not going to work for a dozen reasons, and I think you know it. Once you start down the path of trying to match software to real-world analogies you end up with gems like Microsoft Bob, or internet phone applications with clickable keypads. Sometimes it's not the model, but how you choose to present it.

For the rest of you...

If you want something that really makes you think about UI design, read asktog.com (in particular, First Principles of Interaction Design) or pick a copy of The Design of Everyday Things. Or wait for David to start tackling things that are actually non-obvious.