March 15th, 2009
Something I’ve been preaching for years, to any software developer who’ll listen, is: don’t use a tree view control in the user interface if your users are not highly technical and there’s another way of allowing the user to do the thing they actually want to do (which there usually is if you put some thought into it).
So I was delighted to hear Jeff Atwood and Joel Spolsky’s views on the Stack Overflow Podcast #45:
Atwood: … programmers love hierarchy, to a degree that they don’t even understand how different they are than the public in this regard. Like they love putting everything in this little bucket, that goes in this little bucket, which is this sub-bucket of this and this, and normal people hate that. And threading is totally a manifestation of that and it drives me crazy that a lot of programmers can’t see that they’re like immediately like: "Oh, threading is good. I love threading. What are you talking about?" You know? They can’t see it at all.
Spolsky: Right, right.
Atwood: It’s like myopia.
Spolsky: Yeh. I mean it’s really a function of the size of the group, and one thing I’ve learned through years and years of usability testing is that anything that smacks of a hierarchy or a tree is not going to be understandable to the average, non-technical user.
Spolsky: You just have to learn that: if it’s a tree, or a hierarchy, like eighty per cent of the regular people are going to get confused and not quite get it.
Hierarchies are great at showing nested relationships, and they make sense to programmers, who are used to them – but most of the time the relationships don’t matter to the user. Usually the user just wants to find something and yet the tree view forces them to “drill down”, clicking down into a hierarchy that becomes increasingly complex as they click.
My request to all programmers placed in the position of having to design a user interface: avoid hierarchies unless you truly believe the end users really need the hierarchical information.