Strategies for Dealing With E-mail

Recent posts
What Factors Explain the Nature of Software?
Some Reflections on Writing Unix Daemons
Faster Shell Startup With Shell Switching
Choosing What To Read
Debugging A Failing Hotkey
How Often Should We Sharpen Our Tools?
Four Kinds of Optimisation
Minor Advances in Knowledge Are Still a Worthwhile Goal
How Hard is it to Adapt a Memory Allocator to CHERI?
"Programming" and "Programmers" Mean Different Things to Different People

Blog archive

E-mail is one of the most useful tools that most of us use - more important than the web for most people. And yet the world of e-mail seems to be split into two extremes: people who receive very little e-mail, and people who receive so much e-mail that they develop a siege mentality. There seems to be surprisingly few people who fit into what, one would imagine, should be the sizeable gap between these two poles. For many people in the latter category, the only solution appears to be to ignore - willfully or otherwise - e-mail coming in, replying only to those that scream urgency.

For one reason or another, I receive quite a bit of e-mail - not as much as a few people I’ve heard of, but certainly enough. As time has gone by I have developed a few simple techniques that mean that I very rarely feel that my e-mail has got the better of me. Much of what I’m going to say here is not that surprising, but there are a couple of things that I think might be of interest.

My first point is that e-mail is very hard to read “flat”. That is, many people I see have all the e-mail they receive delivered straight into their main inbox. This guarantees doom. Typically one gets all sorts of e-mails: private e-mails, work e-mails, mailing list e-mails, professional e-mails and so on. As I suspect most other people do, I read these different types of e-mails in different mental “modes”: I don’t respond to work e-mails in the same manner that I reply to private e-mails, for example. Context switching is a difficult thing to do in general, and I am particularly bad at it; it can take me several seconds to move to the appropriate mode when moving from a work e-mail to a private e-mail which, when multiplied, by many e-mails can be a significant time soak. Having observed many other people who read their e-mail “flat”, it’s clear to me that it’s not just me who finds this type of context switching - this is, to put it mildly, an unproductive and highly intimidating way of reading e-mail.

All e-mail system have a folder feature whereby e-mails can be sorted into folders. As my e-mails are delivered to my system, they are automatically put into appropriate folders, one for each notional “subject” (e.g. one per mailing list, one per job function etc.); those e-mails which can’t be automatically filed are dumped into my main inbox folder. I happen to use procmail for this on my server - it’s an awful bit of software, but it just about does what I need it to. For most people the default filtering facility in programs like Thunderbird is perfectly adequate. When I open my e-mail program up, my e-mails are already sorted into related groups which I batch read, thus lowering the context switching cost to near zero.

Getting the number of folders right can be a bit tricky - too many seems to be worse than having too few. This also leads me to an important observation: folders are only useful if e-mails are in them before you read them. I see a lot of people read an e-mail and then carefully file it in a folder; while this fulfills a deep internal need to housetidy, it’s counterproductive. I’ve seen far too many people say “I’ll find that e-mail” and then have to look in 7 different folders because they’re not sure which one they’ve filed it in. On modern e-mail programs there is no problem having tens of thousands of e-mails in a folder, so it’s important to resist the urge to file for filings sake. The only reason I file e-mails into a different folder than the one they were automatically placed in is if the automatic filter (for whatever reason) wasn’t able to do its job.

The other main strategy I use for e-mails is unusual. I’m sure that nearly everyone has, at some point, tried to put off whatever task they should be working on by pressing the “get mail” button, and then being grateful when a new e-mail appears to distract them from the task at hand. So some time back I changed my e-mail collection program (of which more later) so that it has two modes of e-mail retrieval: “full” and “quick”. In “full” mode it collects mail from all of my folders. In “quick” mode it only downloads new e-mail for the most important subset of folders. I use “full” mode only once a day, first thing in the morning, and it downloads a frightening amount of e-mail. After that I use only “quick” mode, meaning that not only can I not distract myself with unimportant e-mail throughout the day, but that important e-mails get instant priority.

My little hack has had one unexpected side benefit: it has decreased context switching costs even further. The reason is simple: in the morning when I download reams of e-mail, I sometimes find a mailing list has had 100 messages in 24 hours. If I’d read those messages as they were posted, I’d have spent a lot of time switching to “read mailing list” mode and back again. But because there’s 100 messages in one folder, I can run them through them at a rate of knots, reading only the messages I’m most interested in. Often only a couple of messages per day on any given mailing list will be of genuine interest, but it takes me less than 2 or 3 minutes to process the whole batch. The amount of time this has saved me when reading e-mails is quite astonishing: I read perhaps 80% of my e-mails in a concentrated block, and in quick order, at the beginning of the day, and am rarely distracted by e-mail subsequently.

The only possible snag is how to make ones e-mail program have “full” and “quick” modes. For reasons that those of you who know me will no doubt snigger at, I use a command-line e-mail collection program called OfflineIMAP. Because it’s written in Python, one can do all sorts of weird customisations to it. My particular hack is based on the fact that OfflineIMAP ignores command line arguments it doesn’t understand. So if I invoke it like this:

offlineimap -o quick

It downloads my e-mail once (the built-in -o switch) in “quick” mode. In my ~/ I have the following (elided from the original for obvious reasons):

def folder_filter(foldername):

  if "quick" in sys.argv:
    return foldername not in ["INBOX.bugtraq", "INBOX.openbsd-arm",
      "INBOX.openbsd-misc", "INBOX.openbsd-ports",
      "INBOX.openbsd-tech", "INBOX.spam", "INBOX.Trash"]
    return 1

In other words, when the word “quick” is in the command line arguments, it explictly doesn’t download e-mail for the above mail folders. Note that it’s important to specifically exclude folders rather than to explicitly include them, since it’s easy to add a new folder and forget to download it. This way, one has to explicitly mark a folder as being of lesser priority.

I have no idea what the anaology of this simple little hack is in other mail programs such as Thunderbird, although I’m sure it can be done one way or another. All I can say is that it has increased not only my e-mail productivity, but also my overall productivity - a win win situation!

Newer 2006-06-26 08:00 Older
If you’d like updates on new blog posts: follow me on Mastodon or Twitter; or subscribe to the RSS feed; or subscribe to email updates:


(used only to verify your comment: it is not displayed)