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)

(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.

(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: