Octopus Deploy is a remote-first company. We have a geographically distributed team, with folks in different locations and different timezones, often with very little overlap. We can't make all decisions and leave all of our important communication to in-person or in Zoom meetings - it simply wouldn't work.
When we say we're remote-first, it means we default to modes of communication that work well in a geographically distributed, multi-time zone environment. That typically means working asynchronously on things, writing a document and circulating it, and allowing time for people in different places to consider and discuss.
This section outlines the communication tools that we use most, and some tips for effective communication within Octopus.
For better or worse, Slack is the heart of our communication. Although our teams are in different timezones, most teams are centralized in one or two timezones, so chat and realtime communication is a great way for those teams to discuss ideas or organize work.
Slack can be a firehose, and if you try to read everything that 100+ people are posting every day, you'd get nothing done. You have an obligation to control how you use Slack.
Slack is organized into channels. Each channel has a purpose and an intended audience in mind. Some are general purpose but assume most people are in them, some are completely optional and made up only of folks who care about a topic, and others are team or project-based. You can also use Slack to directly chat to an individual or group of people.
Here's a list of Slack channels that everybody should join, or consider joining. The ones in bold are required, the rest are optional, but good suggestions.
Company-wide announcements, like TL;DR starting, good or bad news, etc. If you're away for a few days, take time to read everything here.
General company-wide news. If you happen to miss something because you're away, it's not a big deal.
You need help and you don't know who to ask or where to send something. Start here - we promise to help.
What customers are telling us.
What customers are saying about us on Twitter.
Good news and praise for teammates.
We're about to break something that might affect you
Many teams post a status update weekly here.
A picture tells a thousand words. Photos or screenshots only. Great way to celebrate a small win.
Use the Channel browser in Slack to find other channels you might want to join. As a guide, we've tried to stick to some naming conventions:
#topic-... - for people who care about a topic, like marketing, performance, security, competition
#team-... - a home for a team. Only join if you're in the team or work really closely with them, or need to tell them something.
#project-... - short-term work on a specific project
#feed-... - bots and automated messages. E.g., feed-sales is a good way to see when an order is placed by a customer.
#fun-... - for hobbies and other interests
There are also channels for things like certain cities (#brisbane, #melbourne), and many teams have private channels too.
Your manager and buddy will invite you to the channels they think you should join, and you're welcome to join any other channels you find.
Slack can be incredibly distracting, and if you aren't careful, it can ruin your productivity.
The "fear of missing out" is real. Many channels have dozens of people, most of whom don't need to be there, and get distracted when a message is posted, but feel a need to watch the channel "just-in-case".
Slack can also ruin your focus. You're half-way through writing up that great idea, or figuring out the cause of that bug, when "ding" a message from Slack knocks your focus out. Take steps to control your notifications, leave channels (
/leave), use the do-not-disturb features (
/dnd), and sign out of Slack when you're focussing on something.
It’s easy to get overwhelmed by noise if you join too many channels. From time to time, review the channels that you’re a member of, and if you find any that aren’t providing value to you, make liberal use of the /mute and /leave commands.
We want to avoid situations where a decision gets made without being communicated to everyone that cares about the topic. Slack is a firehose, so do not assume that decisions mentioned in Slack have been read and agreed to by everyone in the channel.
If you need to ensure that someone has read a message, ask for confirmation explicitly, take note of emoji reactions, or use an alternative medium, like a video call. Talk to your team about expectations here.
In Slack, you can send a message directly to a person (direct message, or DM), or to a channel which has multiple people. We use a mix of public channels, where anyone can follow, and private channels, which are invite-only.
Direct messages are great for:
Giving a person timely feedback (better still, jump on a Zoom call)
Sensitive, intimate subjects
Some teams prefer to use private channels for internal coordination. Because they can limit who is on the channel, they are able to be more candid and talk more openly within the group setting. Private channels cannot be made public later.
Public channels are a good default approach for a number of reasons. You’ll be able to invite others to join the conversation if necessary, and others who happen to overhear the conversation may be able to learn from it or contribute to it. This may happen in real-time, or asynchronously. After the conversation, you’ll have a searchable and linkable history.
Even if your message is initially targeted at a specific person, you can post it in a public channel and tag them using the @mention feature to notify them. If they happen to be away, or not know the answer, someone else might choose to jump in and assist instead.
“Public” also doesn’t necessarily mean “all Octopus employees reading every thread in that channel”. If you’ve chosen an appropriate channel for your message, you should assume that the people who have chosen to be in that channel are interested in having the option to read the thread that you started.
Sometimes people feel nervous about posting in channels with lots of members. They might instead DM their question to someone they trust. Use your judgment and do what feels right to you. If you'd prefer to ask somebody a question directly in a DM without an audience, that's okay, there are times when we'd all prefer to ask one or two people than the whole team. Just realize that you’ll get a faster and likely more accurate response if you feel comfortable putting your question in front of a channel rather than a single person, who might be away, or not have the answer you seek.
Your team will be able to help you find the right channel for your message. If you’re completely lost, you can always head to #help-me and someone will point you in the right direction.
For video chat with customers and staff, we use Zoom. Just sign into Zoom with your @octopus.com Google account. As you'll see in the next section, the quality of your audio will make a huge difference to your Zoom calls, so make sure you're set up well.
Being able to write well, with purpose and clarity, and in a way that's easy and compelling to read, is a skill that everyone at Octopus should try to learn. We use documents a lot:
To propose a change to a process
To pitch an idea
To summarize what we learned from something
Usually, these are Google Docs documents, as they're easy to share and comment on. But the tool you use, and the template or fonts you use, isn't that important. If you've got an idea or you want to influence something at Octopus, create a document and start writing and sharing.
When everyone works remotely, your teammates have no clue what you're up to, or whether you're stuck, or if you need help. They won't know unless you tell them.
There's no such thing as too much communication in a company like Octopus. If you feel like you're over-communicating, you probably aren't.
Now, you don't need to post a Slack message every time you step away from the keyboard, or to feed your dog (but you can share dog photos). And we don't need an hourly status update. But there's some key times you should think about communicating:
Let people know when you're stuck on something. Even if you don't need any help and you're confident you can solve it. Share it anyway. You don't want to spend half a day trying to figure out why the spline reticulator isn't working, just to learn that Shannon intentionally turned it off yesterday for maintenance.
Let people know when you start work on something new. Maybe someone is actively doing something similar in that space or knows of something coming up that may affect you. Maybe they'd like to help.
Let people know your plan. As you figure out how you're going to do something, share it. If you spend all week going in the wrong direction, it sucks for everyone - you'll have wasted your time, and your team will feel bad telling you that you missed something important. Even if your plan is perfect, by sharing it, you'll get some thumbs-up, and you can proceed more confidently (and probably faster than if you had any nagging doubt.)
Share a summary of your day or your goals for the day. Maybe you worked on something that someone else is really interested in, or maybe something's taking longer than you planned.
As a rule of thumb, if you've spent more than a few hours stuck on something, or more than a day without letting people know what you're up to, you may not be communicating enough. And it can lead to a downward spiral.