Hacker News new | ask | show | jobs
by qayxc 2038 days ago
The problem with progress bars is that they're ambiguous on many levels.

What does the progress mean? Is it the fraction of work done or an indication of time left?

Progress bars don't necessarily lie - they simply omit useful information. Estimating progress is hard if there's variables involved that are outside the application's control, e.g. network speed or task switches initiated by the OS.

Task-based progress bars suffer from being "jumpy" and terribly inconsistent, because some tasks take longer than others and the progress indication doesn't allow to estimate the remaining the time.

Time-based progress bars are bad, because they are dynamic by nature of factors mentioned earlier, so ETA might suddenly jump from 1:23 min to 58:07 min or just as bad from 15 minutes to 3 seconds.

This is also the reason why "this is how long it took for other users" is not a great solution either: if your particular circumstances (network speed, server load, ...) are vastly different at the time, this would solve nothing and result in the same complaints.

Progress bars are just an estimation and a mixture of tasks left, ETA and a generic activity indicator ("the app didn't crash and still makes progress") might be more informative.

EDIT: for short tasks (e.g. 20 seconds or less), a simple progression of messages like "working on it", "just a moment", "almost there", "finished" might be the best option.

1 comments

A progress bar is a chart, nothing more, nothing less. And as any data scientist will tell you, charts without labels are bad charts.

A progress bar should measure exactly one dimension, where a total is known, and a label should show what the dimension is. Usually progress bars implicitly measure "time left", but the total isn't known in that case, so progress bars are inapproprate.

For most "loading" scenarios, a spinner is a more appropriate element.

> Usually progress bars implicitly measure "time left", but the total isn't known in that case, so progress bars are inapproprate.

Are you sure about that? I'd argue that most progress bars explicitly measure tasks/work left and it's the user who wrongly correlates this with "time left" in many cases.

Note that the OP didn't complain about time, but about the percentage not going from 0% to 100% for example.

Yeah, you might be right about that. Still, that's not using a progress bar correctly if it's measuring multiple tasks — they should be measured individually, with spinners or a segmented progress bar.
Many progress bars are implicitly segmented; it's just that segments are determined by the programmer and never exposed to the user.