I’ve had my fair share of software experiences. Sure, they may not be real life experiences and they do sound particularly ‘geekish’, yet the use of software in some cases relates to the use of physical objects in the real world.
Recently I’ve been writing up my research paper on a network-shared whiteboard. Whilst working on this I’ve also been looking around at various software as well as using various new websites. I won’t mention these on here as so to avoid any flaming, but I’m sure people would tend to agree with my experiences. The problem is - you see - that software, and their interfaces are more complex than they need to be.
One website I’ve recently taken an interest in is currently in beta. A few days ago I checked it out to see how it’s going and sure enough on a foot-note there was a few small statements telling users what to do when they encounter an error, and how to interpret them. Here’s a few quick facts for you.
- Users don’t care.
- Users just want usability.
- The simpler it is, the more comfortable users will be.
- The users probably wouldn’t follow up errors anyway.
During the development of my application I have made it one of my primary aims to hide as much as humanly possible from the end-user. If I imagine myself as using an application I typically want something that "just works". I don’t want to have to set anything up, I don’t want to have to go through complex instructions or be faced with indecipherable error messages.
Of course we have to take into consideration the end-user themselves and what type of user they are. Some end-users may be a developer and therefore aware of how to deal with such errors. For applications which I personally develop, they’re aimed at a very large user base, they may be developers, students, people in finances, or y’mum.
I can’t help but feel deep, technical hate for over complicated applications driving users away. Some of the most popular applications in the world remain so utterly simple that a five year-old could (and indeed do) use them. Google, for example, have a simple, intuitive interface keeping style and colour consistency throughout. Have you ever used their calendar system, then moved onto their forum system followed by their mail system? You’ll find if you can use one, then you can use many others. I am not, however, trying to "big up" Google in this post, I’m just using them as a prime example to the KISS statement.
So, here’s a few tips which I’ve managed to learn from, and acquire over the years.
- Error messages should be on the level of a user
- Error messages should only be displayed if a user needs to know
- Categorise your layouts, both menu-driven and general GUI’s
- Keep a visual consistency throughout your application (I’m talking about dialogues, messages, menus, option panels etc.)
- Remove unnecessary technicalities (one-click installs are an example, but provide advanced features only if needed)
I could go on forever, but those are some of the prime examples.
I’ve made a mention to this for one other reason, and that is OpenOffice.org’s bibliography feature (this is in version 2.0.4). It appears to me quite complex, and something I just can’t get my head around. The table of contents feature is perfect - it’s simple to use, and easy to maintain. Trying to maintain a bibliography should be something of great ease, perhaps selecting an area of text and clicking "apply bibliographic reference, and please reference it at the end of my document in a reserved section". I would’ve hoped the rest would be done for me. A friend of mine then showed me how Microsoft’s Word bibliography feature worked, and how stupidly simple it was. I did have a deep envy for that feature in particular, although I wouldn’t turn to proprietary formats.
Wordpress itself, that is what I’m writing in at the moment, has the two-step install feature - what more do you need to specify?
So, to sum up, I personally feel that as developers we see software from a developer perspective. The features we look for lay not in simplicity, but choice. We lose sight of whom we are directing our software at. The next time you’re designing something, try to cut down on things you think really aren’t needed.