Friday, January 21, 2011

fighting inbox clutter

For my current client, I'm spending an inordinate amount of time reading e-mail just to keep up with what's going on in the project--inordinate, I think, because I've never gotten this much mail in any other work environment. This e-mail comes from a culture of copying everyone on the most trivial messages; another is the habit to send e-mails instead of stopping by someone's desk, calling, or sending an IM--all of which are superior in most contexts because they're synchronous. As I've mentioned on Twitter (@adhondt), I've tried sending no messages--but there are definitely situations that e-mail and its asynchronous communication is better--for example, for sending and accepting meeting invites. Yet whenever I respond to an e-mail, I find it spawns more e-mail--someone inevitably responds to my message--so I've decided the most effective way to fight inbox clutter is to send fewer notes. It's been hard for me to remember, sometimes, not to reply to messages someone sends me--so I've configured some Outlook macros to remind me. I also added a line to my signature:
* Fight inbox clutter. The total number of messages I sent today (instead of closing the loop with a visit, a phone call, or an IM) is indicated at the end of the subject line as (sent / quota). 
My quota, admittedly a constant in the code, is 10 messages/invites per day--and though there are days I exceed it, I think it's my average.  I've also made this a public quest, explaining to people each time I follow up synchronously to an e-mail, that I'm stopping by because I think a conversation is a quicker way to resolve the issue than to respond with another e-mail.
We're using Outlook 2007, so I set up this VBA macro to remind me about my quotas. Tell me if you use it!

'About: D. André Dhondt, 
Dim WithEvents loadedMail As MailItem

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Cancel = canAvoidEmail()
End Sub

Private Function canAvoidEmail() As Boolean
    Dim areYouSure As String
    areYouSure = "You've already sent " & countSentMessages() & " messages today. " & _
        "Are you sure a visit, a call, or an IM wouldn't resolve this? Click OK to send."
    canAvoidEmail = (MsgBox(areYouSure, vbOKCancel) = vbCancel)
End Function

Private Function countSentMessages() As Integer
 Dim sent As Outlook.MAPIFolder

 Set sent = GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail)
 countSentMessages = sent.Items.Restrict("[SentOn] > '" & Format(Date, "ddddd h:nn AMPM") & "'").Count
End Function

Private Sub Application_ItemLoad(ByVal Item As Object)
  If TypeName(Item) = "MailItem" Then
    Set loadedMail = Item
  End If
End Sub

Private Sub loadedMail_Open(Cancel As Boolean)
  If loadedMail.sent = False Then
    loadedMail.Subject = loadedMail.Subject & " (" & 1 + countSentMessages & "/10)*"
  End If
End Sub


Fred Stluka said...

Yeah, but don't trade inbox clutter for forcing interruptions on everyone else. Consider whether it is more efficient for the team for you to send an e-mail and wait for a reply than to interrupt a co-worker in the middle of a deep train of thought. His context switch and possible lost context could be very expensive, revealing itself as a software bug later.

D. André Dhondt said...

True, this may impact personal productivity--but what about team productivity? Through retrospectives, my teams have concluded that interruptions are fine--as long as we have a protocol for asking if it's OK to interrupt. Normally a quick "can you talk?" doesn't pull someone out of the "zone", and having a way to interrupt is good for team productivity.