I recently found a couple of blogs that are pro and anti webware and it made me think about just how much webware has changed recently. Eighteen months ago the reasons I used for deciding whether to build webware (ie SaaS) or software (ie standalone app or a smart client) were basically: if the audience is the general public, then build webware. Otherwise, build software.
This was because software UI could be far more powerful than web UI, so you could build a lot more functionality with a lot higher usability for the same price. Of course this was also based on my preference for software, but I had the golden rules of UI design to back me up.
Now, with decent (or at least better) web browsers, AJAX, javascript and all those 2.0’s, webware can compete with the basic stuff that software has always been able to do. Its like Windows finally doing what Apple has been doing forever. Feedback and error handling can be handled live, controls can be interacted with and updated on-the-fly and users don’t have to wait for a server roundtrip after every click. On top of this, webware gives complete freedom to the user interaction gurus, so they can design an app with consistency, closure, keeping users in control and reducing memory load.
So, with webware and software pretty-much equal when it comes to UI and the cost of developing and deploying webware and software being very similar, its often not a technical decision anymore between building webware or software – its a business decision. Is the business model to license or subscribe? How will the software be sold and maintained? etc.
However, while webware technology has come a long way, there’s still a lot of work to do to achieve good UI and I’ve been very impressed at how the team at Xero have managed to build webware with better usability than any accounting software out there.
The golden rules …
1. Consistency
Software UI is well defined. It all looks the same. Menus, toolbars, shortcut bars, modal windows etc, its all boring and consistent and you don’t have to put any thought or time into how to make the windows and controls look – just copy Outlook. Of course, you can still screw up the consistency within your app, but software has a huge head start over webware when it comes to consistency.
2. Shortcuts
Frequent users need shortcuts, including right click menus, single vs double click, keyboard shortcuts and menu shortcuts. These are all taken for granted in software and users get pissed off when they’re missing, but they’re usually missing from webware and no-body notices because no-body expects them there because it takes time to add them, so most developers don’t.
3. Informative feedback
Good feedback should be fast and contextual, so having to make a round trip to the server, then reload a page just to validate a field, or confirm an action is poor. Handling feedback in software is a non-issue – you still need to provide good informative feedback, but its much easier to do it in software than in webware.
4. Closure
The user needs to know when they’ve completed an action. When using software, have you ever seen the message “Don’t click Save twice otherwise your order will be processed twice”? This is typical of webware because you click the button and wait and then you’re not sure whether you’ve just saved or lost your last 10 mins of form-filling, so you click it again. What happens when you go back, then forward, or refresh. Software doesn’t have these issues, so you don’t have to spend time building workarounds.
5. Error handling
Like providing good feedback, error handling should be instant, contextual and preventative where possible. Who wants to post a form, then receive a list of error messages that need to be matched back to each control? Error handling in software is easy, in webware its harder, so its usually not done well.
6. Undo
This is an area that most webware lacks in, but something that users expect.
7. Keep users in control
Happens by default with software and requires more thought, design and workarounds in webware.
8. Reduce short-term memory load
Not too long ago, updating info live on a webpage was not cross-browser, so webware was pretty poor at this, but to update information on a form in software is simple and you’ve got lots and lots of memory for storing the session info for just one user.