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 permanent channels:
-
*-chapter
channels regroup all teammates belonging to each Chapter.Example:
android-chapter
,ios-chapter
,product-chapter
, andweb-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 or cool articles and questions are welcome on these channels.
The team also has numerous ephemeral channels to manage internal activities:
-
initiative-<initiative-name>
to regroup all teammates involved in a specific internal initiative.Example:
initiative-code-map-visualization-tool
,initiative-kmm-guide
, etc. -
ic-<stack>-<developer>
to regroup all teammates involved in a specific training activity.Example:
ic-ruby-john
,ic-elixir-karl
,ic-flutter-michael-harry
, etc.
These channels are created and archived at the start and end of each activity.
Project Channels
At a minimum, each project must have four 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.
-
<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 notifications from all third-party development-related tools, 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
-
<project-name>-alerts
to receive notifications from all third-party application, error, and uptime monitoring tools, such as AppSignal, and incident management platforms, such as Splunk On-Call.Example:
nimble-alerts
.Incident alerts must be separate from other types of notifications to ensure the team can quickly identify and react to them.
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 likeinternal
orsquad
.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.
-
<project-name>-leadership
for the Engineering Lead(s) to support the Team Lead(s) in a non-intrusive way. Doing it in theinternal
ordev
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.
Channel Access Request
As several Slack channels are private, so a request must be sent in the channel #access-requests
with the channel details.
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 disruptive and difficult to follow).
- Clearly state that an immediate response is not required.
- Explicitly mention a date by which a response is required.
Line
Line is the tertiary tool exclusively used for internal and out-of-office chat communication.
Video Calls
Google Meet is the team’s 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.
Regarding 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, teammates must ensure to have these tools set up.