Untangling developer communication
Can you easily tell what happened in your team in the last 24 hours?
Being informed
To be truly informed in many workplaces, the developer has to be tuned into multiple different methods of communication.
Here is a typical scenario of a developer coming to work:
He checks Outlook for any last updates and requests (and some irrelevant spam). Someone in email mentions a required software installation as a result of discussion he wasn’t aware of.
He checks Skype to see what are they talking about and after reading for a while he concludes there is nothing there. Finally he remembers to check WhatsApp and sees the discussion there.
The software he has to install resides in Dropbox, but on whose? Another look in the conversation thread finally provides that answer. The installation however doesn’t run as expected.
He checks the corporate GitHub to see if he got the parameters right. His parameters match the readme.md. Eventually he asks a coworker that directs him to company’s Confluence wiki where he finally finds the updated instructions.
Methods of communication
Let’s review some of the common methods we use to communicate at work.
Email (e.g. Outlook)
Used to write long letters that can also include attachments/media. Mail can also be sent to offline members. Additionally you can also easily see your company’s team directory (titles, managers, etc).
Knowledge center (e.g. corporate wiki)
Used to contain corporate documentations, tutorials, new employee instructions and general documentation that is supposed to be constantly updated. It can also contain rich media.
Real-time chat (e.g. Skype)
Used to discuss topics in real-time with individuals and groups. Since Skype is not connected to your company directory, each member has to be added manually.
Mobile chat (e.g. WhatsApp)
Since most desktop chat clients have rather poor mobile support. It is common in many groups to use a different chat application for mobile. It has the same issue as Skype — Lack of integration with company’s worker directory.
Files/Documents (e.g. Dropbox)
Files get sent around in multitude of ways — Network shares, email and specific sharing applications. Files are sometimes sent just as a one-time transfer and sometimes for all the future employees to find and use.
Indirect means of communication
There is additionally a whole sections of applications that the developer has to monitor for notifications, sporadic comments and changes:
- Code repository (e.g. GitHub) — This is where we keep our code, perform code reviews and provide project specific documentation (e.g in README.md)
- Issue tracking (e.g Jira) — Here we define issues, track features, tasks and discuss issues.
- Continuous integration (e.g jenkins) — Sends us notifications of broken builds. To actually discuss who’s going to fix it, we use a different communication method.
Streamlining developer’s experience
This plethora of tools that require our attention is a sure way to cause a developer to lose track of conversations and waste a lot of time on context switching.
Additionally, each tool has its own search, its own user/group infrastructure and usually a complete lack of integration between them.
Minimizing tool count
I would like to introduce a way in which we could minimize the amount of tools. We do by using a single powerful applications that can replace multiple others.
Let’s start by adding a rich real-time chat application. For the sake of this article I will use Slack. It is a modern chat system that supports offline messages, rich media, file transfer and various 3rd party integration.
With Slack, instead of sending an email you send a message, even if they’re offline and they will get it.
Now you no longer need Outlook as much, if any.
You want to chat with someone specific or the whole team? Again, you use only Slack. Both at desktop and on mobile. Additionally, since it is a single system, all your team members are already there and there is no need to ask anyone for their email.
You can now close Skype, WhatsApp and Lync.
Sending a file to your team is just as easy and everything you send is safely stored if someone needs it later on.
Now you don’t need to search network drives and Dropbox shares.
Notification flow
Now that we’ve cleared the involved tools somewhat. Let’s see how we can handle the indirect communication applications.
For example, consider task status changes of a single team in Jira. You could continuously check your Jira site, or even create complex notifications for yourself. However, what if you want to reply? Or discuss some recent Jira change with the team? You’d be switching contexts and applications again.
Instead, we can use Slack integrations to direct all relevant communication to your Slack room. Since you’re all chatting in the room, Jira is now just another fellow coworker that keeps you all updated together about your team task status. Now you can easily reply and comment on the changes right in the room, like so:
John: What’s up guys?
Jira: Feature X was marked as complete by Suzy
John: Good job! I’ll go check the code changes.
Suzy: Thanks!
We can use the same process for all the aforementioned tasks and get all the relevant information right in our chat. Now our information flow would look like this:
Now even though the user has multiple external applications, 90% of the time, he only has to check a single place for important recent team updates — his team room on Slack.
Integrating with a knowledge base
Making conversations is great to be in-sync and for immediate, or near-immediate, communication. When the time comes to create a summary of the important information that you’ve produced, it is time to put it into your knowledge base.
Notifications of these changes should, again, go through Slack.
After the changes
Let’s see how these changes change a developer’s daily routine.
Your new daily routine
A developer comes to work and opens Slack. He sees the following:
PHB: Guys, please make sure to install CorporateSoftware 2.0BETA
PHB attached a file CorporateSoftware.zip [Download]
John: It doesn’t work. Are the instructions in wiki correct?
Suzy: No, they aren’t. I’ll sort that out.
Wiki-bot: CorporateSoftware manual [link] was updated by Suzy
John: Ok, it works great with the new instructions. Thanks!
The developer had to open only one application to get all the important notifications and information. A few minutes after he read it, he’s ready for work.
Alternatives to Slack
I’ve had a very good experience using Slack, but it is by no means perfect. Here is some alternatives you should also consider, I’ve specified what’s special about them, aside the basic rich-chat features:
- Glip — Also allows to schedule meetings and manage tasks.
- Zulip — Open source and can be hosted locally. Allows threaded conversations. Reddit discussion.
- RocketChat — An open source Slack clone. Locally hosted.