Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have been working on a integration that has posed an interesting user interface conundrum that I would like suggestions for.

The user interface is displayed within a third party product. The state of the interface is supplied by calls to a service I have written. There can be small delays between the actual state changing the the user interface changing due to the polling for state by the third party.

When a user interacts with the user interface, requests are sent back to my application. This then affects the state and the next state poll request will update the user interface.

The problem is that the delay between pressing a button and seeing the user interface update is perhaps 1 or 2 seconds and in usability testing I can see that people are clicking again before the user interface updates, thinking that they haven't properly clicked the first time.

Given the constraints (we can only update the user interface via the polling mechanism - if we updated it when they clicked, the polling might return and overwrite the change causing unpredictable / undesirable results)... what can we do to make the user experience better.

My current idea is to show a message for a couple of seconds so people know their click was accepted, the message would not be affected by the state polling, so wouldn't be prematurely removed / overwritten etc. I'm sure there are other ideas out there and I'm also confident someone has a better idea that I have!

share|improve this question
What language/platform are you using? – Oded Nov 20 '11 at 21:50
User Experience Stack Exchange... – Yannis Nov 20 '11 at 21:54
@Oded - the UI is inside a third party application and calls a web service via JavaScript that I have written, which returns a JSON message that represents the UI state (i.e. what is enabled / disabled, visible / hidden, and localised messages). – Sohnee Nov 21 '11 at 8:03

Immediately show some feedback: change the visual state of button, display an animated throbber.

If the app logic allows, disable the button once it has been pressed, enable it back when the answer arrives.

Once the answer has arrived, show the real feedback: update the controls, remove the throbber.

share|improve this answer
I vote for this. Disable the control rather than show a dialog. This gives you the option of disabling one control but leaving a second enabled which can still poll a separate message. The only complication may be what to do if no response is received. – Ian Nov 20 '11 at 22:31
@Ian - I can't disable the button because it may be re-enabled by the polling mechanism, which contains the UI state (i.e. it would cause a race condition by allowing the UI to maintain a part of the state, which would be overwritten by the polling if a response was received just after the button click). – Sohnee Nov 21 '11 at 8:01

Your Answer


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.