Microsoft Dynamics NAV Don Saito Microsoft Dynamics NAV Don Saito

Functionality, Usability, User Experience and Software Releases

I have been recently immersed in the joys of software design and development.  Namely, I took on what seemed like a simple task - modify Microsoft Dynamics NAV to automatically post batches of sales invoices and email them.   Sounds innocent enough and NAV already has a function to post and email a single invoice, so it should be a simple task, or so I thought.  As I designed and developed the solution, I realized I have been for some time operating in a particular cycle and that cycle carried out fully will inevitably lead to superior solutions and stopping short will lead to less optimum solutions.   The cycle apparently is: 

1) Functionality
2) Usability
3) User Experience

By functionality, I am referring to completing a basic particular function.  In this case, batch posting and emailing a set of invoices.  Ok, that is simple enough.  Loop through each invoice post it and send out an email with the invoice attached.  

However, NAV by default, always reuses the last email body text when sending emails making automation of emails unusable.  So, this needed addressing.  Here, the cycle repeated again - Functionality was lacking, so new functionality had to be developed to allow customers to have their own unique email body text for each type of document (quotes, orders, invoices, etc.) 

Once the basic functionality was complete, the usability had to be addressed.  In order to make the software more usable, it is desirable to allow users to make changes to the email body text on the fly prior to sending out invoices and giving them an option to save it.  Now the modification was functional and usable. 

Now the user experience could be addressed.   How can the modification be easily used by the user?  Adding error trapping, messages and convenient buttons to access the functionality rounds out the modification and markedly improves the user experience.

We now have the ability to set up default emails by customer.  It is easy to use and intuitive.  The screens display just what the user needs and no more.  The interface is clean and aesthetic.  Now we can continue where we left off and address the usability of the batch posting and sending of invoices. 

Batch posting is now functional - emailing and sending invoices has been accomplished.  However, the user is prompted twice for each invoice.  Clicking two times for each invoice is not very usable, so this is addressed.  The user is given an option whether to review each invoice before it is emailed.  Now the user can automatically post and email all invoices in the background or review each one individually.  Usability has been achieved. 

The user experience can now be addressed.  Adding buttons to post batch and send are added to the sales invoice list and sales invoice page.  Error trapping and messages are added.  The modification is now functional, usable and the user experience is excellent.  

You can probably think of a dozen products, software or otherwise, which are merely functional.  Take a garden variety computer mouse.  It points and clicks, but tracks roughly on reflective surfaces.  It has earned the status of functional.   But functional is merely okay.   Design into the mouse, smooth tracking across a great variety of surfaces and a satisfying click and now we have something more usable.  Design into the mouse comfortable ergonomics, an aesthetic modern profile and now we have addressed the user experience.  

The cycle of functionality, usability and user experience can and should be addressed during design.  However, there is no escaping the fact that part of cycle will be iterative regardless of how much forethought is put into design.  This is because one cannot always predict the outcome until it is actually seen and experienced.  

Now back to the world of software.  Far too often, I see software or functionality released which is merely functional as an effort to "get it out there".  In my opinion, this is shortsighted.   Greatness does not often result from "getting it out there".  It comes from completing the cycle of functionality, usability and user experience.  Regardless of methodology - waterfall, agile, etc., taking each and every function or product through the cycle to a shining, brilliant full user-experience is a standard well worth achieving. 

 

 

 

Read More