Taming Slack

Slack logo Photo by Scott Webb on Unsplash

Digit is a Slack-only company. While we use email for automated alerts and GitHub emails, nearly all of our communication happens on Slack. We’re north of 100 employees, and without proper usage, Slack can get incredibly noisy and distracting.

While one may be tempted to blame Slack, the root of the problem is human communication – communication volume grows quadratically with the growth of a community. Organizational hierarchies are one solution to this problem: they impose a tree-like communication structure that, in theory, dampens the volume of communication. However, deeply hierarchical organizations have other issues, resulting in modern companies trying to be “flat.” In a flat, trusting, information-should-be-free company, there are lots of messages floating around.

Using Slack in such an environment gives rise to some common anti-patterns:

  1. Missed messages. Important messages that need a response get buried in a sea of business-as-usual stuff. To ensure that everyone reads important messages, people start using @here and @channel
  2. Channel disorganization. Lots of channels, lots of messages. Nobody knows the “right” channel to post or follow a particular message. So people post to the most convenient channel, often breaking a team’s flow or causing problem #1.
  3. Interwoven threads. We commonly have more than one conversation going on at any time in one channel. Because each message is a top-level object, multiple conversations get woven together, making one stream challenging to follow.
  4. No inbox zero. For people (like me) who like to clear their queues, Slack can be challenging. Where do you store messages that you want to get to later?

Not all of these problems are specific to Slack. We’ve certainly seen variants of all of these with email. Email has had a more extended timeframe for people to build tooling around it and specialize to suit their needs. Slack is relatively new – and so we have a greater need to develop conventions from scratch.

Here are some of the things that have worked to help tame Slack, divided into team-related conventions and personal workflow.

Team Practices

1. Have a channel naming convention

Channels in Slack are free and can explode. Channel names should signify a channel’s purpose. Names help people understand where to post things without having to read through all the channel’s content. For example, #engineering-fyi, #product-fyi, #release-fyi, and other #-fyi channels are meant for important information about a particular topic. They are generally low volume, but when you see something pop up, it’s probably critical. #savings-team, #onboarding-team, and other #-team channels, on the other hand, are for everyday team conversations. High volume, a mix of business and banter, generally not intended for people who are not on the team (but we keep them public, more on that later.) Some channels (e.g. #feedback) have specific conventions associated with them and automated bots to help run these channels. “How to run a triage channel” is an excellent example of a triage channel, which we implemented using a custom slack bot.

2. Encourage threaded replies

For high-volume channels, a conversation can become difficult to follow if messages are interspersed. Essential conversations can get lost or be left incomplete while being hard to follow for interested parties. This problem is more acute in broad channels than DMs or small groups. Using threaded replies solves this problem – however, getting everyone to use threaded replies is challenging. We use a cute :shame: emoji to gently remind people to use threaded replies – it works well, and people laugh at the inevitable slip-ups.

3. Ban @here and @channel

@mentions can be incredibly distracting because they notify people in most circumstances. @channel and @here take this distraction to a new level by notifying everyone in a channel; when used in a broad channel, like #fyi can essentially notify the entire company. There are certain rare occasions when breaking through peoples’ filters is necessary: @channel we're shutting down the office because of covid-19. In most cases, however, using these notification mechanisms is rude and should be avoided. It assumes that people don’t read their Slack messages or that whatever you’re posting is important enough that they need to look at it now. @here makes very little sense in a distributed, remote world – but teams tend to use it as a sort of lightweight @channel, as if notifying the people who happen to be working right now is okay, but notifying others is not. There are circumstances where these make sense: @here I'm locked out, can someone please open the door but other than that, these should be banned.

4. Discourage group DMs

How many times have you started a “quick message” between a few colleagues as a group DM, which has subsequently escalated into an entire meaningful conversation, which needs some more people … and you’re stuck. Because Slack doesn’t allow expanding group DMs (come on, Slack folks!) There is a solution - it’s free and easy – it’s called a channel. Just convert group DMs into a private channel as soon as possible. We encourage people to start public channels for brief discussions with a naming convention - #tmp-something-something - and archive it once complete. Group DMs aren’t indexed well either and generally suck. Channels are free; use them.

5. Post in the right channel, cross-post for visibility

Often, we don’t know where we should post a particular message. Not knowing is okay – we post in a broad channel and ask or take our best guess. Have a little emoji to indicate that you should probably ask the question in a different channel: we use :polite-racoon:. Sometimes, a message is important enough for a few related channels. We post the message to the most appropriate channel in such cases and share it (Slack s) to other channels.

6. Setup emoji conventions

Slack doesn’t let people know you’ve read their message or taken care of something: a vexing problem when, for example, delegating something to someone. We use the 👀 :eyes: emoji to indicate that we’ve read something, ✅ :white_check_mark: to suggest that something has been taken care of. Some channels have even more specific emoji conventions in use, but people broadly understand these two across the company. When we have a call to action, we post a message similar to Please do this task and ✅ this when you've done it. – this helps us keep track of who’s done something, and we can follow up accordingly.

Personal Tips

Team tips are great to help the whole team use Slack in the same way. To achieve productivity zen, you need to combine these with ways to manage your unread queues and reach inbox zero.

1. Use /mute liberally

Lots of channels mean lots of messages. Everyone wants to be in the loop on everything, but the reality is, much like world news, most of it doesn’t affect you daily. To get some control over information overload (so you’re not just reading slack messages all day), you can do two things: leave irrelevant channels or mute them. I prefer to mute them to read them at my leisure, without affecting my unread count or showing up in my Unread section.

2. Use /remind or Save to keep your GTD flow

There are two GTD flows that I’ve seen people use (or some mix of both): Remind and Save. Remind essentially takes a message and asks Slack to bring it back as unread in some time: similar to Gmail’s snooze feature (itself of Inbox fame.) The Slack command is /remind.

The alternative is to use a queue and clear it every morning and evening (or whatever cadence suits you.) Clearing queues is my preferred approach – I use Save or hotkey `a’ when reading my messages – to keep track of things I need to get back to.

3. Use scheduled posts for after-hours posting

While we operate on mostly west coast hours, we’re split all over the world. Moreover, we all have different working schedules – with my family, I sign out starting around 5 pm but am incredibly productive between 9 pm - 1 am (a combination of my night owl-ness and my family sleeping peacefully.) However, sending people tons of slack messages at midnight is … not good. It can come across as a poor work flex (look at how hard I’m working), and it doesn’t work: you’re not going to get replies in the middle of the night anyway. So use scheduled posting (🙏🏽🙏🏽🙏🏽 Slack for finally shipping this) to post at more reasonable hours. Alternately, I queue up some drafts and fire them off first thing in the morning.

4. Use Notify me for threaded conversations

Sometimes you’ll see a fascinating topic, but you’ll lose out on the subsequent conversation because your team uses threads. Instead of chiming in with a Following or similar message, you can hit the ⠇ button on the thread and ask Slack to notify you of future updates. Now everything shows up in your threaded list and is easy to clear, like any other queue.

5. Quickly read through All Unreads and Threads

Both of these help me go through all incoming messages rapidly and clear my queues. When I find myself consistently thumbing through a particular channel without responding to it, I mute it.

6. Organize channels by topic

Slack launched custom sections to allow creating folders for channel organization. Folders let me manage my channels by topic, such as “team,” or “recruiting,” or “engineering.”

I hope these tips are helpful. If there are other things you or your organization do to make Slack usage more effective, I’d love to know - please drop me an email or DM.

Thanks to David Kossnick for thoughtful suggestions and edits.