The Limits of the Multiple-Window Paradigm
The multiple-window user interface paradigm that we all know and love was invented at Xerox Parc. Both Apple and Microsoft used it in their products and now every computer user in the world lives it and breaths it.
More recently, there was the rise in popularity of the tab-based user interface. In particular, every major browser now supports tabbed browsing. To me, this indicates that the multiple-window paradigm isn't working well. In particular, it just doesn't scale when there are many open windows. Let's back up: it's not the having of the windows themselves that don't scale, the OS is happy to open as many windows as you want
but it's you who don't scale. Human beings can only hold a maximum of 7 things in their head at any one time.
Strategies for Taming Many Windows
When you have lots of application windows open at the same time. What are some strategies for making sense of them?
Alt-Tab and Cmd-Tab
On Windows, the Alt-Tab keyboard shortcut cycles through all of your opened app windows on Windows. On Mac, there's the Cmd-Tab shortcut, which rather cycles through all of your opened applications; then the Cmd-` shortcut cycles through all your windows within the current application. In practice, Alt-Tab or Cmd-Tab switching only works well if you are switching between 2 or 3 windows at most. Also, both of these implementations appear to be inadequate for power users for there exists the Alt-Tab Replacement Task Switcher for Windows and Witch for Mac.
Taskbar and the Dock
On Windows XP, the Taskbar lists all opened application windows and lets you switch between the windows with a click. If there are too many of them, similar windows will be grouped into one - clicking on the item will slide out a list from where you can choose from within the group. In Windows 7, there's a new interface which I have only seen, not used, so I won't comment.
On Mac, there's the Dock. In contrast to the Taskbar, the Dock does not show all open windows. Instead it lists the currently opened applications as well as the currently minimized application windows. Neither the Dock or Taskbar scale up well when there's a large number of windows.
On Mac, there's something called Exposé, which is yet another indication that neither the Dock or Cmd-Tab are cutting it
Exposé shows all your open application windows on the screen by scaling them down to the point that they can all by laid out side by side together in a sort of mosaic. You can click one of the thumbnails in the mosaic to switch to it. Exposé works well up to a point, but if you have too many windows open
you won't be able to make out which is which because the size of each window in Exposé will too small to read.
So, we have seen three strategies for handling many windows, but not one of them is up to the task.
At this point in time, all major web browsers have a tab-based interface. I don't know when exactly tabs first came into the scene. I want to say it was popularized by Firefox, let's pretend that it was. I am not entirely convinced that they are better than multiple-windows, but they seem to have taken over as the standard for web browsers and even text-editors and IDEs. These are some ways in which tabs may be superior than windows
- Switching between tabs is easier because all tabs are readily readable and available at the top, whereas windows can easily occlude each other and although the Windows Taskbar has a similar function as tabs, it can easily fill up to the point of unmanageable if you have many application/windows open.
- Tabs live within the space of that window only, isolating them from other applications and windows. You could take advantage of this to better organize your stuff or just to have a clean slate to work with despite the other mess lying on your computer.
Tab is the New Window
It is not uncommon nowadays to see people having more than 10 tabs open in their browser. My typical usage pattern is this: I usually start out with one or two tabs that are opened all the time, such as my todo list and email; then as I need to research something or am distracted by a link I'll add new tabs to the mix. This continues until I have too many tabs(my threshold is about 10 or so), at which point I decide to either create a new window and start over again or clean up the existing tabs. If I go for the tab clean up, I will go through each one, decide whether it's save-worthy, save to a bookmarking service if so, or close the tab if not.
It is as if I need to do periodic garbage collection as part of my web browsing experience. This. Is. Not. Okay.
People even less disciplined than myself do tab cleanups less frequently than I, and they come to rely on the state of the browser. If the browser crashed and lost its state, they would get upset, because they'd lost track of their work. The fact that most browsers now also restore their states across restarts helps them, but also further perpetuates this behavior.
Tabs may or may not be a improvement to multiple windows, but they do not scale either.
Multiple Windows and Tabs are Overrated
So if there's no way to work effectively with many windows or tabs, what is a user to do? Reduce, reduce, reduce. Most of the time, multiple windows and tabs are just not necessary. Some evidence of this are
- many non-tech-savvy computer users - who don't even know about tabs - maximize their windows by default
- smart phones and tablets of today don't have multiple windows and people - both tech-savvy and non-tech-savvy - find them usable
- overlapping windows might look cool, but are pretty much useless
The only time when multiple windows are necessary is when you have a complex task at hand. We will talk about that a little later.
Why We Need So Much Stuff Open
Why do we - the computer users of today - have the tendency to open up an abundance of windows and tabs? Here is me trying to explain
- slow start of applications: might as well leave them running so that we don't have to wait for them to start the next time around.
- some apps just run in the background because they have to constantly check for or be notified by external events and react to them(chat apps, twitter, facebook, calendar reminders, mail notifiers, etc).
- non-linear nature of thought processes: thoughts can easily change direction, either because of external events(a phone call, a Facebook reply, someone walking into your office) or internal events(a great new super-duper awesome idea).
- sometimes, to efficiently perform a particular task, you simply have to switch rapidly between a small number of windows. For example, you are writing a program and you have constantly switch between your editor and some terminals from which you compile your code, run your code, debug your code, and so forth.
I'll go into more detail about each of these as well as strategies to counter them so that you don't have to go insane.
Slow Start of Applications
There is no escaping the fact that when an application is already in memory, it will start faster because to start it from scratch will mean reading from the disk, which is way slower than reading from memory. Furthermore, when you close the application, you usually lose the application state. So if you restart the program you'd have to start over: for example, re-opening files or projects or a re-navigating the app in a specific way. For these reasons, many people opt to just leave applications open even after they are done using them - this will allow them to switch back to the application more quickly should they ever need to use it again. In my experience, however, application start times have improved greatly in recent years both due to better hardware and better written software, so app start time is now much less of a problem than before. Many applications even restore to their previous state on startup (ex. Firefox, Chrome, Textmate), so the problem with application state is mitigated as well.
Some applications are simply designed to sit around indefinitely and alert you whenever they feel like it. An instant messaging application is one such application - it waits for incoming messages, and alerts you when it happens. There's nothing really you can do about these applications being open other to stop using them altogether - for some apps, this is not a bad idea at all. My recommendation is to use these applications very judiciously. For alert-based applications such as GMail and GCalendar Notifier, make sure you set it up so that only the events that truly deserve your attention trigger alerts. As an example, I personally have mail alerts disabled, but the inbox number displays in my menu bar so I can check it when I want to. Another example is, if you use Growl(Mac only) for notifications, you can configure which applications you allow alerts to come from.
Non-linear Nature of Thought Processes and Stacks
People's minds wander around constantly, this is what makes us creative and adaptive. However, it also makes us unfocused and scatterbrained. If you allow yourself to mindlessly wander to wherever you please, you won't get anything done. Furthermore, it's been shown that focusing on what you are doing directly increases your happiness
(for more on that, you want to read Flow: the psychology of optimal experience
). So, although thoughts tend to be non-linear, you want to establish some form of structure so as to prevent it from going astray. A logical solution is a stack. You first start with a top-level task; if there is something else you need to do - a subtask(research an API), or just a general digression(check twitter) - you push that task onto the stack; when you are done with the subtask on the top of the stack, pop the stack and return to the previous task. Neither the tab-based UI or the multiple-window paradigm directly supports this stack
mode of operation that I've described. What that means is you are going to have to be disciplined and always close the window or tab behind you when you are done with a subtask.
Rapid Switching and Registers
There are certainly times you find yourself in a situation where you have to constantly switch between two or three overlapping windows. In contrast to the stack, I will call this mode of operation the registers mode of operation, because like registers in a CPU, you have to access a small number of things very frequently. If the windows in your "register" are overlapping, you could be in a sea of hurt because when the content of a large area of your screen completely changes, it takes a second or two to orient yourself to the new content. When you are switching windows rapidly, those one or two seconds really add up.
You can greatly ease the pain by tiling the windows in a non-overlapping way. A prime example of this is the IDE. Most IDEs divide the available real estate up into tiles, which allows you to see all the pieces of information all the time. Another example is a graphics editor - which includes a tool bar, a tool options panel, a layers panel, the image to be edited, and more. These two examples indicate that the register mode of operation is often needed for highly complex tasks. Note: when you are using one application that satisfies all your needs, you don't need multiple windows anymore. It's only when you don't have an application specifically built for your task that you need to use the window tiling strategy.
Previously, we made the assumption that you only have a small number of windows in your register. What if there are more than a few windows you need to switch between? Again, people can only hold about 7 things in their head, so you are not likely going to work well with a large number of windows anyway. But, if by chance you are a genius and can handle it, you can get a bigger monitor or use more monitors like Trader Mike.
Experiment to Try
I've said some bold things: am I full of bull? You can test it out yourself. Try this experiment
- Never leave any more than one browser tab or browser window open
- Only leave open the applications that you are currently using. When you are done with a task, close out any applications that you are no longer using.
Do this for a minimun of 48 hours on regular work days and see if you are missing anything. At first, this may take some getting used to, here are some tips to smooth out some rough edges
- If you are using applications that can restore their state, configure them to do so.
- Many advanced web applications(like GMail) can restore their previous state as well and work perfectly with the back button - so there's no reason for you to have to leave them open all the time.
- If you need a reminder to return to something, rather than leaving a tab or window open, use a todo list. If you don't have a todo list app that you already use, you can just use a text editor. You should be able to open and close this todo list quickly.
- If you can afford to, stop using applications which take a long time to start or do not restore their previous state.
If it doesn't work, I'll give you your money back. That's right, I'll pay you back in entirety the amount of money that you paid me, no questions asked ;) Happy working!