How often on your day to day work have you heard of user complaints/comments like “this UI is so complex”, “the page layout looks cluttered” or “I don’t have the necessary information on this UI”?
Well, the issue was not with your code that runs behind the UI. It is a much deeper issue with the way the design thought that went into defining what/how you need to code!
Quite underestimated across the industry, one of the most important factors in rework of a particular piece of application is the “user experience” problems that were seeded into the application right from the inception. A majority of the times I hear colleagues complaining about ever changing user requirements and a majority of them at the start of the acceptance test phase leaving less time for reaction. Well, the user’s requirement never changed in most of the cases. It was just a matter of how you as a developer interpreted what the user needed without actually validating it before you put in the first line of code.
The solution to such problems to reduce efforts of rework needs a completely redefined way of design thinking with respect to user experience. In this blog, I will try to cover the most important aspects that we as developers/architects can put into practice on projects to achieve a good user experience.
Involve the end user
Yes, do not wait for the AT phase to start to get introduced to the end user and then solve hundreds of defects. The person who provided you requirements might actually not be the real end user but only a representative of a particular department who would use your application. That person will have a good knowledge on the “functional” requirements for the application. He/she might not really understand the real pain points of the users of that department who use the application on a day-day basis. Wherever possible with the given time constraints try involving the end user of your application at design time to get the complete overview of the issues with the current application they use and how they would like to get away those issues with the new solution.
2 Working with the user’s “Mental Model”
Every user would have envisioned a mental model of the application that you would deliver back for their operational tasks. This involves relating to the real world experiences and experiences gained by using their current operational software. This mental model of the user describes conceptually the different elements that they would like to have and work with in a specific order/sequence. This increases their productivity as they are used to work with already such setups. The mental model of the user will also depict the shortfalls of what the user is unable to do with the current application in use.
So, work with your user’s mental model before designing your applications user interface that performs a task. Reflecting the user’s mental model appropriately results in a very intuitive user interface for your application.
3 Prepare Prototypes before Specification
This might initially sound quite a daunting task. However, when I say prototypes you really do not need to create fancy ones. A prototype can be as simple as a paper drawing for a particular screen of your UI. These prototypes are driven out of the understanding of your user’s mental model explained above. When presenting these to your end users, clubbed with similar data flow prototypes it will already give a hint to your end user if you are heading on the wrong track. More advanced techniques like Visio can be used where appropriate.
4 Feedback and Communication
The feedback and communication from the application to the user is more than mere alerts and error messages. It should keep your user informed at all times during the operation phase about the current status and possible options along with, what is happening within the application. A classic example is to display appropriate progress messages during long running tasks rather than just a frozen window.
In applications that have multiple user interfaces or screens it is of utmost importance to keep all those screens consistent to the maximum possible extent. An example is an ecommerce website with multiple pages for a checkout, the below needs to be consistent throughout the user journey:
a. Header and Footer sections of the website
b. A consistent floating ‘Order Summary’ on all checkout pages with the most important and appropriate information visible all the time.
6 Follow guidelines/best practices laid out by the standards team
This should be one of the most straightforward and easiest approaches to come out with a decent user experience when the application is handed over to the users. Strict adherence to these will ensure that a majority of issues around the cluttered screens and glaring UI abnormalities do not make way into the delivered product.
7 Involve usability and design experts during your design phase
Not all developers are expected to be UX experts. It is for this reason that it is quite important to involve a trained UX expert on your project from the beginning. This person is expected to liaison between your end user and developers. This will help the project overall in validating the needs and interests of end users against the actuals that will be delivered.
Although this is not the entire list for a shield against usability issues, applying these on to your projects will greatly reduce the surprises when the application is handed over to the end user.