Take the 2-minute tour ×
User Experience Stack Exchange is a question and answer site for user experience researchers and experts. It's 100% free, no registration required.

We have a Desktop based WinForms application. Application performs some very complex logic in database and is bound to take long time. By long time i mean it will take anything from 1 min to 20 min for processing. In this time user can't do anything and has to watch the progress bar. Now, We have communicated client that calculations are such that. it can't go faster. He acknowledges that yes its optimized but it feels slow for end user.

I wanted some suggestions on how do we handle long running operations on UI which may create illusion of application being a very responsive and fast.

My idea was that right now user is observing very static progress bar. If I put some text or some notification where I have reached in processing it may have better impact on usability.

Thanks

share|improve this question
1  
Is the UI locked while the process is waited for or can the user do other things in the meantime? –  kontur Feb 7 '13 at 8:07
add comment

3 Answers

I don't know if those calculations are on demand or what they are about, but I made an UI for some slow data calculations, too.

Since it is not the only thing a user can do in our application, we made everything asynchronous on many levels.

One level is pre-calculation and caching. Most users want to view about 10-20 reports. Those take from 10sec - 1h to calculate.

So we enabled the user to mark them as favorite a day before and every night they get calculated, so the user gets on the system every morning and instantly sees the results.

The other level was an asynchronous UI.

Since there are fast and slow reports, we made the whole UI asynchronous. This lets the user do different stuff, while the reports are loading.

No blocked UI while waiting.

This made the whole waiting time much more appealing for the users, since they don't have to sit around and wait, but do anything they like, while they wait.

share|improve this answer
add comment

An application that takes a minute to load need to be designed differently. You can't leave the user unproductive for up to 20 minutes in the year 2013. From a design perspective, in order to save the user expereince, you need to do one of three things:

  1. Use better hardware. This is the obvious choice, since you could buy yourself out of trouble by using better (faster, bigger, stronger) hardware. Increase the memory up to 4 TB is possible on Windows Server 2012 - but probably not needed. This is the costly option, but if it doesn't work for the customer...

  2. Use cached data. Have a separate server doing these crucial calculations delivering the result to a Web App/Native App connected SQL Server. You can have these calculations done every hour if you'd like. But if that is not an option...

  3. Implement threading. OK, you need to do these calculations "live" where "live" means up to 20 minutes old data. Buty you could let the user fire off the powerful query from a dashboard, and then move away to do other things in the system. When the calculations are done, user gets notified that the calculation is done and can navigate back to the dashboard consuming the result.

A few ideas to improve further, if you fancy anyone of them.

share|improve this answer
1  
+1 Options 1 and 2 are sometimes simply not a solution. I work on client/server software that processes huge amounts of data and throwing hardware at it doesn't help (anymore), and while query results are cache-able (to some extent as they are not simple resources), they cannot be served (as yet) by other more general software. (The client can't handle it). –  Marjan Venema Feb 7 '13 at 7:27
1  
+1 for threading in the sense that the app should allow the user to kick off a process and then continue using the app working on other things and then be notified when the process is done. –  Charles Wesley Feb 7 '13 at 17:04
add comment

Implementing asynchronous calculation is the best solution because it completely eliminate the reason of inconvenience for user which is waiting. But sometimes it's not possible to redesign application radically. So in case of synchronous calculations we need to do one of the following - divert user's attention or give him estimation of calculation duration. Most simple way is to display estimated time of calculation. This reduces user's uncomfortable uncertainty and he can plan his time until calculation completion - stay or go for a cup of coffee. The easiest way of diverting attention is add dynamism to static progress bar in some way, however it can have additional overhead for calculation itself.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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