Tuesday, August 10, 2004

The Unstoppable Force meets the Unsolvable Problem

Back in the days I remember running installs of Outlook from within the MS firewall with the shared enthusiasm of all MS employees at the time that what we were witnessing yet another market niche conquest, this time in the e-mail and PIM space. Or at least we had enthusiasm for the stock price which would almost certainly rise after the fact. However, those early versions had a few minor glitches, as you would expect, the most notable to me being the annoying tendancy for the entire Outlook UI to freeze during certain operations.
  • Click on an e-mail header with preview window open, freeze.
  • Click to view the file menu, freeze.
  • From options, test connection to server, freeze.
(don't worry, the UI will be back soon, really... promise... ok, you may want to go get a muffin or something while I figure out why the communication link as gone awry)

Why do I bring this up now? Because we can still witness the SAME behavior in Outlook 2003.

I love working on UI, when I get the chance. It seems that so much UI is relegated to the bastions of common control designers and the oft under-represented "front end" team members in leiu of the meaty "middle-ware" IP these days that maybe some coherency has been lost. Maybe I'm quibling. Maybe I'm a nattering nabob of negativity. Maybe not. Take two steps back, maybe there is a lot of complexity in loosely coupled systems. Maybe we should be thankful the system works at all. I refuse to accept this. I mean, how many DECADES have we been writing e-mail clients?

I suppose it would be anathema to play the CHI, human factors, and usability cards. Ship dates, rounded edges, anti-aliasing, and shading will trump. This is the game for the time being or until just the right person harbours just the right amount of disgust over such issues and brings forward the charge, "can we use software to improve the interface to this machine?". I guess the bigger question is, "will this sell one more copy of our already commoditized application?".

So before this revolution of sweeping common sense can take place, I will just make some simple pleas to those lucky "front-end" guys in the hope that, between schedule chasing, between arbitrary choices in coding technique, in a small moment of clarity, we can take a few points to heart:
  1. Let it go. If you can measure the time inside a function with a wristwatch please move it out of the main thread.
  2. Watch your steps. A pleasant surprise in the Indigo design is the notion of explicit boundaries. What this suggests to me is that, in practice, transparency of remoted function calls is a great benefit but has the drawback of unexpected side-effects such as unanticipated long blocking. Please be weary of the calls you make.
  3. Talk to me. It never ceases to amaze me how perceived performance of an application can increase by magnitudes through the display of simple "Working..." progress messages. Perhaps this suggests that the user feels better when they believe they are in control. Please, in the worst case, when you absolutely have to block, at least display some progress message to the effect.

Back to the meaty middle-ware...