Sunday, January 3, 2010

Information Architecture

Information architecture (IA) is a relatively new field that is absolutely critical for building effective information systems. The best definition I can find for IA is from
The goal of Information Architecture is to improve information access, relevancy, and usefulness to a given audience, as well as improve the publishing entity's ability to maintain and develop the information over time

This definition is OK, but it seems to be heavily biased toward software user interfaces and web design. Most folks, if they think of IA, want to know which button should go here and which field should be next to which other field. While this is an obvious and important application of IA, it is the equivalent of worrying about the order of the words in the title of a book, but ignoring the other 200,000 words INSIDE the book.

As a person who working on projects that exist almost exclusively in the mind, a large part of my time is spent trying to get people to work from a shared mental model. THIS is the important part of IA, NOT which widget goes where on the screen. Of course, getting people to realize this requires you to first try to get people to work from a shared mental model... and so on...

As a short example, I spent some time last week discussing how we should implement a piece of our software. There were three people in the discussion, two were "on the same sheet of music" and I was off marching to the beat of my own drum. I was insisting that using a decorator to markup the outside of pages would make things easier for the front end developer (in this situation), but the front end developer and the back end developer where both in agreement that this was NOT helpful. Unfortunately, they disagreed on how to make the composition of the pages work in the way the front end guy really wanted.

In the course of the conversation, it became clear that the front-end guy was expressing his ideas assuming we understood the terminology and mechanics of how templates are implemented in Django and how he used that in the past. Because neither I nor the other developer present had used Django extensively, he wasn't making a whole lot of sense. After switching from words to pictures and some hand waving, we started to break through to the fundamental idea.

The problem is that each of us were hung up on irrelevant details and not seeing through the problem to the core solution. In addition, there was no good way for us to comprehend each other's frame of reference to understand what mental model we used to arrive at our position.

While the definition above does address some of this, I propose a better definition for IA:

Information architecture is the art and science of designing and sharing mental models.

No comments: