The inventory manager sat down to look at the day’s reports. To scrutinise further, he went to the computer screen so that he could get some detailed information about aluminium pipes, their raw material. Once he logged in, he tried to get information about the quantity and quality of the aluminium pipes received. To his surprise, the screen prompted him to enter the inventory ID number; in a baffled state he tried to look around but failed. On speaking with the IT engineer, he came to know that there was a user manual in the shelf which would provide the ID number for aluminium pipes, that had to be used.
As a software engineer I realise that the software application had to maintain an internal ID for every raw material; and I also realise that it is only the software application that needs it, not the inventory manager. This is a classic case of wrong design – where the user was forced to identify an item the way the software identified it. Shouldn’t it be exactly the opposite way? If the software used aluminium pipes for identification, it would be much more convenient for the inventory manager and would have saved him effort and time. I am sure there would be cases where only the raw material name might not be enough to identify it. However it can still be combined with other pieces of information that the inventory manager knows, the way he identified in the real world. This is what we call Business Interface.
The rule of thumb is to hide entities created by the software for itself, that don’t exist in the real world, from the user. Though the software internally has its own system, it should be appreciated that it is being used in the real world, by real world people.
It is quite possible that the same thing is called differently by different users. To be able to understand these details, it is imperative to identify all the different types of users that will interact with the software, including the administrators. The information required by the software and the output given should always be in a language and terminology that the users understand. This not only makes it more usable, but also requires the user to learn minimal things to use the software.
Copyright Abhijit Nadgouda.