Creating software is inherently collaborative. Whether we’ve run into a wall and need help or just need some additional perspective or insight from someone else on the team, collaboration is unavoidable. But we can improve how we collaborate and communicate. We have a surprising amount of flexibility, but we don’t take full advantage of it.

Meetings. Chat. Video calls. Email. Project management tools. Some are real-time while others are asynchronous. They all have their place, but we could do better when we select the medium for a given conversation.

Asychronous communication can help everyone

Meetings and real-time conversations wreak havoc on our ability to focus. We love the instantaneous responses and the feeling of getting things done, but we don’t fully account for the cost of these mediums. We’re wired for immediate gratification regardless of the consequences to the person we’re interrupting. Real-time mediums are too demanding of attention regardless of whether the content is time-sensitive or even important. We accept these things as part of our job, but are they really moving us forward or just slowing us down?

There’s incredible power in foregoing immediate gratification and embracing asynchronous communication. When you aren’t chatting real-time and aren’t expecting near-instant responses, it allows for more consideration of your request as well as the recipient’s answer. Lean on chat only when it’s incredibly time sensitive, but think carefully about how fast you really need an answer. When possible, embrace the wait.

The lack of instant responses may make it feel like you can’t make progress as quickly, but if you think about it, chances are good that there’s always another task you can switch to and still be productive without interrupting a teammate for that bit that’s blocking you. Give it a day, and if you don’t hear back, follow up or escalate to another medium.

Depending on how frequently you do this, you may want to implement a system to keep track of the follow ups you’ll need to do if you don’t hear back. In my experience, it’s rare to have more than one or two outstanding at any given time. If you have more than that, it may be a sign that you have too many simultaneous projects.

So next time, before you default to real-time communication, take a moment to think about whether an asynchronous option could work. Email? Basecamp? GitHub? It may sound a bit old-fashioned at first, but it can work wonders for enabling a team to stay focused.

Sometimes, real-time is the way to go

Asynchronous communication is great, but it’s just as important to recognize when it’s not working. Maybe you’re talking past each other. Maybe the topic has grown in complexity as you’re trading emails. Either way, sometimes hopping on a video call or using real-time communication is a better way to go. Just don’t default to real-time for everything. Use it as a last resort.

Which medium we choose is important, but even with the right medium, asking the wrong question won’t help. How we frame our requests and provide context matter just as much.

Have you ever been stumped and reached out to one of your co-workers to ask them a question and then had the answer come to you just as you’re asking them? Sometimes, we just need to hear ourselves frame and ask the question so that the answer can come to us. In cases like this, it may not even be necessary to interrupt your co-worker. If you put together a thorough request and provide useful details and context, you can reason through it on your own. You get an answer, and nobody gets interrupted.

When asking for help, take some time to prepare your question thoroughly. Invest in presenting your question so that you’re asking as little as possible of the person you’re contacting. Gather up and organize all of the necessary information and context they’ll need in order to understand the question. That may include stack traces, links to the relevant files, a list of what you have already tried and what the results were, and a list of hypotheses about what may be wrong. Try to anticipate any questions they may have for you, and provide that information in the initial request.

After you’ve gathered all of the relevant information, carefully frame the question so that it’s clear where your problem lies and where you need help. These steps serve two purposes. First and foremost, it minimizes the burden on the person you’re asking for help. Second, by so thoroughly evaluating the situation, you’ll often uncover the solution for yourself without even needing to interrupt them.

Respect the cost of interruptions

On a related note, let’s all collectively agree never to end any communication with “Thoughts?” It’s a cop out and places all of the burdens on the recipient. Always take the time to compose a specific question or series of questions that the recipient can answer. When you end with a generic request for thoughts, it’s clear that you respect them enough to ask, but you don’t respect their time enough to organize a specific request. This unfairly places the burden on them to both figure out what you’re looking for and try to compose a response relevant to what you may want. On a related note, when you receive an email or request that ends with “Thoughts?” you are hereby absolved from answering it with any response other than “About what?”

At Wildbit, whenever someone posts something to Basecamp, we make sure to explicitly end the post with who needs to be involved, what information we’re looking for from them, and when we need it by. This helps eliminate ambiguity so that people have a clear understanding of what involvement is expected from them on any given matter.

Similarly, when you do use direct messages or chat, never start a conversion with “Hey.” This makes it impossible for the recipient to know whether it’s urgent enough to break their concentration or whether and how long it can wait. Instead, take the time to compose a sentence or two about what you need and why so they can better assess how to work it in with everything else they’re working on.

Finally, the medium matters when asking for help. Don’t just reach for the first communication medium that’s handy. Take a moment to decide how urgent or complex your request is and how many people you need input from. Then think about whether it would work better in your team project management tool, issue tracker, email, chat, or something else entirely.

We all need help at times, but we have to respect each other’s focus. Taking time to compose thorough questions can often short-circuit the need to interrupt them at all if it helps you recognize the solution without asking. The worst-case scenario is that you still have to ask them, but they’re able to process and respond much more efficiently and completely. Either way, you save time for both parties.

Your next steps

  1. Get in the habit of always thinking about what medium is best for a given topic rather than what’s convenient.
  2. Ask yourself whether something is truly urgent before using a real-time medium, and fight against the natural desire for instant gratification.
  3. Reduce the need for back-and-forth by providing robust context and details for any request.
  4. Take your time to compose detailed requests that provide enough context for someone to quickly investigate on your behalf.
  5. Avoid vague questions by providing specific requests related to your problems.
  6. Strive to minimize the burden on the recipient of your request.
  7. Include your hypotheses to help them narrow down and avoid investigating options that you’ve already explored or help them quickly see flaws in your approach.