Communication Tools

Hero image for Communication Tools

Chat Communication

Slack

Slack is the team’s primary tool for both internal and external chat communication.

Channels Structure

Internal Channels

The team has numerous channels:

  • *-chapter channels regroup all teammates belonging to each Chapter.

    Example: android-chapter, ios-chapter, product-chapter and web-chapter.

  • *-guild channels regroup all teammates interested in a specific technology or product.

    Example: elixir-guild, javascript-guild, notion-guild, etc.

  • *-corner channels regroup all teammates interested in a non-work related topic.

    Example: music-corner, reading-corner, sport-corner, etc.

News, cool articles or questions are welcome on these channels.

Project Channels

At a minimum, each project must have three primary channels:

  • <project-name>-squad to discuss all project matters between internal team members and external project stakeholders (the Client).

    Example: nimble-squad.

    This channel must be private and must include everyone involved in the project.

    The majority of all communications must happen here for transparency purposes and keep everyone in the loop, i.e., avoid one-on-one chats.

  • <project-name>-internal to discuss project matters between internal team members only.

    Example: nimble-internal.

    This channel must be private and include only Nimble’s team members.

  • <project-name>-activity to receive all third-party and monitoring tools notifications, such as CI, GitHub, Shortcut, LinearB, etc.

    Example: nimble-activity.

    This channel must be public as some third-party tools do not support sending notifications to private channels.

    Notifications are purposely separated from the other chat channels to (1) avoid interrupting conversations and (2) allow having different settings of email and app notifications.

    When working on a project comprising multiple developers, prefer to subscribe to the repository notifications in this channel. Below is an example of the Slack command for a repository hosted on GitHub:

    /github subscribe #{owner_name}/#{repo_name}
    

    Here is an example:

    /github subscribe nimblehq/cx-web
    

A project can also have the following optional channels depending on the squads’ size and needs:

  • <project-name>-dev-<platform> for developers to discuss technical project matters more often without interrupting the communication in the other project channels like internal or squad.

    Example: nimble-dev-android, nimble-dev-ios, nimble-dev-web.

    This channel must be private and only include the Engineering Lead, Team Lead, and developers for each platform.

    dev- channels are only required for projects with squads with two developers or more on each platform. For smaller squads, the internal and squad channels are sufficient.

  • <project-name>-leadership for the Engineering Lead(s) to support the Team Lead(s) in a non-intrusive way. Doing it in the internal or dev channels can bring a lot of noise to others and displace the Team Lead as the primary point of contact.

    This channel must be private and only include the Engineering Lead(s) and Team Leads.

Only the team members currently involved in the project have access to the client’s project channels. When team members are rotated out of a project, they are removed from the corresponding channels.

Channel Access Request

Many of our Slack channels are private, so a request must be sent in the channel #access-requests with the channel details.

Communication - Slack - Access Request

For all public channels, the built-in channel browser can be used to view the complete list of channels.

Asynchronous Communication

When using Slack for asynchronous communication, there are some basic rules to keep the exchange efficient and respectful of everyone’s time.

  • Do not tag people if their immediate attention is not required.
  • Favor long-form messages with a clear context and a detailed thought or question (several short messages, even in a thread, will be more disrupting and difficult to follow).
  • Clearly state that an immediate response is not required.
  • Explicitly mention a date by which you need to get a response.

Keybase

Keybase is our secondary tool for both internal and external chat communication.

As all communication is securely encrypted on Keybase, we primarily use it to send credentials such as username/passwords, API keys/secrets to our team members but also to external stakeholders.

Credentials are permanently stored on 1Password. So only resort to Keybase to send personal credentials that cannot be stored on 1Password.

Line

Line is our tertiary tool exclusively used for internal and out-of-office chat communication.

Video Calls

Google Meet is our primary tool for both internal and external video-based communication.

While Slack offers video calls, the team predominantly uses Google Meet for all internal meetings:

  • Sprint planning sessions.
  • Chapter retrospectives.
  • One-on-one feedback sessions.
  • All-hands sessions.
  • Direct calls between teammates.

When it comes to video calls with external parties, Google Meet is also always used when Nimble is the host. The main use cases are job interviews and client meetings.

However, the team often uses other tools such as Zoom or Microsoft Teams when the external party is the host for the calls. Therefore, our teammates must ensure to have these tools set up.

Email

Every teammate has a company email @nimblehq.co on Google Workspace. To maintain consistency between all email signatures, and to ensure that they all look good, we have designed an email signature template. Follow these steps to set up a signature:

  • Generate the signature at https://nimble-email-signature.herokuapp.com/
  • Select all (CMD+A) and copy it (CMD+C)
  • Open the Gmail web client.
  • Open the settings (⚙️ icon in the top right corner)

    Gmail settings

  • In the General tab, scroll down to the Signature section
  • Paste (CMD+V) the signature in the textarea

    Gmail signature setup