beautiful technology

Slack Productivity Principles Mar 06 2018

Slack chat has taken over the working world over the last few years. Many organizations allowed it in the door without really thinking through the consequences of embracing realtime group chat.

Early adopters—especially remote teams—started using Slack because it actually delivered on the promise of the prior generation of tools—these teams assumed what was wrong with the their earlier chat systems was that they weren’t engaging enough; that notifications weren’t effective, that group chats didn’t work effectively, that they weren’t user friendly enough, etc. Once these folks started singing Slack’s praises, social proof kicked in; all your friends were getting shit done with this amazing new mode of communicating online. Many of them weren’t even using offices anymore. The trial was free, and anybody on your team could set up the domain.

Unfortunately, the problems with realtime group chat are invisible in the trial phase. It’s only after everyone has started favoring it that unread notifications are suddenly overwhelming; that conversations and sub-conversations spiral out of control; that notifications start to follow you to lunch, pop up on the drive home, or interrupt dinner with the family. Suddenly the thing that was supposed to save us from email is taking more time than email ever did. The workday devolves into one continuous meeting.

Despite its flaws, abandoning Slack is not realistic for most organizations. In many ways it actually is better than email. It’s the most effective way to organize certain kinds of discussions. I can’t imagine running a remote team without Slack or a similar group chat app.

So the question isn’t whether or not to use group chat, but how. The rest of this essay will outline the principles I’ve developed to make the most of Slack at Culture Foundry.

Honor “Deep” Work

Cal Newport’s Deep Work is required reading for understanding the value and danger of tools like Slack. Briefly, this boils down to:

  1. Technological advance is eliminating a need for humans to do “shallow” work, which means “deep” work is becoming increasingly valued.
  2. Technology has also provided tools for communication which are faster, richer and more rewarding to the “lizard” part of your brain. These conspire to make modern communication more distracting.
  3. Distraction is antithetical to Deep Work.
  4. Success—both for companies and individuals—depends on finding a way to facilitate deep work while minimizing distractions and their effects.

The Deep Work book covers a personal perspective. The author’s interview with Ezra Klein covers the organizational angle. Slack is specifically mentioned as an anti-pattern. Alternatives like structured communication flows are also discussed. A must read and a must listen.

Avoid Synchronicity

Not the Police album—it’s great—we’re talking about synchronous communication (where you spontaneously ask me a question, and I answer in real-time). After reading Deep Work and listening to the podcast, this should be obvious, but this kind of unstructured, synchronous communication is the least effective way to get things done.

  • If I was doing deep work, I am no longer
  • If I had a plan for my day, you’ve changed it
  • In addition to the time it takes to respond to you, I’ll pay an additional 23 minutes during which I’ll be unable to focus on my prior task

Those are just the direct effects. The indirect, longer-term effects are worse:

  • It rewards a lack of planning
  • It disincentivizes learning (why learn something when the answer is a question away)
  • It disincentivizes documentation (see: Slack is the opposite of organizational memory for more.
  • It limits knowledge to the parties involved. Those not “in the room” don’t even get a chance to learn the information, and those in the room, but offline will absorb it without context.

And finally, synchronous communication is problematic because its usually unstructured.

Efficient, successful, teams master their business processes by learning and designing systems around the structure that underlies their business.

They find ways to put the right information in front of the right people at the right time in ways that aren’t disruptive to the doing of the work itself.

Use Channels to Limit Unwanted Notifications

Channels are a key function that makes Slack superior to email. Take some time to understand the wisdom of “channelizing” communication, and avoid treating Slack like “fast email”.

Channels bound discussion to a particular topic and audience. Frustration with Slack can sometimes be traced to poorly organized channels. Consider whether a narrower or broader topic or a different audience would support communication better, and create a new channel to support it. In the interest of brainstorming, here are some potential channel names that reflect patterns used in other companies:

  • Areas of interest (e.g. #competitors, #web-site-ideas)
  • Severity channels (e.g. #incidents, #emergencies)
  • Client sub-channels (e.g. #acme-chat and #acme-server-alerts)
  • Micro-project channels (e.g. #acme-launch-day)

With well-defined channels, every user can decide whether they want to be “in” that channel, and then further define how they want to receive notifications for it.

Also consider that channels provide implicit context. In the #acme channel, the phrase “this week’s meeting,” is all you need to say, and everyone will know you’re talking about the recurring Thursday meeting with Acme Corp at 11am.

Finally, channels provide a permanent, chronological record on a particular topic. Be aware of this in your communication:

When replying to a question, use the Threads feature to keep your response linked to the original message. Don’t “cross-talk” against other intermediate messages.

Use the /me feature to insert date-stamped status updates the team should be aware of (e.g. /me is now working on the rocket ship feature). This carries a subtle cue that you’re not looking for feedback or a response, just FYI-ing the team about something. David Marquet’s describes this as the “thinking out loud” pattern in Turn the Ship Around!—where it helped save lives on submarines.

Embrace Brevity

Slack provides a small text entry box which encourages brevity. Unlike in memos, emails, or docs, these short messages encourage collaborative conversation.

Don’t abuse the text entry area by copy-pasting email text or the raw text of a web page. Link or excerpt instead. Keep messages focused. For example, consider the post:

What do you think about the home page design? And I think the About Us Page sucks.

It’s the start of 2 separate threads. At a minimum make them two separate posts so that people can respond in a separate thread off of each. Or… you could post about the home page, and let that discussion run its course before bringing up the About Us page. Even better, consider moving those to two separate tasks in your project management tool and soliciting feedback there.

Use Channel Topics to Track Project Status

Every channel in Slack has a status message which is available at a glance at any time.

In a consulting environment with client channels, this can be an excellent place to indicate the status of the demo environment:

“Acme Staging: owned by Josh: Facebook Share Feature.”

When a developer needs to know if it’s OK to overwrite the staging database or do a new deployment, they know who to ask and what to ask them about without triggering an entire-channel notification.

Be Cautious With Private Messages

Treat a private message with the same care you would use when approaching a colleague’s office door. If they’re not actively chatting in a public room, consider the door closed. Is what you’re asking urgent and important enough to interrupt their work, regardless of what they’re currently doing? If not… don’t use a private message. and avoid @tagging them in a #channel, which is just as likely to interrupt them (depending on their notification settings).

On the other hand, if they are actively chatting in another channel, sending them a private message is like flagging them down in the hall. Much less likely to derail their immediate focus, but still likely to monopolize their time.

Realize that if your company had perfected a structured communication system, you would never need to use synchronous private messages. Each time you use a one, consider how that request and response could be represented in an asynchronous tool. Are you asking something that could be a special JIRA status and assigned to the person you’re asking? Try to find ways to allow your message to arrive at their attention when they are prepared for it.

Understand Slack’s Notification Hierarchy

Slack messages in order of increasing shoutiness:

  1. Just posting a message. People will see it when they see it. They’ll respond as time permits. This should always be your default.
  2. @here sends a notifications to only the members in the current channel who are online right now. This is by far the friendliest and preferred way to ping a channel, as it doesn’t disturb people who aren’t working right now. If you need an immediate response from a channel member, but don’t want to interrupt someone’s lunch to get it, use this.
  3. @username sends a notification to that individual user, whether they are online right now or not. This should be used when you need them to respond right now and you want the communication to be public. Please take care when using it. If they are offline they’ll be interrupted wherever they are by an email or mobile notification.
  4. @channel sends a notification all members of the current channel, whether they are online or not right now. All of the cautions of @username apply, multiplied by the total number of members in the channel.
  5. @all and @everyone send a notification all Slack members in all channels, whether they are online or not. The message option of last resort.

Customize Your Mobile Notification and Do Not Disturb Settings

Configure your mobile device so that you are alerted to urgent issues during business hours. Slack’s automatic “Do Not Disturb” feature allows automatic disabling of those alerts after hours. Set it appropriate to your time zone. Click Cmd-, on a Mac, or open your Slack preferences to configure.

You can also configure your global and channel specific notification settings here:

Use Snooze Notifications While Doing Deep Work

Different than Do Not Disturb, this feature lets you temporarily disable your notifications. You’ll receive no alert for a certain timeframe, but they’ll all be queued up for delivery when your snooze ends.

People who attempt to private message you will be notified that you are snoozing notifications and that delivery of their message will be delayed.

Understand Presence Indicators

Next to each person’s name in your sidebar is a presence indicator. There are 3 states you should be aware of:

  • A filled circle indicates the person is currently online on at least one device.
  • A filled circle with a superscript “z” indicates they are online, but are either snoozing notifications or in Do Not Disturb mode.
  • An empty circle indicates the person is currently offline. Be aware that they will receive a push notification to their phone if you private message them or @user-tag them.

Always check these indicators before sending a private message or @user-tagging the person. Be especially aware when you are triggering a notification to someone who is currently offline, but not in Do Not Disturb mode. Are they at a doctor appointment? Do you really want to beep their phone right now?

Leverage Reactions For Simple Responses or Votes

Reactions keep channel output compact and keep history scannable.

When seeking simple feedback, consider suggesting reactions rather than asking open-ended questions (e.g. “React with 👍 or 👎 to cast your vote”).

NOTE: If you use a highly democratic process and vote a lot, install a dedicated voting plugin. Most companies can just use reactions.

Slack shows a numeric indicator next to the reaction emoji for each person who used it. You can use the Shift-Cmd-\ shortcut on a Mac to bring up the reaction picker.

Format Messages to Improve Scanability

Someday, you’ll need to read your channel history to remember a previous conversation. Your future self will the time you put into making messages well-formatted and scannable.

Slack’s message formatting options are fairly complete.

Slack doesn’t provide a way to link to something using anything other than the URL itself as a link. With certain services (including Trello) that use excessively-long URLs, pasting these URLs into Slack messages can generate excessive noise that makes comprehension difficult.

If your service provides alternative URLs, use them.

The #random Channel

The digital water cooler or break room. Make sure you turn off all notifications for this channel. Its core purpose is for having fun and creating a sense of belonging.

The #general Channel

If #random is the break room, the #general channel is your lobby. Keep in mind when posting that the audience in this channel is the entire company.

Avoid starting client or project-specific discussions here because it takes them out of the sequential history that a dedicated channel provides.

Even urgent issues and emergencies should be scoped to a client-specific channel for this reason. Questions like Is this a regression? can be much more easily answered in a channel that has context about the last deploy and recent code changes.

Be cautious with opening a 1-on-1 discussion by @tagging someone in #general. In real life this would be like walking to the middle of a cubicle room and yelling for someone to come have a loud conversation there with you for all to hear. Probably not the effect you’re intending….

Here are some examples of good fodder for #general:

  • Out-of-office schedule updates (e.g. “I’m on vacation on Thursday and Friday”)
  • Discussions about process (e.g. “I propose we cut the Ready for Dev limit in half. What do you all think?”)
  • Site launch announcements (site-specific, but the whole point is to make sure the whole company knows)
  • Changes to company policies
  • Industry news which affects the whole team (post links to articles you think everyone needs to read in #general. The rest should go in #random).