As an avid consumer of food delivering apps I decided to heuristically evaluate my favorite one: Uber Eats. Uber Eats is a platform used worldwide that allows its users to order food online and receive it directly to their doorsteps. I am going to use Jakob Nielsen's 10 general principles for interaction design for the evaluation, identify usability issues and explore user-centered solutions.
1) Visibility of system status
Feedback is critical to inform the user that their interactions with the application was acknowledged or successful.
The Uber Eats app does a great job delivering this feedback to the users. During this test I found many clear indicators communicating that the system is receiving my input and something is happening on the back-end. The most exciting indicator in my opinion is the Delivery Progress Bar, it keeps the users informed during all the steps of the restaurant receiving the order to the users receiving their food.
2) Match between system and the real world
The language used in an application should be direct and clear. Confusing information or misunderstandings will make the user feel frustrated and unsure.
There is a huge variety of icons used on the Uber Eats interface and they are always supported by text. From my experience, most of these icons follow design patterns already defined and easy to understand for the average user. I was pleased to see the big pictures on the food categories tab, I am curious to know why the design team chose to use images instead of icons for those. I believe this helps people with a reading disability. Overall, the language is simple and clear to understand.
3) User control and freedom
A digital platform should give the users freedom to be in control of the interactions. Users can make mistakes and they need clear indicators of how to leave unwanted states. Users also employ trial and error to learn a new system. So, sometimes they just try test the system to see what it will do.
4) Consistency and standards
Years and years of digital design have result in design standard and users have expectations of what buttons and links do based on their prior experience using other applications. Failing to utilize commonly used visual representations will force the user to consciously engage with the user interface in a way that is uncomfortable, which reduces the speed at which they could be navigating and performing desired tasks.
5) Error prevention
Users will make mistakes, they might not pay full attention to a task or have small memory lapses. The system should check for mistakes and eliminate error-prone conditions. A couple of ways of preventing mistakes is asking for a confirmation from the user before allowing them to commit to a action and guide them through a task.
6) Recognition rather than recall
The 6th Nielsen’s design principle says that the user should not have to remember information from one part of the dialogue to another. Instructions should be visible or easily retrievable whenever appropriate. The system should minimize the user’s cognitive load by presenting context-relevant information.
7) Flexibility and efficiency of use
Flexibility and efficiency of use heuristic principle is about giving the users ways to speed up their work with more efficiency and flexibility. While developing an application we need to think critically about points in the user’s journey where we can offer them an opportunity to save time.
8) Aesthetic and minimalist design
By making use of the visual principles by reducing visual clutter as much as possible, we can make it easier for users to find the information and the opportunities for action that they need to find in order to have a better user experience.
9) Help users recognize, diagnose, and recover from errors
The system should be able to write error messages that help users to understand the problem to provide information that constructively teaches users how to recover from the error.
10) Help and documentation
Even if we are aiming to build a fool proof user experience on our products, it is better to provide help and documentation to the user to help them accomplish tasks on the platform.
A user documentation is meant to just show the user the necessary steps to accomplish a task and answer "How to..." questions.