Business employees
Who am I referring to exactly? After all even the IT developer who builds and maintains the enterprise system is an employee of the business. In fact, I mean folks that are not IT employees. I am referring to people whose primary knowledge is the business of the enterprise, and not computer related skills.
For instance, she is a certified underwriter of farm policies. She is not expected to know SQL. She is not expected to be able to setup CRON jobs, or put together a Lucene query, or even an advanced Google query. She does not tune the Oracle database where her policies reside.
What does it mean for such employees to have good user experience?
User experience
Common characteristics
At the outset, the common characteristics, as described in these posts, apply to business folks too.
Besides these, there is a perspective that applies to business folks specifically, I believe.
No training
Business resources must really only need training, experience, and expertise in the business, and not in whatever enterprise-wide computer system that is in place.
For instance, an underwriter should be able to come into a new insurance company, and knowing no more than how to use a keyboard, mouse, and perhaps a touch screen interface, and without formal training, should be able to very quickly learn and be productive using the existing enterprise system.
Anything the business resource has to learn, she must be able to learn painlessly, by just using the system.
The interfaces that the business user encounters must be a clear, natural, and seamless representation of her knowledge of the business. The system should guide the user down paths that are instantly familiar, and obviously correct.
The enterprise system must leave little room for mistakes. Even when the mistakes happen, they must be caught early, and there must be little or no cost. This is essential to facilitate experimentation, and self-learning.
Transparent
You know that the user experience is good when the enterprise system recedes into the background.
The computer system must not register in the user’s mind as an obstacle, as a challenge, or as anything at all that is above and beyond her knowledge of the business.
Granted, regardless of how convoluted a system is, once a user learns it, the system will recede into the background. That is almost unfortunate, because that is how a lot of clunky systems come to be.
However, say you have to make a change to the system. Or say you want to replace the system. How much resistance do you encounter? If the business complains about having to learn a whole new system all over again, your user experience is suspect.
To put it another way, your system’s interfaces must not add any cognitive burden, beyond that which the business expertise itself requires.
How to get there
The fundamental business
Good solution design begins with effective business analysis. Before diving into solutions, business analysis must first describe the essential business problem. Volere, a Requirements and Business Analysis consultancy has a good definition of such analysis, which it calls ‘systemic thinking’. To paraphrase Volere, you want an understanding of the essence of the business, without being prejudiced by any solutions, whether digital, or the old-fashioned kinds.
In a lot of my past work, the product of business analysis included someone's notion of a solution too, typically a user interface designed by folks with knowledge of the business, and good intentions, but not much else. Folks with the expertise (in user experience design) to translate the essential business rules, processes, and outcomes, into a transparent computer solution, never got a chance to understand the business at all. Result, more often than not, avoidable errors, unnecessary iterations, and ultimately, an interface, that was not useless, but that was less optimal than it had to be. These were common refrains - "They will get used to it", "This is a documentation issue", "This is a training issue", etc. All telltale signs of user experience that has room for improvement.
Human interaction design and construction
There are folks with the expertise to take the description of the essence of the business that systemic business analysis produces, and design a system with the characteristics described above.
Much of this expertise has been codified, as guidelines, patterns, and frameworks, which a competent generalist can learn as necessary.
Here is a list of resources that must serve as our guides.
- Apple human interaction guidelines for iOS
- Android human interaction guidelines
- This list of books, recommended by Theresa Neil.
- A list of books on form design, from UX Matters.
- One of my personal favorites – Don’t make me think, by Steve Krug.
Further, design is an iterative process, which will include the following sort of cycle.
- The human interaction designer comes up with a design.
- The design is implemented as some kind of prototype.
- Users use and evaluate the prototype.
- Tweak, enhance, start over, until everyone arrives at a satisfactory destination.
As this suggests, besides the design expertise, you have to be able to repeatedly construct, deploy, review, and change these solutions quickly.
Construction skills include the following.
- Create plain wireframes with a tool like Balsamic.
- Create colors and images laden, HTML, and CSS mockups with tools like Dreamweaver, and Photoshop, etc.
- Create live prototypes with RAD frameworks like Ruby on Rails, or Django (Python), or Grails, or Play with Scala etc. In particular, my personal interest is in the Java eco-system (Grails, Play), and a pure Javascript solution (for instance, Bootstrap.js, and BackBone.js at the client, and node.js in the backend).
You have to have the infrastructure and the skills for continuous integration, and continuous release.
Part of the review capabilities must include the ability to run usability tests.
Finally, there will be times when interfaces will have to change deep into the construction of the system. Your engineering must be such that the interface can change quickly, without adversely affecting the backend. You never want to say to the client – “It is too late to make that UI change. You should told us this earlier,”.