Tab mayhem and windows inflation
How many browser tabs are open on your browser right now? Too many to count? Let me guess: Rows and rows of tabs belonging to different research tasks that you want to pick up later. The occasional tab on social network. That store you still have a cart open with that thing you maybe want to buy. Some are still relevant but many are not.
The tab mayhem is such a widespread phenomenon that there is a range of extensions for managing it around it. It even has inspired memes. The problem is not confined to browsers, though. Most of us make use of many different applications regularly. Personally, I do not seem to get anything done without using at least one terminal window. I just started working on this post, but I already opened multiple editor windows, some browser tabs and a Mind-map application. Many windows, but all dedicated to the same task. It starts getting tricky for me when I have to context switch throughout the day, jumping from one task to the other and not always being able to finish all of them before picking up another.
Let's go through a hypothetical start of a day: While you start by catching up on last night's email, you probably pick up some research task that gets you your first dozen or so browser tabs. While you are researching you get notified about a meeting you need to attend. Opening up the agenda and video chat tool adds to the window count. After the meeting, you like to do some follow-up, but you are interrupted by a chat message of a colleague who needs support, and therefore you need to fire up an editor and some more browser tabs.
Frequent context changes are not desirable but they are also the reality for many of us. Each of those contexts leaves a trail of opened applications and adds tabs to the browser window.
After each context switch, one starts to sift through windows and tabs to find the right one for the task at hand. Can you close this browser window? Better not! One of those tabs could have information you still need or an edit still not saved. But on the other hand, you do need a bit of memory back, as the system is starting to lag. So you go through those tabs one by one. Sadly one of those tabs has Twitter opened up and so you lose a few minutes to mindless feed scrolling until you get back on your task. But wait a minute! What was the task again? Maybe it is better to take a break…
You get the idea. It is not a coincidence that many of us end up with such a mess: It is not like anyone purposefully constructs clutter to sabotage themselves. But the windows and tabs keep on growing and so does the psychological baggage they come with (Can I really close these gazillion tabs? Maybe there is something in there that is still important?) and the weight they put on your computer in the form of memory and processing power consumed.
Wrenches to wrenches
There is more than one desktop to sort out the mess: Windows has desktops. Mac OS has spaces. Popular window managers under Linux have had this feature for ages. My favorite window manager (i3) calls them workspaces. So that is how I will call them from now on meaning all implementations of them. The i3 user guide of even comes with an idea on how to use them:
A common paradigm is to put the web browser on one workspace, communication applications (mutt, irssi, …) on another one,[..]
This is a very intuitive approach: Wrenches to wrenches, hammers to hammers. Ordering things in categories comes very naturally to us, so why not organize your digital tools like your physical toolbox?
The problem with this approach: It requires a lot of workspace switching for a given task that needs different tools (for me, that is virtually all of them): And in those workspaces you go through a lot of windows and tabs because you do not need any tab - you need the one about with the documentation for the specific API call you are working on. So what is needed is not switching to a specific category of tools, but to switch to a set of tools needed for a particular task at hand.
Working in contexts
There is another way to work with workspaces. Like the last approach, we know it well from your physical surroundings: We do not shower in the kitchen, sleep in the bathroom or cook in the bedroom. Each room has its function and can be designed in a way to support it. This is an aspect that makes the home office hard for many people: If you cannot find some dedicated space for work in your home, your work environment is full of cues for diversion: Working in the bedroom? Suddenly the urge for a nap is irresistible or, worse, you cannot stop thinking about work while you try to get to sleep! Working in the kitchen? How about just another snack right now?
This is why buildings have rooms that support different contexts: working, sleeping, leisure, cooking, and so on. Things start to get messy really quickly, if this is not possible (every one room apartment I lived in was chaotic most of the time) or not respected (e. g. kids making the whole house or flat their playground).
This worked well for ages and with workspaces you can apply it to your digital environment as well. For some time I thought I came up with this (rather obvious approach) myself, as nobody around me was using it. But in working on this post it occurred to me, that I read about it many years ago in the Productive Programmer:
"When I have a discrete task upon which I need to work, I launch the applications I need for it and move them all to a single desktop. That way, I can work on the project in isolation from all the other stuff that’s also running on my machine. In fact, this chapter is being written on Desktop 2 as I type!"
Working in this way has the many advantages:
Cheaper context switches
Easy and quick cleanup
Keeping track of tasks under work (aka WiP)
Having only relevant windows in a workspace minimizes diversions. As James Clear writes in Atomic Habits:
Given that we are more dependent on vision than on any other sense, it should come as no surprise that visual cues are the greatest catalyst of our behavior. For this reason, a small change in what you see can lead to a big shift in what you do. As a result, you can imagine how important it is to live and work in environments that are filled with productive cues and devoid of unproductive ones.
The other part that helps with focus is that there is a lot less friction working in one workspace with only the relevant applications. It also makes it clear what one is working on: If you start switching workspaces a lot, that means that you are switching contexts a lot. Switching the workspaces makes it pretty obvious what's happening and provides the possibility to counteract.
Cheaper context switches
Though too many context switches are harmful I think it is a good idea to make them cheap: Unblocking a coworker is probably more valuable than ignoring him so you can avoid the distraction. When your kid cries while you are working from home it is your responsibility to check on it. So while we could ideally focus on our work all the time without interruptions: If that is not the case your life circumstances are pretty standard. Another reason for context switches in my day to day routine are long running processes. For example if I kick off an update of a database cluster in AWS, I then have to take a look at the progress and keep an eye out for unwanted side effects from time to time. But actively waiting for the process would be very boring and quite unproductive.
So context switches are unavoidable for many of us, so they should be cheap: Teammate wants me to take a look at something? New desktop and all the windows go there. While we chat there is a production outage: So there is a new workspace for all the graphs and logs to check on it. I do not have to feel anxious about forgetting the tasks I postponed for the moment, because all the workspaces are still there to remind me of them. At the end of the work day, I go through the remaining workspaces and make sure that there are no more open loops that need to be closed before calling it a day.
It is also clear what I am not doing at the moment, which makes it easier for me to prioritize what's next. I think this is what David Allen meant by writing:
Working like this also shows you how many tasks you are working on. i3 by default gives you ten workspaces. If you even come close to using them all it's certainly time to finish some before starting something new, as there is already too much work in progress. Kanban makes Wip transparent for a team which is quite useful. This workflow does it for you on an individual level, so you can react when your plate gets too full.
Easy and quick cleanup
Once a task is done nuking anything in the corresponding workspace is a no-brainer and for me personal a very satisfying activity. It is like checking off a Todo on your list. I do not have to sift through the applications to possibly salvage something. All windows were part of a finished task. So I can close up all those applications freeing resources on my computer and in my brain.
Technical barriers to working in contexts
Working in contexts like this is a habit that is easy to get into, but only if the environment is favorable to it. Sadly this is not the case for all software out there: Window managers provide the basic mechanism but desktop and web applications have to play along.
Window manager support
As stated at the beginning of this article: All major operating systems support workspaces. While for macOS and Windows users the window manager is an indivisible part of the operating system, Linux users can choose from dozens of different options. Coming from one of these options (i3) I found the Mac OS X support lacking in a lot of areas. There are a lot of tools to customize window management under Mac OS X, nothing brought me even close to the ergonomics of i3 though. But if you like the mouse a lot, then you are probably fine. I have not used Windows consistently for a decade now, so I cannot make a qualified assessment of its support, other than there seems to be some.
Desktop Apps with one window policy
Some applications insist on just providing one and only one window. This seems to be especially true for software built on Electron. The most popular applications in this category that I had to deal with until now are Slack and Teams. Being communication tools they are part of virtually every task in a remote work environment, which makes the technical limitation of only one window especially annoying. Luckily both provide a web version which I use instead of the fat clients, which is a good workaround for this restriction. But what if you need to log in to different accounts in the same web application?
I never used different Slack or Teams accounts at the same time, but as many AWS users, I jump from account to account in the Web Console quite often. For every account switch that means logging out and logging in, which is quite annoying, to say the least. Switching to private browser windows does not help, as it gives you only one more login per browser, plus you probably experience side effects like not having the plugin support as in normal mode.
If you read up to this point I hope there was something in here for you to take away. Maybe you even want to give workspaces a spin! I hope you have fun with that! If you like to drop me a line on twitter or elsewhere and tell me how it went.