Software applications have a lifespan. Some, like utility applications that do nothing more than patch an existing application to fix a bug, are quite short. Others, like games, live only slightly longer. Then there are those applications that live on for decades, such as Microsoft Word and Adobe Photoshop. Internal business applications that are used to automate and track processes often have long lifespans as well. As developers, we add to or adjust the application's user interface to account for new features, but rarely do we reconsider the interface as a whole. Why? Likely because we get used to the original user interface we created and don't see any reason to change it. But complacency is generally not viewed as a virtue.

Developers need to routinely revisit the user interface, and there are several good reasons for this. First, the science of user interface is constantly evolving. New concepts appear and you should be considering whether or not they are appropriate for your app. Second, the original user interface you created may not still be the best possible interface. If your app is commercial, it has competition and you need to stay on top of innovations and trends. Even if it's an app used only internally at your company, the better the user interface, the more productive its users will be. Increased productivity equals increased profit. Finally, taking a fresh look at the user interface can lead to the realization that you can add new features that would be difficult or impossible with the current user interface.

But before you consider making significant changes, you need to know just how usable your existing user interface is. There are three ways to go about this. I've put them in order from least expensive to most expensive.

How to know if you need to advance your user interface:

  1. Your Own Experience: Ideally, you are a user of your own software. If you aren't, you should be. My company makes a development tool and we make much of that tool using itself. That means our developers are also users. This is ideal because while you won't always use it exactly the way your users do, you will often find issues before the user does or at least understand them better when users report them. You need to think like both a new user and an experienced one to determine if the user interface meets the needs of both. When considering the new user, if you find yourself thinking, “They should should spend the time it takes to learn this or read the manual if they can't figure it out,” remember that the ideal user interface is one where the user knows what to do without any help at all. If you shoot for that star, you will at least land in the trees. That's certainly better than hitting the ground with a resounding thud. But being a user of your software is not always possible. When it's not, you then must consider items 2 and 3 below.
  2. User Feedback: User feedback can be very helpful if you can get it. Because we make a development tool, our users are developers and developers love to give feedback. We provide an application specifically for them to do this, appropriately enough called, “Feedback”. But not all users will proactively provide feedback. If that's the situation you are in, you'll need to find a way to encourage users to provide feedback. This can be as complex as adding a feedback feature to your software itself, or it can be an email or a phone call. Keep in mind that asking, “What can we do to improve the product?” is not specific enough to get the feedback you need as a developer. It's better to ask “What do you like least about the product?” or "What do you find most irritating about the product?". Those questions will connect in the user's mind with what frustrates them and that's the meat of the issue. When users provide feedback, they often try to provide solutions rather than provide the problem. Wording your questions properly will help you avoid this trap.
  3. Testing: Watching your users use your software can be very enlightening especially when they run into trouble. You may even notice they don't do things in the easiest way, suggesting that the feature they are using may not be intuitive enough. If you have the money, you can get users into a testing lab with one way glass or using sophisticated user recording software and then review hundreds of hours of video. However, I don't think that's really necessary in most cases. Simply watching a few users for a few hours will provide you with a lot of information and is significantly more affordable.

So, now you are starting to come around to the idea that your user interface needs more than just a new coat of paint.

Here are five ways you can improve your user interface:

  1. Come Up with 10 Concepts Often, developers quickly come up with a design for part of the user interface and go with it - writing the code to make it work and quickly becoming married to the idea that this is the most intuitive way to present the functionality to the user. Unfortunately, that's rarely the case. Require yourself to brainstorm 10 concepts for each part of your user interface. Don't create working prototypes or write any code. Sketch them out on paper. Even if you know there are problems with one of your concepts, include the concept and the problem. This forces you to get away from any one design enough to ensure all possibilities have been fully explored. Next, show your 10 concepts to others so you can find out which ones they like or don't like and why. I want to emphasize sketching these on paper because any additional effort such as using one of the many user interface prototyping applications out there, will only marry you more to one idea. Also, when you show anything more than sketches to others, especially end users, they are more likely to nitpick about the details rather than focus on the big picture.
  2. Design for 80% of Your Users It's important to remember (and easy to forget) that every feature of your application is something the user will believe (consciously or otherwise) they must understand in order to use the application. That means the more features there are, the further away your software gets from being easy to use and the closer it gets to being difficult to use. To avoid this, consider whether or not each feature will be used by 80% of your users. If it won't be, consider dropping it (or not adding it in the first place). Yes, that new feature might be what tips the scales for 20% of your users, but it also makes your software more complex for the 80%. Microsoft Word's toolbar was once most infamous example of this. The user could add so many icons to it that it became almost impossible to use. By designing for 80% of your users you will have a better shot at creating something easy to use.
  3. Make Zero Documentation Your Goal There is nothing more important than your application being intuitive. Some of you might think it's more important that the application does what it's supposed to do. The fact is, if the user can't figure out how to use the software, it really doesn't matter what it does. Intuitive software means that the user can quickly figure out how to use the software with little or no assistance. Software for mobile devices such as the iPad and iPhone usually provide very little in the way of online help, and while it's true that many of these apps are very simple, there are no shortage of complex apps for iOS. A lot of work goes into simplifying the user interface without sacrificing too much functionality. This process requires developers to think very carefully about what features an app should have an how to make them so intuitive that documentation is not really required in most cases. Take the same approach to your user interface design and you'll spend a lot less time writing documentation. Besides, you hate writing documentation anyway right?
  4. Look at Modern Applications Pablo Picasso once famously said, “Good artists copy, great artists steal.” I think what he meant is that we are all influenced by others but the “great artists” take something of value and do more than reinterpret it, they make it their own, advancing the idea beyond what it was. Look at the modern software around you, especially the other applications your users are likely to be using. User interface is constantly evolving and new ideas are being implemented all the time. Some are significant while others are subtle but all can help you consider what will be best for your applications.
  5. Be Objective You may think you have come up with the absolute best user interface possible. There's only one way to be sure and that's to put your work out there and ask for feedback. You may be applauded, or criticized or, most likely, both. Your app is your baby and you don't want to hear that your baby has big ears and you'll instinctively want to defend it. Learn to listen and take note of what others like and don't like. Then go back and see what you can do about it. This isn't always easy, in fact, I think being objective is one of the hardest things we as humans ever have to do. But it's necessary if you really want to improve your user interface and create something great.

Among your user base will be people afraid of change. They know your current user interface and they know it well. Change things too dramatically and these users can become defensive, worried that this change will make them less productive or worse, totally unable to use the software. Keeping people happy is mostly about managing their expectations. If possible, tell your users in advance about your planned user interface update. If you have beta users, obviously they will see the new interface first and you can recruit them to tout the benefits of it to your community once it's shipping.

As I mentioned before, user interface is constantly evolving. Often, user interfaces can be updated incrementally and users sometimes react more favorably to this. For your application to consistently be its best, you need to be learning about new user interface concepts as they begin to appear and ideally, experimenting on your own.

In his book, “Good to Great: Why Some Companies Make the Leap”, Jim Collins said, “Good is the enemy of Great.” I'm a true believer of this. Don't settle for good enough. Work at it until it's great. Your users should be delighted and wowed by the improvements in your user interface.