I am building a location tracking app for enterprises. An organization has hierarchy like CEO → Department Head → Region → State → City. Anyone in parent group should have visibility over all its children. CEO should have complete visibility over the organization.

I have two approaches for organizing teams:

One is to build a tree structure like an org tree.

The other alternative to organize teams is using tags for, e.g., CXO, Department, Region, State, City. This is similar to StackExchange labels. In order to search for information, user can select tags.

Which is a better way to organize teams?

  • 1
    What are the use cases? What requirements have the people (or the sort of people) you're building the application for indicated are important?
    – calum_b
    Dec 13 '16 at 15:13
  • @scottishwildcat: They want to see how the people are moving on the ground and location based analytics for their movement.
    – Akhil
    Dec 13 '16 at 16:07
  • I do not quite understand: Are you asking how to design the "filters" which determine whose movements are shown on a map? Jun 14 '17 at 6:33
  • I think labels would lead to too many labels. And even labels would need some hierarchy (for example color coded hierarchy level). Sep 12 '17 at 8:19
  • I don't know the right solution, but I assure you that if you try to implement based on a strict hierarchy, you'll eventually run into trouble. There are few things in business that don't have the occasional exception, and the hierarchy model is likely to be very troublesome when it hits the real world. Oct 12 '17 at 12:07

I would recommend labels if it is by any means possible. There are some nasty issues with hierarchical trees in my opinion:

  • Searching for items in a tree is problematic. The user would expect you to show only relevant results. But this leaves out important information, as to where in the hierarchy items belong.
  • To address this, you might want to display a subset of the tree with the direct ancestors of a highlighted item. This leads to a confusing search result, that asks users to filter out irrelevant information by them self.
  • If the tree becomes large, you might not want to load all items into the user interface at once. This is usually addressed using pagination. But for trees pagination is awful. Where do you break a page, and how do you indicate where the next page starts in relation to the hierarchy?
  • To reduce loading time, you might instead initially collapse some parts of the tree, but this again leads to confusing behavior when searching for items that might be in the collapsed parts of the tree. Furthermore, browsing for items becomes a pain, where the user needs to do a lot of clicking.

In a recent project I took part in, we initially had a tree when displaying an organizational hierarchy, and it turned out bad. We didn’t even have that many layers and users (about 100 user). We realized that something had to be done, so we went for a flat list with labels (like in a breadcrumb). None of our users wanted the old tree back when seeing the new list.

Keeping items in a flat list, is clearer, more flexible, and scales better to large numbers of items.


I've included an example from our prototype: enter image description here

The Chicago sales office could easily have more sub organisations on the next page. The relationship to their parent organisation would still be clear.

When searching, only relevant organisations would have to be shown: enter image description here

It is still obvious as to where in the hierarchy the search-results belong.

  • Bob, is that project you were referring to available public somewhere? Or are there other projects that are working similar to your own list view? I'd really like to see and example. Nov 29 '17 at 12:35
  • 1
    The project is unfortunately not public. I've included examples from our prototype. In our final version, with real graphics design, the relationsship between parent org and child org is more clear.
    – Simon Bob
    Dec 1 '17 at 10:44

I would recommend against mixing location and title in the same tree - even if Dept. Heads are directly tied to regions, per your example. Parent-Child relationships are difficult in large datasets when the data types are of similar sets. If you mix Title with Location in the same tree to allow visibility, you could potentially run into unnecessary complexity.

In role based permissioning, you are already creating a headache for gating the control of certain datasets. I would suggest two alternate methods that might help rethink the problem.

  1. Self-organizing Teams. This might be troublesome depending on the industry, but if you have the flexibility to let teams determine what their "turf" is, and then set certain users in Admin status to self-select which teams are important to them, you might free yourself of having the app control everything for you.
  2. Build a Truth Table. When you get into any situation where more than 2 booleans are vying for control, you should build out a long-form truth table of what values cause which interactions to prove true or false.
  • 2
    Hi Paul, could you give me example of a product which uses Truth Table example?
    – Akhil
    Dec 20 '16 at 13:54
  • The users themselves wouldn't use the truth table. It's a model for the product team that is useful when there are multi-variable dependencies. The last product that I used it for was in building a UI that changed depending on whether the values returned had specific information. For example: Valid status T/F. Valid count T/F. Valid data T/F. Valid link T/F. So depending on each of the four values from the service that were returned, there could be 24 different versions of the same UI.
    – Paul Gebel
    Jan 3 '17 at 15:31
  • @PaulGebel I'm curious about more details of the Truth Table example. Is this like a layered if-then-else statement in programming, with 24 possible endings?
    – IT Bear
    Feb 14 '17 at 4:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.