How many times you found yourself clicking the same button over and over wondering if the software recognized your click or not?
Clicking a button repeatedly with a delayed response, a software that freezes while performing a task, and the fact that a little typo needs you to refill the entire form are frustrating experiences we face due to poorly designed software.
So what’s the problem? And what should be done?
The problem is the lack of feedback. Take this example: You have a button labeled “Copy Text”. You click the button but nothing happens. The text is actually copied to the clipboard, but you have no clue. You may click it again, just to make sure, and when nothing occurs, you’ll then assume it’s copied and try pasting it. You’ll learn that it works this way and the next time you won’t think about it.
But was that right in the first place? Absolutely not! Why should we “try again”, “assume”, and “learn” while performing a simple task? Imagine the button function isn’t to copy text but to send some data to a server. We will send the same data several times and the consequences can be horrible.
Let’s take another example, you have a form to fill, each field has its own requirements and format. You finish filling the data and click submit. But, the format of your birth date isn’t as required. Now you have to fix it, re-write the password, and submit again. You presume developers did a great job by preserving the rest of the data right? These developers failed at providing feedback at the correct time. Why didn’t the form hint you about the error at the time it occurred and before moving to another field?
Developers defend their software saying it’s the users’ fault. The users have no idea how to use the software. Moreover, the majority of people believe this too and feel guilty if something goes wrong. They also doubt their ability to understand.
In reality, the developers are who to blame. The software should be easy to use. People should understand this too. Back to our problem, how to fix it?
Luckily, the solution is simple. Provide feedback. The right feedback at the right time enhances the overall user experience. Users should always be aware of what’s happening. They should know if the operation is waiting, succeeded, or failed.
A developer can provide feedback in various ways. For simple tasks, a light vibration or haptic feedback will be enough when the task is successful. A pop-up alert or a toast message can be useful here too.
For tasks that need time to finish, it’s crucial to have a loading indicator. In the case where the progress can be calculated it’s more reliable to have a progress bar. Furthermore, providing estimated time can be more satisfying. For forms, each field should be validated automatically and indicate if there is a problem right after the user fills it.
Developers should always question themselves “how the users will get feedback” for every action they implement.