Lately I was involved in a discussion about validating input fields on a web GUI. The question was whether or not to validate the value entered by the user immediately after setting it. There was no specific requirement for it. However with respect to usability we were looking for an appropriate answer to this topic.
We finally came to a consensus. There is no need for an instant validation because the application is not time critical. When the user enters a wrong/invalid value the save button for example will trigger the validation and inform about the problem. Although it is fine for the given context there are other situations where the validation needs to be performed with immediate effect when entering a value.
Let’s have a look at two completely different systems.
System A is a financial trading platform that allows users to trade on certain curreny pairs like EURUSD. You can enter an amount and monitor the prices that are moving up and down in real time. Once a suitable price is displayed you can execute a sell or buy trade (e.g. sell 1000 EUR and buy USD). If there is no instant validation on the amount the user might wait until a suitable price is diplayded and executes the trade only to realize that there is a problem with the entered amount. In this case the user could miss to buy or sell a huge amount of money.
System B for example is a webshop where the user can purchase vouchers. You simply enter the amount of the price you want to purchase the voucher for and add it to the shopping basket. If you enter a wrong/invalid amount and add the voucher to the shopping basket it does not really matter whether or not the error is displayed with immediate effect.
There is no time critical action. If you re-enter the amount and try it again you do not loose any money. The voucher is always worth the amount you have entered. A different situation would be a system B1 where there is a limited quantity of vouchers available.
It’s still not as time critical as a trading system but the time factor needs to be considered.
As we can see simple functionalites like validating an input value need a context and can not be applied the same way all-around. When you are designing, implementing and testing a piece of software the question is in which context you are. Who is the user? How is it affecting the user interaction? Whose opinion matters?
Things that have worked well in the past might not be applicable one to one on new projects. We have to define, analyse and understand the context we are operating in to make the right decisions.