I am not anti “Web 2.0“. I have enjoyed seeing the evolution of web applications under its banner, though I find the concept – as intangible as it can be – amusing at times. I have to say, though, that there are instances when I know it has gone too far. I am finding more and more overly AJAX-ified sites which seem to be increasingly focused on how many items on the Web 2.0 checklist they can cross off and less on the usability principles which will give their visitors the smooth and comfortable experience they deserve.
This article really only touches on one example that I have experienced recently: onBlur commits (AJAXified, of course).
Now I can already hear you cry “But Carly, this saves me so much time! I don’t need to press OK, or even hit enter. Do you know how many microseconds that saves me?!” or whatever. Before you start preparing your flaming comments, let me explain.
I am travelling in South America and am currently in Bolivia. Needless to say, the internet here is generally pretty shite, especially when you get out of La Paz and into some of the smaller cities. At times I need to use their PCs rather than my beloved Mac which I am hauling around the continent. This is fine (I’m not that much of a snob, really) but when the machine you are using is munching over a 56K connection, only has 64mb RAM and is running some ungodly version of Windows, you might start to appreciate how AJAX (the onBlur commit especially) starts to falls apart.
I use Facebook to keep in touch with family, friends and people I meet on the road – so I use it quite a bit (lets not go into the “Facebook is for pussies” discussion, now is not the time). Last night I wanted to update the “About Me” section, a little spiel that sits underneath your Facebook profile photo on the left. I clicked “Edit”, and started typing in my note. Part way through I wanted to check the quote that I was supplying – I flicked over to another browser window to check it, and when I came back found that not only had this triggered an onBlur and was committing my half-entered text, but that due to the slow internet connection I now had to wait for 10 minutes before I could correct it, if it didn’t timeout altogether. Because I rarely prepare all of my text in one hit and tend to flick back and forth between browser windows and other documents, this happened to be quite a bit. It was incredibly frustrating.
The thing is, I am not aware of any way to turn this off in Facebook. Can I return to a less AJAXy version of Facebook while I am travelling, or even if I just prefer to use one? What about at least providing me with a little AJAXed OK button rather than submitting my input when I move the focus away from the field? If you know, please tell me :-)
Now lets look at this in terms of usability. For those that may not be familiar with the common usability principles (there is no one gospel for usability), this relates most closely to the item usually listed under “affordance“. The idea is to make it clear – intuitively clear if possible – what will happen when you do something, how controls work etc. From this point of view, how am I to know that the form will submit when I shift my focus to another window? I haven’t indicated to the application that I am ready for my text to commit. For less technically-minded people (I’m thinking of my parents here – my mother is now using Facebook) I imagine this must confuse the hell out of them just as much as it annoys me when it catches me out on slow connection.
The side-issue of not being able to change from AJAX to traditional button-controlled submission may also fall under another common principle of allowing the user to have control.
I understand that it is convenient for a commit to happen via a method other than ENTER, especially when it is multi-line input and ENTER should not submit the form. However, even clicking elsewhere on the page to trigger a commit is ambiguous (or for those that are keyboard control ninjas, tabbing out of the field). What if I want to copy some text from somewhere else on the page? Why shouldn’t I be able to do this while I am in the middle of typing text in a field? Why are you forcing me to prepare my text outside your application altogether, in order to avoid this insane event?
Let us just think about this a little, folks. User experience is important, yes. Shiny AJAX is “oh so cool” and can be nice to use, yes, and it will probably draw people to your product. But usability is paramount. If they can’t use your application when they arrive – or if it annoys them – they will leave (or yell at you). Make your application work for the user, remember?
Some Resources on Usability
These resources are not exhaustive, but hopefully will help you in the right direction.