NAV Design Pattern - Instructions in the UI
Meet the Pattern
To mitigate usability problems with learnability or discoverability of Microsoft Dynamics NAV functionality, it is possible to embed instructions in the user interface (UI) in connection with the task that the user is performing. The goal is to explain how to use the product or feature without impairing the user’s productivity after user has learned how to use a feature.
Know the Pattern
Users must often go through a few days of training to learn how to use Microsoft Dynamics NAV, and even then, many users rely on super users to help them mitigate difficulties using Microsoft Dynamics NAV. In addition, because of low discoverability and learnability, many useful features are not being used at all.
Users’ expectations are changing. They expect the software to be usable out-of-the-box because this is the trend in software generally.
One of the cheapest and most effective methods to solve usability issues is to embed instructional messages in the product. From a user-experience point of view, this should be used as a last resort. UI should be self-explanatory, efficient, and simple to use. Accordingly, you should only implement this pattern if simplifying and improving a scenario is not possible or is too expensive.
In this connection, the most important requirement is not to impair productivity of the users. One of the biggest and most common UX mistakes that developers make is to “optimize for new users”. After the user has learned how to use the product, all the instruction texts and dialogs that we added to the UI will clutter the page and make information less visible. Instructional dialogs on routine tasks will become annoying. Therefore, we must make all instructions dismissible.
In the Mini App solution we have used following elements:
FastTabs with instructional text
Help tiles on a Role Center
Tooltips on actions and fields
Task-oriented page Help
Use the Pattern
The pattern in the picture above applies to dismissible parts in the UI.
We have a table that stores the instructional code ID and the UserID, so that we can track which user has turned off which instruction. All the logic handling is done from a codeunit. It is the responsibility of the codeunit to show/hide dialogs if needed.