It’s The Little Things – Or Why Windows Mobile Contact Search Sucks

There is a great Bill Gates email from January 2003 titled Windows Usability Systematic degradation flame that is making the rounds on the web.  I love a good rant and even though this one is dated, Gates says in great detail what a large number of Windows users have summarized over the years as "shit – why won’t my damn computer do <blah>."

I’m a heavy computer user and have some variation of this thought on a daily basis.  One of my special talents is finding bugs and breaking things – just ask any of the companies that I’ve invested in who their most "useful" (where useful is a euphemism for "annoying") alpha tester is.  Think of me as helping improve software quality on planet earth.

Now – software quality is a complicated thing to measure.  Not all bugs are overt ones.  Let me give you an example of a particular pernicious Microsoft one that no one seems to ever prioritize to fix (no – I’m not going to pick on Windows Calculator again, although I could.)

I use a Windows Mobile-based Dash.  I expect I’ll try the iPhone again on July 11th now that it actually syncs with Exchange, but until then I’m tethered to my Dash.  I love the form factor and have trained my muscle memory to deal with having to press multiple keys to do things that I should be able to do with one keystroke – mostly due to design flaws in Windows Mobile.  I’ve used some variant of Windows Mobile for the past eighteen months (I think starting with Windows Mobile 5; I’m currently using Windows Mobile 6.1.)  If I were Mr. Windows Mobile UI Designer, I’d change a bunch of things, but it works well for what I need it for, which is primarily email, calendar, tasks, contacts, phone calls, IM, and twitter.  And sync.  My data needs to transparently sync with my Exchange server without me having to do anything.  Oh – and my BlueAnt bluetooth headset.  And I’m sure there are a few other things.

Here’s the problem – the sort algorithm on contact lookup is terrible.  I have a large contact list (5048 as of today).  Searching for "Stan Feld" should be immediate since that’s how it’s listed in the address book.  Progressively typing S then T then A then N should bring up "Stan Feld" immediately.  Typing "Stan Feld" into the To: field on the email program should be immediate.

Nope.  The delay is anywhere from 10 to 30 seconds.  At some point I decided to try to figure out the underlying algorithm.  My guess is that it’s doing a full table scan of first_name + last_name for each letter typed.  There doesn’t appear to be an index – either fixed or dynamic – and as a result the time for most searches is approximately linear based on the number of letters typed.

Now – if this problem was in Windows Mobile 5 but fixed in an update, I’d let it slide.  I’ve done at least three (I think four) major updates of the software since I’ve had my Dash.  There has been virtually no improvement in this feature.

Whenever someone asks me about my Dash / Windows Mobile, I tell them that I generally like it except for this one thing.  I then describe the thing. Occasionally I’ll show the thing.  And then I feel stupid that I’m still using this phone since I spend so much time looking up contacts or completing names in email fields.

Having written my share of sort algorithms, I expect this is less than 50 lines of code regardless of which language it is written in.  It is sophomore in college computer science type stuff, not PhD stuff.  Optimizing this to improve performance by 10x – 100x is maybe a day or two of a single programmer’s time.

This is not a Microsoft-specific problem.  I could have picked on anyone.  I’ve got a long list of Apple issues like this, plenty of Google issues including some remarkably silly ones, and – well – don’t get me started on the Yahoo ones.  All of the companies I invest in have problems like this.  It’s just an endemic part of software.  And one that users shouldn’t have to put up with.

It’s also not limited to software.  When filling up my car recently, the gas pump clicked off at $75.  I’d noticed this happening periodically, but now it was happening every time.  Gas is now over $4 / gallon.  Each of my cars has a 20+ gallon gas tank.  $75 doesn’t fill up the tank in any of them (and in at least one it doesn’t come close.)  There was a point in time when I’m sure someone decided that a way to mitigate credit card fraud at the gas pump was to limit the amount of each transaction to $75.  Now all that does is inconvenience a large number of customers with a mysterious cut off point.

If you develop products (especially software) for a living, never forget that people remember the little things.