The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Design -- the virtue of consistency

Great column on design

I have another trade-off for you to deal with, kind of at the "meta" level: one issue to deal with when you design anything that has to live in an environment is consistency with the environment.

Let's say you have two designs for the same functionality. One is clearly better than the other for your application, people "get" it faster, etc... BUT it doesn't fit with the environment in which it is. What do you do? Do you go with consistent design or do you go with better design?

My exhibit (a) is those software windows that can be dragged around by clicking anywhere on the window, not just on the title bar. It's a brilliant idea! Why would anybody need to click on the top of something to move it around, when there are so many other areas where "clicking" is not associated to any action. And if you drag the window by mistake trying to click on something else, it's harmless to the application's functionality.

So let's say that I think this way of dragging windows around is a better design. But my problem is consistency with the existing interface. If I implement that for my application, then after playing with my app too much, out of reflex some users are going to start trying to drag other applications' windows by clicking anywhere, and it won't work, and they'll just be confused as to where they should click to drag a window now. So you probably want to go with "consistent" even if you think your design is "better", or else you will frustrate users.

My exhibit B is that you see folks like Cisco & co designing softphones, i.e. software replacements for reproducing the phone functionality on your desktop with VoIP. And those softphones feature graphical keypads--in fact, those softphones looks like your plastic phone on your screen. Who is ever going to dial a phone number by clicking buttons on that graphical keypad, when you have a full keyboard including numeric keypad on your PC? It's so slow! With all the richness of a PC's user interface, all they could come up with is a photo of the old phone?

There is an advantage, though, to this interface even though it is clearly not adapted to the PC. Consistency. People usually take long to learn how to do things like 3-way calling on their desk phones, and even more for anything more complex like call hunting, call parking etc. So instead of telling them "we've got this new great interface for your PC", you have the option of telling them "don't WORRY, it's EXACTLY the same as what you have".

It's not that people hate to learn and hate change and things that are new. But I think everybody hates having to RE-learn something just in order to be able do the SAME THING that you were doing before. "I know how to do conference calling on my old phone, just give me something that looks like the old phone 'cause I don't have time to learn how to do it with a menu."

What the importance of consistency entails is that you need to anticipate future needs and make your design extensible--because your later designs will have to be consistent with what you created in the first place. That's why if your first software version has very few features and you plan to add more later, you don't want to over-simplify the user interface. You need to plan ahead for the ways in which you will extend your UI later on to fit all the features "logically". Or else, either you will glue new functionality on the side and it won't be good design, or you will have to change the design radically and you will create a barrier for your loyal users.
B Send private email
Thursday, January 26, 2006
Great point.  You and Joel both hit it straight-on.

I'm one of those who have been programming since...well, since 1970 something, and when someone hears it I get asked to how to perform some technotask like how to copy home videos to dvd or connect wirelessly to the internet using their PDA.  It's a shame, but I've had to tell my own parents "I don't know how".  They said "If someone who works with computers doesn't know how, then how am I supposed to?".  I am guessing you've heard it too.

Your addition of consistency is a good one.  New technologies would be more easily and perhaps quickly accepted if there were a familiarness about them.  My first DVD player, all I wanted to do was push "play" and watch a movie (which I did).  But very quickly I hit a wrong button and had to go to the instructions, which started by introducing me to features I still don't use, like alternate view angles and multi-frame pause.  Who wants to see 9 frames of a movie when they press pause?  As Joel suggests, the first time I hit that button by accident, I was angry by the time I figured out how to undo it.

Good article.  Good blog.
Ron Anderson Send private email
Thursday, January 26, 2006
With respect to exhibit A (draggable windows), I'm not sure the example holds. There's a lot of blank space within the rendition of this forum within this browser window. I look at it and I instantly assume it's dead space, and safe to park my mouse over. Inadvertant clicks do nothing.

If I changed the behavior to match what you're suggesting, there's the possibility I may accidently click and drag, (or my cat jumps up on my mouse) and wind up nudging the window to the side a couple of pixels. If I was reading at the time, that slight movement would be extremely annoying.

To put it another way, I agree with the virtue of consistency, but I don't think you can blame the... non-adoption of exhibit A based on the need for uniform behavior.

FYI, I believe Apple's OS X allows you to drag the window by clicking and dragging any border - in contrast with Microsoft Windows which resizes the window. Which is better? I don't know... it really does depend on whether the application lends itself to resizing.

For example, a calculator application should be dragged around since you'd rarely want to see more "surface area." A web browser window on the other hand probably should resize by default. Unfortunately, allowing for both behaviors creates an inconsistency problem.
Thursday, January 26, 2006
TheDavid: the "click anywhere to move" feature would typically not apply to the browser window blank space itself because clicks there are being used for selection. In a browser, it would only apply to the toolbar, menu bar and status bar outside of menus.

I guess there are other issues with that feature, because you don't necessarily know which areas of the window are "active" ahead of time, so you may want to drag the window, click anywhere and find that you just pressed a button by mistake instead.

I would love to see Joel address consistency though. I'm sure he can put it in words much better than I could!
B Send private email
Thursday, January 26, 2006

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz