Note: This blog post is intended for the people at Recurship. However, you would find use for this if you are interested in the principles of an "asynchronous" workflow or find yourself using any of the services discussed in this article (Slack, Asana or Bitbucket) or just want to know more about how we work :)
Once you are done configuring your different services on your first day at work, you will quickly notice one of their more annoying aspects; notifications hitting your Gmail inbox and desktop from all the different services - Slack, Asana, Bitbucket etc. You will be receiving messages in Slack, getting tasks assigned on Asana and given feedback in Bitbucket. Loop in channels like #procrastination and #food-guftugu and one can spend all day being disturbed by these notifications.
Coding requires constant focus. If you constantly have to attend meetings, glance at your constantly buzzing phone or on the notifications popping up on your desktop, your train of thought can be easily distracted and lead to a decrease in productivity. This is why we try keeping most of our communication "asynchronous". This means that the person asking the question or giving feedback won't end up disturbing you right when you are in the middle of your thought process. Instead they leave it as a comment on Bitbucket, or Asana, or send you a message over Slack. Once you have completed your focus cycle, you can then check out these messages and respond to them accordingly. Check out this TED talk to get a better idea on what Im talking about:
So how do you configure this "asynchronous" environment? The first step is to control the real time notifications. The major source of this is Slack, so you need to adjust its notification settings. This can be done in two ways, the global setting and then one for each individual channel. The aim here is to create a balance, so that you are not constantly distracted. The first thing you definitely want to do is turn off notifications "For activity of any kind" and change it to "Only Highlight Words and direct messages". Next up define some highlight words which should trigger a notification, I personally want to be notified if someone talks about meetings or foodpanda, and that reflects my settings below.
Once this is done, you will want to configure the notifications on a per channel basis. This is important because some channels are more important than others. Channels like #procrastination definitely do not require an urgent response, they are meant to be seen when you have some free time. Channel based notification can be changed by opening the channel on Slack, clicking the title on top and then on Channel notification preferences (screenshot below). For this channel I have disabled all notifications ( since mentions on meeting or foodpanda since they are not relevant to this channel)
Next step is to think about the other applications which might disturb you in real time. This may include your personal accounts / devices using SMS, Facebook and Whatsapp, or they can be apps like Dropbox for which notifications can be disabled completely.
Once you have sorted out your realtime notifications, you will need to take charge of your emails. Be default, most services email you with updates on activities/threads you are following. Over time the number of emails tend to increase and add up. Thus its better to keep our workflow within the apps in order to avoid relying on emails for notifications. In cases like Asana, we can disable the notifications all together.
Asana has a very useful feature known as the "Inbox". The inbox contains all the events happening to the tasks related to you (or the tasks you are following). "My Inbox" is available on the top bar of the Asana web app, it opens a page with all the events on which some activity was done recently. You can archive the events you have already responded to and leave the others in the queue while you work on them. This workflow is a suggestion, feel free to adapt it according to your working style. We also recommend you to turn off your email notifications so you can then completely rely on this. When ever there is a new event, there is a small dot besides the Inbox link and in the title bar.
Check out some articles on Inbox on Asana's blog, starting with one linked below:
Unlike Asana, Bitbucket has no inbox feature. However it does have "Recent Activity" feed which you can keep an eye on. However since this is a lot of manual work, I prefer monitoring the emails for this service. It does have features to control what kind of emails you get. You can configure the email notifications on a per repo basis, with each one being configured using the "eye" icon on the top right side of the main repo page (screenshot below). Unless you are managing the project, you don't want any of the below checked, but the "watching" feature turned on so you can get notifications whenever there is feedback on your commits.
If you are looking for something more custom, Bitbucket also offers an RSS feed which you can utilise together with an app like RSS Bot and control the activity by marking it read or unread. But again, be careful with the notifications so it does not disturb you during your "work mode".
Finally, when there are no disturbances on the screen, there may be disturbances in the office. May be the other developers are having a discussion or someone is on a call. You can use headphones in such cases to block out the noise. I sometimes use tools like Noizio to create some soothing background noise which help me focus well. However this is personal to every individual and will depend on how you like to work and build your focus. You can move to the "quiet" room in the office, or even sit outside if that helps with your focus - the aim is to get into the proper zone so we can be very productive and deliver our tasks within the deadlines with the best quality possible.
If you have any better suggestion on how to further improve our workflows to improve productivity let us know!