Thursday, July 2, 2009

Death to progress bars!

The innocent progress bar, a mainstay of computer interface design, is actually pretty terrible if you think about it. The core idea may be sound, but through various kinds of misuse, it's become something of a running joke. Over the years, people have committed all of the Seven Deadly Progress Bar sins, and I think we would all be happier if we placed the venerable progress bar to rest.

Opaque progress bars - I mean that in the sense of a progress bar which displays no other information about what's actually going on. A progress bar, by its very definition, represents the progress of some operation, which can be measured in some way. There's no reason save laziness not to include this information in the interface, and it makes life difficult for users. With an opaque progress bar, if the user wants to know how long an operation is going to take, for example, their only recourse is a ruler, a steady hand, and a stopwatch. This is especially problematic with really slow progress bars, since the user has no way to know if the operation has stalled, short of watching pixels as the progress bar moves occasionally.

Mixed progress bars - A progress bar should only really represent one operation. If you try to represent a series of steps with a single progress bar (like many installers do), then you'll end up with a really jerky and unpredictable progress bar, unless you're really careful (like many installers aren't). The poor, bewildered user has no idea why the thing is progressing in fits and starts; as far as they know, it's just your program being erratic. This can be somewhat mitigated by putting a status message so that they know what the program is doing at different times, but even then, it's still not great.

Lying progress bars - On occasion, I've seen progress bars that move even when nothing is actually happening, to try to convince the user that the program hasn't crashed or something like that. I'm almost certain that versions of IE do this, but I haven't used IE in a while. If you're trying to show the status of an operation that isn't actually progressing, you don't need a progress bar! You need help.

Uncertain progress bars - Basically all web browsers are guilty of this one. You'd like to show the progress of a web page loading, but unfortunately, a web page can pull in an arbitrary number of other files from anywhere on the page, so you don't actually know up front how long it'll take to load. If the page is partially loaded, and suddenly a huge image is requested, do you move the progress bar backwards, or just start moving it really slowly so that it all looks like it adds up? This is further complicated by the fact that some files may be on other servers, which you then have to connect to, which could take an unknown amount of time. Do you stall the progress bar while this happens, or do you just try to fake it? Neither; you find a better metaphor, one that actually fits the information you're trying to display.

Flashing progress bars - Slow progress bars are irritating, but some programs have the opposite problem. You see this most often on sloppy installers; the installer fills the progress bar once for each file copied, but since it's copying a lot of files really quickly, the progress bar just sort of flashes on and off. That is basically useless! Instead of that, why not add up the size of all the files, adjust for smaller files being slower, and show a unified progress bar? This is not difficult.

Short-lived progress bars - If the action that I'm supposed to be watching the progress of is going to take less than one or two seconds, is there any point to putting a progress bar on the screen in the first place? Just put a status message somewhere that says what's happening. Little animations of bars filling up don't really help anyone, since by the time the user processes that something is there, it's gone already. The less distractions, the better.

Progress bars that aren't slow-motion clips of Megan Fox running away from explosions - Having seen Transformers 2 recently, I'm convinced that this is actually the best possible way to fill some time. :3

4 comments:

Kiriska said...

Instead of doing away with them completely, why not, I dunno, implement one that doesn't suck?

...Just sayin'.

(My favorites are the ones that look like they're doing nothing for five minutes and then magically zip to the end and it's done!)

Kiriska said...

Hey! Your blog is blue! I approve of this. :)

P. Static said...

Yeah! Figured it was time for a new look XD

Æther said...

No status bars? I suppose I wouldn't be opposed as long as there's a good replacement. I'd prefer one that doesn't lie about the amount of time remaining in a process.

This makes me wonder, though. At the rate that interfaces have changed so far as we've seen, what will they look like in 20 years? I suspect that changes such as the ones your propose to progress bars will only lead to new unforeseen issues.