Learn how Fission models its work and communication style on the distributed systems we help build and support.


Fission is a Canadian company but has been fully remote since its inception. Our team of talented Fissioneers is distributed across 7 countries and 5 continents. While remote work arrangements have been popular amongst tech companies for a long time, it goes deeper than that for Fission. We are not only a distributed company, we are a distributed systems company! Our work focuses on building tools for IPFS, a protocol and peer to peer network. WNFS and eventually Dialog and IPVM would not be possible without distributed systems.

It's interesting how our company structure mirrors the work we do. In fact, computer programmer Melvin Conway remarked on this very phenomenon:

"Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure." - Melvin Conway

Conway's Law, as it has come to be known, basically says that a company's complex products will inevitably end up being shaped like the system they are designed within or for.

The Benefits of Async Communication

As a company that hires colleagues across time zones and countries, async communication is vitally important to us. It wouldn't be sustainable if we asked a colleague in Asia to join a meeting or be available mid-day U.S. Eastern time. And we'd much rather hire the right person for the job than the person that was fine but available. And there are so many other benefits to async communication, including an increasing employee agency, alleviating stress and supporting mental health, and boosting efficiency.  

Discord

There are several methods and tools that we use to work efficiently in a fully remote/distributed company. A forum is an excellent tool for async communication, and we'll share more on how we utilize Discourse for our Talk forum in a future post in this series.

So why then, are we talking about Discord today? Discord offers many benefits, and we've developed some unique techniques for using it in a more asynchronous way. For those unfamiliar, Discord is a text, voice, and video communication platform. It started out as a popular place for gamers to connect and stream their adventures, and today it has become a popular place for building and nurturing communities with 150 million monthly active users.

Fission's Discord server has two main functions - to serve our developer community, and to serve our internal community. We love being able to flex between chats with colleagues to adding to discussions or answering questions from our developer community while using one tool! We have channels for "start-here" and "server-guidelines" to help give all members their footing, and then it expands from there, with channel topics ranging from distributed systems to identity and auth to owning your data.

Today we'll put the spotlight on how we're leveraging Discord and the ways we've made it a powerful async tool for our team.

#Stand-Up-Down Channel

Discord uses channels to organize topics, and categories to organize those channels. One channel we use every day is #stand-up-down. This is where we share what we're working on that day. Most of us track our to-do lists using our own methods, but the purpose of sharing our daily tasks here comes down to transparency and accountability.

Transparently sharing what we're working on gives other Fissioneers some insight into what we have on our plates. It also often sparks helpful comments from other team members. For example, if I post that I'm going to do outreach for a particular project, a team member might comment that they can introduce me to a specific person directly.

Accountability to ourselves and to our team members is also very important. It removes the need to ask team members for updates because we share them directly in the channel. Managers can see at a glance what their whole team is working on that day, which can help them plan projects accordingly.

We also like to share how we're feeling by using a traffic light system - a green emoji means you're doing great, yellow means you're not quite feeling like yourself, and red is a heads-up that you're struggling and may need some additional patience or understanding from others.

For example, if a colleague just travelled 12 hours and changed multiple planes, cars, trains, and time zones to get to where they were going, they'll likely be feeling jetlagged and exhausted the next day. When this is the case, a colleague can post a yellow or red emoji. This usually signals they need extra time to rest/recover, so perhaps expect some delays in responses or changes to their work schedule in the meantime.

An example of a "stand up" post

Throughout the day colleagues will check off tasks they've completed or note which to-do's are getting pushed. We may also share a "stand down" message where we give an update on what was completed or provide additional notes if we feel it would be helpful to add more context.

Monologue Channels

One Fission Discord invention people outside the company love to learn more about is our monologue channels. Every person who is part of the team gets their own channel. These channels act like our virtual desks. Colleagues can swing by and have a chat, or drop a note if the owner is away. This is particularly useful in bringing something to a person’s attention without pushing a notification, which is really important in an asynchronous environment when we are being mindful of our colleague's timezones.

Monologue channels are a space for people to think out loud, let others know if they are AFK for an appointment, etc. (A note on AFK - At Fission we encourage breaks and don't require colleagues to signal when they're going for lunch, back from lunch, taking a walk to reset, etc. We like to give everyone the space to complete their work without feeling pressured to give constant updates.)

Since they are visible to all team members, sometimes one person will see a link or note that someone else has shared in a person's monologue channel, and join in on the conversation (similar to any other channel in the server). We call these "monologue parties". 🥳 This can turn out to be very helpful, because sometimes others have additional insight that you didn't know to ask for!

A snippet of our monologue channels. We also choose emojis to represent us.

If you want to ask your co-worker a question that is a bit more time-sensitive, you can mention them by typing @ followed by their handle. We've found this much more helpful than back and forth emails.

Department Categories

We have loosely defined departments characterized by the different projects our talented Fissioneers are working on. Organizing these channels under department categories makes them easier to find when we are searching for certain info or want to pose a question to several team members at once/whoever sees it first without notifying them all individually.

For example, we have a category that houses our marketing, operations, design, and events channels all in one place. Since marketing helps with events and operations helps with marketing and so on, it acts as a mini home base for team members within the larger server.

We have many channels in our server, and we never want a colleague to feel like they need to keep up with every conversation. Department categories allow us to introduce hierarchy into the server. This, combined with a special "internal" channel, helps alleviate information overload.


These are a few strategies we've used to help us work more intuitively in a decentralized and distributed company. Do you work remotely? Have there been any activities or tools that you've found helpful? Share them in our #distributed-remote-work Discord channel or use the "distributed-working" tag in Discourse. We'd love to hear from you!