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.

I'm working on a search which aggregates videos from multiple sources. Imagine that my search is searching through Metacoffe and Youtube. In my case Youtube have more relevant results but they need longer to arrive from search.

Currently my search shows loading bar until it gets results from both YT and MC. This may take up to 10 seconds (very bad from UX perspective), because of YT slow loading (MC is returning results near-instant). When results arrive they get mixed (with more YT results on top)

I want to display MC results as they arrive and later when YT results are ready they should be added into list - not to the bottom - but in correct place.

results in expected order

What is the proper way to handle this and what would be the best from UX perspective? Isn't a bit weird if list is modified once its filled? What if user wants to click and youtube results arrived?

share|improve this question
add comment

3 Answers

As stated in Seow's book on time engineering, working on time-consuming tasks there are some issues:

  1. How to make the system work faster (technology task).
  2. How to make the system be perceived by users as faster one (psychological task).
  3. How to make users become more tolerant to the systems delay (psychological task).

On tech side you can use caching tools, create own database for search and so on.

On psychological side you have some tricks. For example, you can do 10 sec of searching useful for user, look at my sketch. The idea is to display immediately some results from fast search. The more relevant search is continued while user learns fast results. So the 10 secs are virtually divided and the user engaged from first seconds (perception way).
slow video search

The next trick is fun. You can make waiting for results more fun for users by displaying some nice animation (toleration way).

share|improve this answer
    
I think that this will significantly improve the user experience, which may be the goal on top of everything. Psychological tasks are easy to implement, harder to master in this case; the downside is that on the Quick results list user will get only entries from some sources. Only 1., though, would be a real solution to the problem. As I mentioned in the comment to my own answer, this is a technological limitation transferring to UX, and I doubt it is possible (given the size of databases) to cache the results (well, maybe intelligently, based on most common search querries). –  Dominik Oslizlo Jun 17 '13 at 7:24
    
Extra thanks for pointing out Seow's book. –  Deer Hunter Jun 17 '13 at 8:59
add comment

Show what results you have initially, but indicate that there are more results coming.

When you have more results, use some mechanism to indicate 'Adding more results in 3...2...1'.

You could also indicate what results are already fetched and which are coming so that the user knows what source of information is still being waited upon.

So for example, the following sequence:

Before any search results are found you show a list of sources.

enter image description here

If one source appears almost instantly then you show the results asap and dim the source in the waiting list. You don't want to delay showing the first results.

enter image description here

Now the user has something to do - ie look at the initial results.

Then when you have results ready or are preparing results in such a way that you know how long it will take then you start indicating via a progress meter that the results are being processed and about to be added.

enter image description here

This will allow the user to see that an update to the results is about to happen. They will learn after only one or two goes that the results will be updated when the progress meter reaches full circle...

enter image description here

Ideally it shouldn't take more than a couple of seconds otherwise user will get fed up with waiting. But also, it should take a minimum amount of time such that the user can see the results are about to be updated and for the last second they will not click/tap on an existing result, while they wait for the results to be updated.

enter image description here

Then the results will actually get updated, and although the results are sorted in order of relevance (?) the user can see which of the results are from the new source.

enter image description here

Finally, when all results have been fetched, the header changes to show more relevant information like number of results or whatever the user may be interested in.

enter image description here

share|improve this answer
    
Piano guys ! :D –  rk. Jun 17 '13 at 14:14
add comment

I bet these results will be clickable, so as more results are added, some of the formerly displayed results will go lower. I hate it when e.g. I want to click a link/button on a site and then an ad loads at the top of the page and everything goes down, so - as a result - I click something completely different than intended, something that has just "slid under" mu cursor. In your case it is going to be similar, so, unfortunately, something that is good as an idea in this case will crush on the rocks of implementation limitations.

What is left, is either preventing users from clicking (by delaying the click ability of the results until the last result arrives) or splitting the results into two lists, e.g. displayed side by side. None of these is 100% good, but I think that these are better than your solution (or, to be precise: less bad). But as I said, this is only due to API returning results delay, the idea is, of course good.

share|improve this answer
1  
What if there are 4 or 10 sources? Would guess there should exist a neat solution invariant wrt the number of streams. –  Deer Hunter Jun 17 '13 at 3:33
    
That's true. For two sources - it would be fine to display it in columns, for more - maybe tabbed interface. I'm just saying that given the 'underlying limitations' it is impossible for the system to work as initially intended. There is simply no perfect solution in this case. Technical limitations, especially these addressing functionality itself and performance, are strong factors shaping the general user experience about the system. However, I do like the "Quick results" idea given by @AlexeyKolchenko, so +1 for his answer (and for your comment as well). –  Dominik Oslizlo Jun 17 '13 at 7:17
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.