I just got bitten by another Microsoft interface bug.
Since my laptop is not my primary development machine, I have it configured slightly differently than my other systems, to give me a better feel for the way that our customers would normally experience Windows. I left it setup mostly as it came from the manufacturer, albeit with much of the automatically launching software removed.
One of the things that is different with this system is that Windows Update is configured for Automatic Updates. When I turn on the laptop in range of my wireless router, it connects and retrieves any updates that Microsoft deems important. This is the standard behavior for many, if not most, Windows users.
Last night, I turned on my laptop and started a large file transfer. Of course, Windows Update decided that it needed to update my system at the same time (slowing the transfer). That was to be expected, and it was not really a problem. However, the system update required a restart of Windows to be complete, and that exposed another design flaw.
During the file transfer, a dialog box popped up:
Automatic Updates
Updating your computer is almost complete. Your computer needs to be restarted
for the updates to take effect. Windows will restart your computer automatically in
m:ss minutes.
Do you want to restart your computer now?
The m:ss was a minutes and seconds countdown, starting at 5 minutes. After I noticed the dialog box (having been working on my main development system), I ignored the ‘Restart Now’ button, since I was still transferring a file. I pressed the ‘Restart Later’ button.
Lo and behold! After only 10 minutes, the same dialog reappeared. The expectation of my previous selection was that it would go away and not bother me again, and I would restart it on my schedule. Since I was still in the middle of the file transfer (I told you it was large), I was forced to repeat my previous action, and to do it within a specific time period.
One of the fundamental rules of interface design is to maintain consistency of behavior and not act contrary to user expectation. A ‘Restart Later’ button on almost any other software update, including those from manually using Windows Update, dismisses the dialog permanently and puts the onus on me to restart the system. This action violates that principle.
It is not too difficult to guess what happened next. The transfer continued for ten more minutes before having the dialog popping up again, demanding unwarranted attention. At this point, I was very annoyed. In my mind, all I can hear is the sound of an obnoxious child from the back seat, repeatedly asking “Are we there yet? Are we there yet? Are we there yet? Are we there yet? Are we there yet?” You get the idea.
Another very important rule is to never perform a potentially destructive action without explicit instruction or confirmation from the user. This rule was also seriously violated…
If somebody in the above situation is using the computer for a time-consuming task, such as a large file transfer, and he is called away by, say, nature, Windows Update causes trouble. After dismissing the dialog box several times, one failure to be in the room for whatever reason results in the system rebooting, thus invalidating the process in progress. One may be forced to completely restart the task after having it aborted by an unwanted reboot, which hopefully does not corrupt anything.
With a company as large as Microsoft, and a product as comprehensive as Windows, it is not surprising that there are some areas of brilliance and some areas that are just lousy. It is, however, quite disappointing when one finds the latter, and worse when it has a negative impact on productivity. The best an independent game developer can do is to learn from both.
Well, that and complain.