It’s quite often for a company to have a super-GUI, an enterprise level GUI that contains almost all the GUIs needed for the operation of the company. Often the GUI has a name like ‘ACME Internet Manager’, ubiquitous, because there is no real separation of business concerns. Everything is thrown into this application, and filtered to the end user through the use of a permissioning system.
I don’t see any real problem in throwing all the companywide GUIs into this super-GUI. For one it dramatically cuts down on software deployment maintenance. Everything exists in one place, and there are no maintenance juggling issues that occur when you have a constellation of similar apps hooked into shared frameworks and shared databases. Separation of concerns occurs through the menu system.
The second good thing is that the super-GUI can function as a framework. Developers can develop their individual mini apps, and just drop them into the framework. Menu items are automatically populated and services get hooked up. Eclipse and OSGi beautifully encompass that philosophy via the use of plug-ins.
Thirdly a super-GUI gives employees an overview of the company. This is the real human aspect to a super-GUI.
Too often I come across a super-GUI and the permissioning system completely hides functionality. The first day at work an employee might see something like this :
Now this is great if this employee’s only job is to manage banana orders for the Zoo’s monkeys, although it’s a bit confusing for our new employee to think that this huge application was built with the intention of only being for employees to manage monkey banana orders.
A month in, the employee would like to order some pineapple for the monkeys, but is not aware any GUI exists for that functionality. The employee either forgets about ordering the pineapple, and continues managing bananas, or runs around the company trying to figure out if anyone out there knows anything about pineapples.
Two months in the new employee becomes aware that there is a Zebra enclosure at the Zoo. It’s a shame because the new employee has a lot Zebra experience he could have contributed his Zebra experience much sooner had he known.
My point is that you might think that you are reducing cognitive overload for the end user by hiding features they do not need. But what you are really doing is minimizing the employee’s view of the company.
You are treating the employee as a mere cog in the system, and preventing naturally occurring osmosis of ideas. Horizontal and Vertical layers of the company are shut out. The menu system can beautifully illustrate an organizations structure, so it is important to show users, along with what they can do, what exists but they can’t do.