The software update experience sucks!

Software updates are intended to keep your devices up-to-date with security updates and will occasionally slip in some added new functionality from the developer. However, why is the update experience designed so poorly?

Friends and coworkers who knows about computer stuff will periodically impress upon their less technology-savvy fellow human beings how important software updates are. Yet, somehow these updates don’t feel important at all.

I’m not going to debate against the merits nor necessity of software updates for security and business purposes. I agree that updating software is important to uphold security, but I don’t agree with how it asserts itself at the expense of people at whichever moment that suits the update.

Everyone gets these “New software updates are available!” dialogs and notifications all the time regardless of what general-purpose consumer operating system they’re running. Yet, people are trained to avoid them. People are being conditioned to avoid time-consuming and unpleasant software updates every time they’re prompted to install one.

You never know how long an update may take. A few updates may say “This may take some time” yet those updates are sometimes finished in minutes while others take upwards to an hour. The screen may flicker on and off, your music is sometimes turned off and you hear alarming sounds from the speakers, windows move around on the screen, some programs quit in the middle of your work while still in active use, … .

Starting any software update can make a system behave erratically and it feels like it lowers the system reliability and decreases your experience more than any potential future security threat that may arise some point in the future.

More times than not the people will find that nothing has changed after the update process. Everything looks more or less it did before the update – except that the system clock has moved some 3–50 minutes since the update began. To people, the software update process has nothing but negative associations. No one ever thought to themselves “Man, I want to turn on my PC and update Windows, Flash, and Java right now!”

So, how do we fix it?

Operating systems and software vendors alike must invest more effort into making the auto-update process less intrusive and disruptive for people. It’s important to the software vendor to update, but the people who are using their software find whatever they’re trying to achieve on their PCs way more important. This fundamental misalignment of the priorities of the software vendors and their consumers can’t be fixed with the industry-standard response of educating people on the importance of updates.

There isn’t much individual developers can do for apps deployed on platforms where developers don’t control their own update mechanisms, like in the MacOS App Store and Windows Store, and on iOS, Android, and Windows Phone. However, the platforms have great potential for improving the update experience for their customers.

Updates arriving automatically from the Android, iOS, and Windows Store will simply quit any running app to perform an update. It doesn’t matter whether a person is actively using that program or not, they’ll be interrupted by a quit and restart without any warning. Updates being pushed out through the MacOS App Store will interrupt and ask the user to quit any running app that needs updating to complete the update.

When I’m listening to a podcast on my phone; the last thing I want is to have the podcast abruptly stop, only to pull up my phone and discover a notification proclaiming “Pocket Casts was updated.”

These platforms are clearly over-eager to update everyone as fast as possible. This is an admirable goal and I commend them for it. However, somewhere along the way, they stopped caring about the user experience of these updates.

Auto-updating should wait not only until the device has been idle for some time, but also make sure that the app isn’t in use. Some apps will have always-on background services that can be stopped and restarted without degrading the user experience. Other categories of apps, like activity tracking, media players, and maps can’t be restarted without violating the developer’s expectation that the app will keep running nor the user’s expectation that the app will keep working.

For developers working on more traditional and powerful operating systems where they themselves control the update experience, it’s entirely up to each developer to ensure a good experience. I think it’s safe to say that there are quite a few programs that could do a lot better to work on this given the current state of dialogs and notifications attacking people when they boot up Windows after not having used their PCs for two weeks over the summer vacations.

I’ve no idea why Adobe believes I need to be told about updates to their Flash Player or Acrobat Reader. These types of programs should be entirely transparent and stay out of my way. The update process can wait until I’m not using the programs anymore and then apply the updates silently in the background. I don’t need to be told, and I don’t need to be notified about it.

I think most programs will fit into this category and I’m certain there are millions of Windows customers out there who agree with me on this one. Auto-update systems must be designed to be less intrusive and stay out of the way. The cost should be on the software developer side and not on the end-user.

The Google Chrome browser is a good example of a product with a good auto-update experience. Chrome is entirely automatic and never bothers the user unless there’s a problem that it can’t fix on its own and need the user to take corrective actions.

Chrome will download and install updates silently in the background in parallel to the currently running instance of Chrome. This means the user can keep on using their browser for as long as they want without being interrupted. When the browser is quit and later restarted, it will start up using the new version. The Opera browser mimics this update experience.

For less complex programs than a browser — which doesn’t have to preserve and restore multiple and complex states — the Chrome update model could even be taken a step further. Instead of waiting for the user to quit the program, the update process could wait for a time when the user has been idle for some time and the program isn’t busy performing any work.

At this time, the program could take a screenshot of its visible windows and then perform a vanishing act behind this screenshot curtain where the program quits and restarts with the newer version. The user shouldn’t notice anything, but could possibly find the program unresponsive for a moment if they returned from an inactive state while the program was performing this little magic trick.

There are ways to improve the software update experience, but developers don’t seem to be motivated. As its far easier to blame the user for not installing their updates using their existing and badly designed systems than taking any responsibility for it themselves.