Saturday, June 21, 2008

The technology in UX

I'm currently wrapping up a UX consulting assignment for a financial services ISV in the east coast. Quite a rewarding experience, and a test of the process I posted on this blog here.

An interesting problem to solve was this:

How do you make it transparent to the user that the huge amount of data being manipulated in a desktop application comes from a server?

To give more context, imagine you had around 5-10K rows of data, some 30-50 columns in each row in an Excel spreadsheet. This data keeps changing as there are other users updating, as well as the system. New rows also keep getting added.

Your user is someone who monitors this data, making sure the system is running as expected, making changes as required. To enable this, the application allows slicing and dicing, custom views, conditional formatting etc.

The problem restated - as the user is using the various features, how does the application make the user feel the data is on his desktop rather than on the server? Also, now that you've provided these features, how do you reduce the server load when each client submits a query every few seconds?

The solution - load the huge amount of data on the user's machine, and sync this with the server every few seconds.

However, this doesn't solve the problem of the server load. So instead of executing the query on the database every few seconds, the query could be executed every few seconds and kept in a cache on the server. This is still inefficient, so each time the application receives data, it also gets when it should make the next request, allowing you to distribute the load on the servers.

What does this allow? The user now doesn't feel the data being updated. It happens in the background, and any changes to the data currently being viewed is done unobtrusively. There is no longer the need to click a "Refresh" button to get the latest data. The response to any filtering or custom view being applied is instant. For all the user knows, the data is on their desktop.

0 comments: