Hero image for Communication

Building great software products requires extensive and efficient communication across the team. Explaining ideas, providing insightful comments in pull requests or getting clarifications on user stories are part of the every-day life of every team member and all require great communication.

High Level Principles

  • Always express yourself in an articulate way.
  • Use a confident and clear voice to make sure everyone can hear you.
  • Don’t use sarcasm. Be objective and constructive.
  • Provide context to what you want to convey. Providing background information on the topic or issue at hand can go a long way to bring people at the level of knowledge you need them to be to understand you.
  • Make it personal. Always use a photo as avatar to present yourself as a person, it makes communication more human.
  • Use emoji, animated gifs, or humor when appropriate. These forms of communication can help to convey an emotion, but don’t force them.
  • Expect online communication to be asynchronous most of the time. Repeated interruptions are not encouraged as every team member must be able to focus on their task. Therefore, when you need for feedback, it’s critical to plan in advance.


When we do not speak in person, we rely on a few tools.


Slack is our primary tool for both internal and external communication.

  • Each project has three dedicated channels to which only the team members involved in the project are invited along with the external stakeholders (The Client):
    • A private channel to discuss all project matters between team members (internal) and with the external project stakeholders. Most communication *must- happen there for transparency purposes. This channel is named <project-name>-squad.
    • A private channel to discuss internal project matters between team members only. This channel is also used to receive monitoring tools notifications (e.g. Sentry, Fabric). This channel is named <project-name>-internal.
    • A public channel to receive all third party notifications e.g. CI, CVS, project management… Notifications are purposely separated from the other chat channel to 1) avoid interrupting conversations and 2) allow having different settings of email and app notifications. This channel is always named <project-name>-activity. When working on a project comprising multiple developers, prefer to subscribe to the Github repository in this channel with the following Slack command:
          /github subscribe #{owner_name}:#{repo_name}
           # eg. /github subscribe nimblehq/cx-web
  • Chapter-based private channels regroups all teammates interested in each stack e.g. android-chapter, ios-chapter, product-chapter and web-chapter. Tech news, cool articles or technical questions are welcome in these channels.
  • Almost all channels are private, so you need to request an invitation from the other teammates.


Keybase is our secondary tool for both internal and external 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 Vault.


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


Skype is only used for 1) weekly calls with the external project stakeholders and 2) candidate interviews.