When I talk to software companies they are perpetually trying to put things in hierarchical structures for their data. These are three conversations I've had this week...
- A person is an object that lives in a site, a site belong inside an organizations and organizations may belong to other organizations
- A Notebook is a type of Computer, A computer is a type of hardware and hardware is a type of product that we can sell
- A virus is a type of computer vulnerability, a vulnerability can be broken up into categories, each of these can have sub-categories
Why is everyone trying to create hierarchical structures?
I believe people like to make hierarchies of data because it brings order to chaos. A hierarchy takes a list of 5000 items and makes it manageable because each one is broken into a much smaller list. What I tend to see if people will create these hierarchies until they get down to sets of under 100 items. If the list is over 100 items I can almost expect a person to want to create some additional category, grouping or filter to narrow the list.
Why is hierarchical structures difficult UI?
Believe it or not many beginners have trouble using a tree structure to navigate, users have trouble with the distinction of clicking on a node vs. expanding a node so in terms of UI I try to avoid tree controls as the primary means for finding and categorizing.
Hierarchical structures increase the likelihood that you will get lost. For example let's take an example where you need to select a City. If you are a fan of hierarchy you may create a structure where you first expand the State and then select a city. Now if you need to select the city Boston you first need to know that Boston is a city in Massachusetts. Then you expand Massachusetts and then select Boston. Sure you've added structure to your hierarchy but you've added complexity.
Long lists are not always a bad thing. A dictionary or telephone book is a long linear list. Even though it's long it's also simple and predictable. It's much more common for a hierarchy to be open to interpretation.
Given the hierarchy
- Keyboards
- Mice
- Joysticks
- Accessories
Where would you expect to find a "track-pad?" Because of the hierarchy it can be arbitrary where the item should appear. Perhaps some people think it's a type of mouse, perhaps others see it as a keyboard option while others may think of it as an accessory.
What should I do?
- If possible see if you can avoid the hierarchy? Is it really needed or is it an artifact of an abstract desire to bring order to chaos?
- Ask if you can solve the problem by searching or filtering a long list? Remember Yahoo started with a hierarchy and now it's all about searching through that hierarchy.
- If you need a hierarchy then duplication is not necessarily a bad thing, consider the option of allowing nodes to live in multiple places.
- If many of your hierarchical nodes will have only one item within the node, try to remove that extra level of abstraction.
- Even if you have a hierarchy still provide a mechanism to search across that hierarchy.
- Don't add the hierachy untill you actually discover that you need it. Many times people think a flat list will need some additional structure and they are surprised to find out that it suites their needs just fine.