All developers are aware how programming errors such as logic error, exception error or incorrect input data can produce bugs. But can UIs produce bugs or at least attract the user towards a bug? The answer yes! And these bugs tend to be quite difficult to catch because each user react to the UI in a different way. And the fact that programmers are so used to the behaviors of the default controls in a GUI environment it’s hard for them to test the application for UI confusions.
Unfortunately this is more true in a web platform than in it is in a let’s say windows application. In a windows application the developer has more control and therefore can enforce a UI path whereas in a web-application the user is partially in control. Consider what happens in Gmail for instance, if you write an e-mail and half way through you close the browser by mistake what happens? Gmail will not give you any alerts instead the browser will close and you will have lost everything you typed (assuming you didn’t save a draft).
Now let’s follow through the same steps but this time on a Windows application. Open up outlook and create a new message, now no matter how you want to close the window weather it’s closing the “New message” window or Outlook itself completely you will have to confirm that you don’t want to save the message and still quit.
Now of course the example I am presenting above is obvious enough that no one makes this mistake. Everyone knows that if you are using Hotmail, Yahoo Mail or Gmail you should save your message first before quitting.
But in a complex application (specially when the user is not used to it) this UI problem can get quite scary. This issue came into my attention when I released a fairly large application into production and some of the users were having trouble submiting information to us through the app. After some investigation I realized that it was the UI that was confusing some users.
To make long stories short, in a web environment we as programmers must be cautious as to how to design our UIs because we have several boundaries that we have to work against, the lack of control when it comes to UI in a web environment, the statelessness of web-applications and the constant client-server connection all play a role into introducing strange bugs.