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.

Communication can also make or break a project or a relationship. It is essential to handle communication with intent and purpose. Only then can communication become truly effective and, at the same time, protect everyone’s focus time.

High-Level Principles

  • Always self-express in an articulate way.
  • Use a confident and clear voice to make sure everyone can hear.
  • Do not use sarcasm. Be objective and constructive.
  • Provide context to what is desired to convey. Providing background information on the topic or issue at hand can go a long way to bring people to the level of knowledge needed to understand.
  • Make it personal. Always use a photo as an avatar to self-present as a person. It makes communication more human.
  • Emojis do not replace properly worded confirmations and affirmations but use emojis, animated gifs, or humor when appropriate. These communication forms can help convey emotions but do not 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 needing feedback, it is critical to plan in advance.

Be Clear with Oneself

An individual is the starting point for any communication. Without a clear intent in mind, it is easy to develop thoughts as they are being shared, whether in writing or speaking. It brings many inefficiencies because:

  1. Do not fully know (yet) what is desired to share, so the delivery will be all over the place.
  2. As the delivery is not clear and organized, the counterpart will have to make more significant efforts before they can think about their answer.

Before initiating a written or spoken communication, prepare the message and organize the thoughts.

Choose The Medium

Once have clarified and organized the thoughts, the next step is to figure out a suitable medium for communication.

The choice of communication medium depends on various factors, including the topic at hand, the intended audience, and the level of urgency for the message.


Email is preferred for asynchronous communication.

Unless the message is of an urgent nature and requires an immediate response, it is advisable to communicate asynchronously. This approach allows the counterpart(s) to contemplate the message and prepare their response. Additionally, it is a matter of respect to consider that the timing may not be optimal for them, and an interruption could disrupt their focus.

The most common contact medium for asynchronous communications is email. While email can seem old-fashioned in the tech industry, it remains an efficient means of communication.

Email Guidelines

Slack can also be an acceptable asynchronous communication tool, although email is preferred. Instant messaging tools always carry some sense of urgency even when the message is not urgent.

Using Slack for Asynchronous Communication


Instant messaging (specifically Slack) is generally preferred for synchronous communication.

Synchronous communication should only be used when a question or problem is urgent and requires an immediate answer.

Critical thinking is instrumental to deciding what is urgent. Communication should only be considered urgent if it blocks progress or pertains to a risk that needs to be avoided or mitigated.

Once a message has been objectively considered urgent, then there are two primary mediums to initiate a conversation: instant messaging (e.g., Slack) or a meeting.

Instant Messaging

Instant messaging (IM) is the preferred medium as it still gives some flexibility to the counterpart(s). They can finish their current task and take a minute to reflect on the problem and prepare a response.

However, one of the most common pitfalls with IM is understanding each other and providing meaningful insights. To avoid this trap, monitor the length of the conversation. If it takes more than a dozen messages to get the point across, it is time to think of a meeting.

Chat Communication


Meetings are a delicate beast. A meeting can be highly effective, or it can waste everyone’s time.

If the time for a meeting has come, the topic of conversation incorporates some complexity. It makes it even more important to be clear with oneself so that an individual can be clear with others.

Guide to Efficient Meetings

Respect Others’ Time

When reaching out to someone, it is expected that the initiator has already given thought to the topic of conversation and selected a suitable time to contact the recipient. However, the recipient is passive in this process, and expecting an immediate and well-formed response is neither realistic nor respectful.

Thoughts Gathering

People need sufficient time to gather their thoughts and ideas regarding the topic at hand. Unless it’s something to which they know the answer, they will need to go through the same process to be clear with themselves before they can respond and be clear with the initiator.

Deep Work

The work done at Nimble, including software development, require deep-work sessions where the person gets completely absorbed by their task and gives it their complete and utter attention. It is commonly known as “being in the zone”.

Image from [Jason Heeris](

Image from Jason Heeris.

When requesting someone’s immediate attention (e.g., by tagging them on Slack or asking them to join a meeting on the spot), it can significantly disrupt their focus and waste literally hours of their work.

Prepare Early

The respectful way to communicate with colleagues and partners is to prepare early. Do not wait when it is anticipated that help will be needed from a colleague or partner soon. Instead, prepare the message and communicate asynchronously.

If an individual is aware in advance that they will need help and only reach out to others at the last minute, it can be seen as a lack of proactivity and can intentionally waste others’ time.

Avoid 1-on-1 Chats

Transparency is one of Nimble’s core values, and it applies to communication. The majority of conversations should be conducted on public channels. There are a couple of reasons for that:

  • Keep everyone involved in the project in the loop by sharing publicly.
  • Allow others to contribute even if they were not initially considered potential contributors.
  • Leave a paper trail of what was said and agreed upon.

There are cases where 1-on-1 chats are justified, but it should be the exception, especially for everything project-related.

Discourage 1-on-1 Conversations

Even if an individual does not initiate 1-on-1 conversations, others may still start that. In this case, it is essential to remind them of the importance of transparency and to keep chats on public channels.

If a 1-on-1 conversation is initiated with an individual from an external partner, they can copy and paste the following message to explain why public chats are essential.

Thanks for reaching out about this. Before I answer, let’s move this conversation to a public channel. It is important that we keep the whole team in the loop, and others might also contribute to this conversation. You can find more about our 1-on-1 chats policy on our handbook:

They should then copy and paste the message to a public channel, tag the original sender, and add their answer or comment.