I think I could describe this problem in an abstract way, but I suppose it will be easier to understand when I describe it in a real world environment.

The Problem

Imagine a graphical editor where different graphical objects can be inserted via drag and drop:

before drop

Now when I drop the half transparent object there. Through some heavy computations the following result is achieved:

after drop

Up until now we do the computation at the time when the user releases the mouse synchronously. Meaning, he waits lets say two seconds until he can use the program instead. As I said previously this is just a simplified example. It needs quite more than this interaction to have a two second calculation time, but it happens.

Now we thought it would be nice to do the whole computation asynchronously, so that the user use the rest of the application during this time. And there lies the problem The user could now in these two seconds trigger additional drops as he pleases.

Schematic picture

Meaning he has dropped three objects (a,b,c) while not even the first was completely calculated (A).

Solution 1

solution 1

The user can drop the objects as he pleases. The changes are accumulated after the first calculation is ready.

Problem with this solution is, that the user drops objects on the initial state of the worksheet probably assuming that the first object (a) was never inserted. It will definitively confuse the user.

Solution 2

solution 2

The dropped objects (b,c) are just ignored. Of course the UI would be "blocked" with an overlay and drop would be made impossible.

Problem with this solution is, that I would have again blocked the UI only now with my own custom overlay.

The Question

Have you encountered any of these problems? Is there a smarter solution than any of the two presented?


Solution 1 is the one preferred by most users, based on my experience. The problem you described, "he user drops objects on the initial state of the worksheet probably assuming that the first object (a) was never inserted," can be mitigated with a temporary placeholder visual that indicates an object was dropped, but its state is not yet computed. I would make the visual similar to the final result, but with a difference that indicates the final result is being computed. Also, have another visual somewhere, either in a status area, or as part of the temporary visual, with a small, unobtrusive animation, indicating calculations are occurring.

Finally, I would work hard to make these calculations faster. Perhaps there is a problem with the algorithm, or perhaps you need to pre-fetch some data remotely. The faster you can speed up the calculations, the more friendly your application will appear to the user.

|improve this answer|||||
  • Thank you for your suggestions. Unfortunately the calculations are already as fast as possible, but if you need to handle 10000+ objects and only have an old Pentium 4 machine there is not much you can do. – Yggdrasil Feb 20 '15 at 6:42
  • @Yggdrasil in general, when the user has to stop and think, wait for the computer, or click on a modal dialog, before continuing working, it is considered an inferior UI design. That is, the ideal is to allow the user to continue working (using mouse, keyboard etc) without worrying about timing issues or random modal pop-ups. – Frank Hileman Feb 20 '15 at 16:38
  • Thanks again. Do you have any good book recommendation regarding this issue - general concepts for developing non blocking UI? – Yggdrasil Feb 23 '15 at 6:00
  • 1
    @Yggdrasil Books by Alan Cooper were useful when I first learned about UI design many years ago. You may wish to see what is recommended at your favorite university course, or check amazon ratings. – Frank Hileman Feb 23 '15 at 18:27
  • 1
    @Yggdrasil I should mention as well that all programmers are also software users, so we can avoid UI design pitfalls simply by recalling about the most annoying UI designs in the software we use everyday, and thinking about why it is annoying. Poor UI design is still common everywhere, though it is getting steadily better. – Frank Hileman Feb 23 '15 at 18:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.