Where Nav Meets Taxonomy
I had a great session at work recently massaging a general taxonomy to be navigable. Hunched over wireframes and a hierarchical view of the taxonomy with a programmer, business analyst, and manager we were all able to communicate and understand the issues.
This is an important area of IA that is getting to be more like science and less like art. Personally, I still think bottom-up design sucks when used for navigation. The idea that you can, say, create a taxonomy without knowing who will use it or how is just ridiculous, and the more different users and users you apply to it the more its usefulness is diluted; the effect is proportional.
For example, a hierarchical taxonomy may not be balanced (an equal number of children for each parent), it may be deeper in some places than others. This may make it difficult to pull the data out and put it into a standard template (which is the advantage of having the info organized that way ahead of time), ending up with some pages that have too little content and others which have too much. With the philosophy that the UI is designed for the users' needs, it's the taxonomy that is the problem here.
Depending on the labels, leaf nodes may not be findable from the top of the tree (can someone look at the top-level category and 'smell' what's a few levels down?). If we have this problem, we might start collapsing some levels. Then we look to see if this results in pages that are too long and balance the levels and the size of the pages: the taxonomy dance. But our information isn't static, and we can't always predict how the taxonomy and the information inside it will change.
That said, sometimes you have an underlying structure like a hierarchical taxonomy and need to stick a user interface on it. When this happens it's best to have a layer of abstraction between the two so that the UI can serve the needs of the user. The layer of abstraction might just be very clever database queries. But this assumes the database is modeled to allow a flexible UI, for example, not hard coding hierarchical associations. I still haven't arrived at the point of a method we can follow when doing this, it'll take collaboration with a database programmer to do so.
Later...I had asked "can someone look at the top-level category and 'smell' what's a few levels down?" That's important for directed search, where you may be looking for grandchildren. It's not as important for exploratory browsing: If you can smell the children categories under each parent, you can gradually work down the generations.