Journal



Recent Entries

Buzzkill
I’ve been struggling for days to put into words my reaction to the launch of Google Buzz. But the phrase I can’t get out of my head is “HOW could they screw up THIS MUCH?” Well here’s how: Google took Gmail, one of the most widely used web services on... (Continue)
Alternate dimensions
If you’re a typical designer working in the software world, the majority of products you’ll create will have strictly two dimensional interfaces — length & width only, pixels on the screen. As interfaces have evolved over the years many have gained a very simple kind of "depth": lighting effects, drop... (Continue)
An Insurgency of Quality
Dave Hussman, one of the leaders of the post-agile movement, recently hosted a one-day conference on the topic of “Redesigning Agility”, and invited me to give a plenary talk. The focus of the conference and my talk were how to integrate agile development with interaction design. I was very... (Continue)

Making pagination meaningful

by Chris Noessel on December 7, 2009

Working with long lists of information over a network, like web email, can be problematic. Very long lists can have a huge performance hit on your servers, leaving the user tapping her fingers waiting on slow page loads, especially on “very thin” clients like mobile devices. To limit the server hit and improve response times, some systems paginate data, that is, break it up into a series of pages.

This works well since most lists can be sorted by smart defaults, and the first page is the one that users most likely want to pay attention to, anyway. In the web email example, you can sort lists of individual emails by date with newest on top, or threads by most recent activity, and be confident that users will find what they’re most often looking for quickly.

But if a user needs to hunt for something, she’s going to need access to other pages, and this article is about how those controls should look and behave.

First, do no harm

The best solution to pagination: Eliminate the need for it. Have such a great search function that browsing the list is rendered moot. A frequent email user — for the sake of simplicity, let's call her "Elaine" — can provide a few clues to what she’s looking for and get to that email quickly. Not hunting required.

The second best solution is also no solution, that is, avoid pagination by presenting the information as a single long list. Apple does this with its MobileMe email.

mobileme_small.png

A single long list is conceptually simple and reduces the number of controls Elaine must understand and learn. To avoid the server hits implied by a long list, some tricky programming can load only the part of the page being looked at, plus a little of what’s just off screen, making it appear complete when it’s loaded as needed.

Second, reckon with reality

Not every development organization has the time or technology to implement phenomenal search and just-in-time scroll panes. Sometimes, pagination controls are unavoidable. Here’s a screen grab of the controls from Google’s Gmail interface.

gmail_controls.png

And another from Microsoft’s web based Outlook.

exchange_controls.png

These controls contain a number of elements.

  • Prior-page control (the left-facing triangle or “Newer”)
  • A “chunk” marker, that tells you what the control is about (“Page”)
  • “You are here” marker (the “1” or “1-50”)
  • A means to get to any arbitrary page in the list (the “1” is in a text entry box, Gmail lacks this)
  • A sense of the size of the whole list, “of 8”
  • A next-page control (the right-facing triangle, or “Older”)

Most of the items makes sense. Having the “next” and “prior” controls means easy navigation while browsing. Telling the user what they’re looking at and where they are helps with their confidence and wayfinding. But the use of numbers to indicate where you are in the list and the list size doesn’t make as much sense. Users have no idea on what page the item they’re looking for appears. If they had that kind of accuracy, they probably would be able to search instead of browse for it. How can we make these controls more meaningful? One way is to swap the numbers out for labels with more meaning.

week.png

By using time periods instead of numbers, Elaine can make more sense of the control. She can move to the page that represents her best guess of when she received the email she’s looking for.

One thing that this different type of pagination implies is that breaking the list into chunks shouldn’t happen per some arbitrarily-decided number. The controls should break the data at some meaningful mark, like a meaningful change in time, such as week or month. This requires some fancy algorithms server side, but it’s worth it to make Elaine’s browsing experience work.

While the time-based pages make sense if she’s thinking in terms of time, she might also be thinking in other terms. If she’s browsing for an email from her friend Robert, she might need to look and see whether he’s listed as “Bob” or “Bobby.” How to switch the control? Adding a dropdown would add to the clutter of the interface; it would also be pretty tough to label. A better solution would respect the current column sort of the page. If Elaine has sorted by name, then the pagination controls can automatically change to reflect this.

name.png

This same principle can work for any of the column sorts, even strange ones that we think people might not use that frequently, like size.

kb.png

In the end, it's all about revealing information to Elaine, and helping her find things according to the ways in which she thinks about them. Revealing meaning in the labels moves the organization of information away from the implementation model, and toward her own mental model.

Filed under: Interaction design, Interaction Patterns


Chris Noessel

Chris Noessel is a senior consultant at Cooper. His industry experience ranges from owning a small, museum-focused company in Houston to working with Microsoft's futures prototyping group in Seattle. For marchFIRST he was Director of Information Architecture, conducting research and design for notable web sites such as Apple, SEGA, and Harmon Kardon. He was one of the founding graduates of the Interaction Design Institute Ivrea. He teaches interaction design at the California College of the Arts.


More entries by Chris


Comments

On Dec 7, 2009, belgium said:

More and more people are leaving this way of pagination behind.
Examples might be YouTube comments or Twitter web pages.

Check out the Rob Conery post about how the new pagination is scrolling realtime (w/ jQuery!)
http://blog.wekeroad.com/2009/11/27/paging-records-sucks--use-jquery-to-scroll-just-in-time

On Feb 5, 2010, bill reith said:

"To limit the server hit and increase response times, some systems..." I think you meant to say "...and improve response time..." Increasing response time means you're taking longer!

(And yeah, I'm a computer performance guy...)

On Feb 8, 2010, Chris Noessel said:

Nice catch, bill. I shall edit.

 

Post a comment


Name

Email Address

Comments (Feel free to use basic HTML tags for style)

We're trying to advance the conversation, and we trust that you will, too. We'd rather not moderate, but we will remove any comments that are blatantly inflammatory or inappropriate. Let it fly, but keep it clean. Thanks.

To help filter spam, please enter the letter h here