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 express yourself in an articulate way.
  • Use a confident and clear voice to make sure everyone can hear you.
  • Do not 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.
  • Emojis do not replace properly worded confirmations and affirmations but use emojis, animated gifs, or humor when appropriate. These communication forms can help convey emotion 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 you need for feedback, it is critical to plan in advance.

Be Clear with Yourself

The starting point to any communication is with you. Without a clear intent in mind, it is easy to develop your thoughts as you share them (either in writing or speaking). It brings many inefficiencies because:

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

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

Choose Your Medium

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

The medium depends on the topic you need to discuss, the person(s) you are talking to, and the message’s urgency.


Email is preferred for asynchronous communication.

Unless the message is urgent and requires a quick answer, your communication should be asynchronous. It will give your counterpart(s) time to think about your message and prepare their response. It is also a matter of respect: now might be a good time for you, but it might not be for the other person(s). You could be interrupting them and breaking 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 yourself so that you can be clear with others.

Guide to Efficient Meetings

Respect Others’ Time

When you are reaching out to someone, you have already thought about the topic of conversation. You have also chosen a time that works for you to reach out. However, the other person is passive in this process. To expect them to know what to answer and do so right away is not realistic nor respectful.

Thoughts Gathering

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

Deep Work

The work done at Nimble, including software development, require deep-work sessions where the person gets completely absorbed by their task and give it their complete and utter attention. You might know it 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), you can effectively ruin 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 you know that you will need a colleague or partner’s help soon. Prepare your message and communicate asynchronously.

If you know in advance that you will need help and only reach out to others at the last minute, you purposefully waste others’ time for your lack of proactivity.

Avoid 1-on-1 Chats

Transparency is one of Nimble’s core values, and it applies to communication. You should have the vast majority of your conversations on public channels. There are a couple of reasons for that.

  • You keep everyone involved in the project in the loop by sharing publicly.
  • You allow others to contribute even if you did not think of them as potential contributors on the topic.
  • You leave a paper trail of what was said and agreed.

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 you do not initiate 1-on-1 conversations, others might start them with you.

In this case, it is essential that you remind them of the importance of transparency and to keep chats on public channels.

If a 1-on-1 conversation is initiated with you from an external partner, you 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:

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