My guidelines for using chat (Teams, Slack, whatever you fancy) as a collaboration tool in a software development team are as follows:
Chat is asynchronous
Always provide context when addressing someone. Never go “Hi!”. Ask the question immediately and with as much information as you can provide.
If you don’t provide context you are demanding the immediate attention and response from your counterpart thus underutilizing the medium’s asynchronous nature.
If it is urgent, call. I reserve the right to not answer. If I don’t answer, message me the context.
Knowledge should be available to all
- Use a common channel
- Pose a question with context
- Post the answer afterwards if a solution occurs outside of the chat
Avoid the use of direct messages or ad-hoc groups.
They can be used to reduce the noise in the common channel but should not be the first approach. Initiate group work in the common channel which can then be spun off in a side channel.
A common channel has several advantages:
- It is a known central reference point.
There’s no need track of where and when a conversation happened.
- It exerts some control over the notification flood.
DMs are interruptions. A common channel allows users to choose how their own interaction pattern whether that is an immediate response or a periodic check.
- It helps disseminate knowledge in an indirect way.
Perusing the channel inevitably presents an overview of the team’s activity to all.
- It widens the pool of potential responders to the whole team
You never know who has the answer.
Text is king
Do not post screenshots of terminal screens, stacktraces or errors.
No, seriously, please don’t. There’s nothing more tedious than trying to zoom on text in a picture, nothing to copy and edit.