Navigating complexity
Maybe I'm just thinking out loud here. In the last post I mused about the complexity of striving for simplicity in design. For every effort to simplify, you discover you have made another user's life more complicated. Usability means several things.Tasks should be easy to learn, quick to complete, and hard to screw up. Data displays should be complete, uncluttered, and easy to comprehend. But even these straightforward goals can work against each other. Do we show less information on a page to make it easier to read, or do we show more, so users do not need to click or scroll? The jury is always out on this one - we once recieved an email asking us to use a larger font, allow more white space, and add several columns of information to a particular display. At the heart of the problem are the complex business requirements that organizations create. I've written before about the importance of weeding out needless complexity. But non-profit staff can only go so far in eliminating requirements from government, insurers, the board, and the ultimately the nature of their work itself. So the software designer's task is to mask or conceal this complexity. Here are some of the trade-offs I've run into as we work with our users to make software more usable.
It seems no design idea is a panacea. Each must be employed judiciously as users and developers navigate the seas of complexity. Labels: nptech, programming, usability |
Comments on "Navigating complexity"
I think you're right on here, most design is a matter of making the right tradeoffs. And it's worth saying, because sometimes clients (and colleagues) aren't thinking about what they're giving up when they push for a particular approach.
But I think there are often ways to reduce the downside. In several of your examples, if the "not simple" is a problem, it can be ameliorated somewhat by making the "simple" less strictly so.
For example, the last one on your list, enforcement. The "it's so strict I can't move on with my work, and I don't have the info it's demanding" is a real common problem. So a good compromise might be: rather than demand the data absolutely, the system can use messaging, reports & modeless feedback to make sure that users are aware of incompleteness, but let them move on for now and come back to it later. In an app I'm working on now, I use a checkbox-in-a-circle graphic to indicate when a record is complete, and an empty circle when it's not. Users can hover over the circle to get a tooltip detailing what's missing.
Same with context sensitivity: if disappearing elements are a problem, you could visually indicate them as disabled rather than removing them entirely.
I guess I'm just saying: in many instances there are ways to compromise.
Interesting stuff - lots of good things to think about here.
You might get a kick out of a little design book I wrote, titled The Simplicity Cycle. It's available as a free preview / download at http://www.lulu.com/browse/preview.php?fCID=877467
I describe it as a graphical exploration of the relationship between complexity, goodness and time. I'd love to hear what you think of it - hope you find it useful!