JavaRanch Home    
This page:         last edited 19 September 2012         What's Changed?         Edit

Interface Designers Rule1   

Rule Number One for User Interface Designers: It's not yours!

Domain specific versions:

For Web Developers: It's not your browser!

You don't understand this rule if you're asking:

  • How can I prevent the user from closing the browser?
  • How can I close the user's browser when they leave my page?
  • How can maximize, F11, or otherwise resize the browser window from within my page?
  • How can I change the browser settings?
  • How can I save a file to the user's machine from my web app?
  • How can open an application on the user's desktop from my web application?
  • How can I read a file on the user's machine from my web application?
  • How can I read cookies set by other applications from my web app?
  • How can I disable or modify the "right-click" context menu?

For Command Line Developers: It's not your console!

You don't understand this rule if you're asking:

  • How do I clear the console when my program is run?
  • How can I close the console when my program finishes running?

For Desktop Developers: It's not your desktop!

You don't understand this rule if you're asking:

  • How do I close other applications when someone starts up the one I'm writing?
  • How do disable the minimize, maximize, and close buttons in the title bar of my application?
  • How do I hide the users task bar from my application
  • How can I force the user's machine to shut down from within my application?
  • How can I change the screen resolution of the user's machine to better suite my application?
  • How can I force my application's window to stay on top of all other windows?

What I (meaning the end user) expect

As an end user, I don't expect the applications that I'm using or the websites that I'm visiting to alter the state of my machine or the layout of my desktop; at least not without them specifically asking me for permission.

My browser is mine, not yours, it's none of your business what other sites are running in other tabs or windows. It's also not your business to know what sites I've visited before going to yours or what sites I plan to visit after visiting yours.

My application/browser's window size is the size that I set it to be. It's that size because I want it to be that size. It's not your place to decide that it should be a different size. If your application can not render properly in the window as I've sized it, I'll choose to either resize my window or stop using your application.

The back button is under my control and my control alone. It gives me the option of backing out of your site and following a breadcrumb trail to other sites I've visited. You have no right to take this capability away from me. If you try to, you will annoy me. Interface designers should try as hard as they can NOT to annoy their application's users. If my clicking the back button causes your app to double post forms or malfunction in some other way then you don't understand how to write a web application. Reaching outside of the sandbox given to your application by my browser to disable browser features is not a fix for this. Learn how to write an application and leave my browser alone.

You (meaning your application) are a guest

The first computers were expensive and rare. Only certain people were given access to them. In those days a user was treated like a guest. The computer would welcome them with a friendly greeting but it was the programmer's job to control all the parameters and to insure that the application restricted users to only those things to which they needed access. The program, as far as the user was concerned, was the computer and the computer was the host. The user was the guest.

In this age of personal computing and the internet, that relationship has been turned around. Your application is a guest on the user's machine and should behave accordingly. You, as a guest, wouldn't go into someone else's house and re-arrange their furniture or rifle through their file cabinets. You wouldn't take things or leave things behind without an expressed agreement between you and your host.

Think of your application as a guest that should behave no differently than you would if you were invited into someone else's house and you will be well on your way to understanding Rule Number One.

JavaRanchContact us — Copyright © 1998-2014 Paul Wheaton