Staying sane while managing multiple projects

Posted: August 25th, 2014 | Author: | Filed under: Development, Personal | 2 Comments »

Managing several projects at the same time is definitely not an easy task. Doing it remotely is an even greater challenge. The most consuming task of all is no doubt communication: getting updates, reading reports, spotting potential the roadblocks, knowing critical events, etc…

I’m running a relatively large remote software development team of 40+ people. At any one time, I’m having my eyes on no less than 10 projects and I need to maintain detailed mental status of every single one. On top of that I also need to be involved in strategic planning, sales, accounting discussions, remotely. At the end of the day, I’m still doing coding and bug fixing for some of the projects.

Most people would tell me that’s an insane level of concentration and a lot work.
It is not true. Since the introduction of Slack, I believe I’ve finally formed a system that keeps things well under control and allow me to run the team with extreme confidence everyday. I still have some spare time to enjoy what I love to do.

I hope my experience in the form of specific & practical steps could help you to reach a high productivity level and most importantly: staying sane.

Some numbers

To begin, if you are not familiar with Slack, please do some Googling and try it out. Here are some numbers extracted from my team’s dashboard:

slack_20082014

On a normal day, I’d actually read about 80-90% of the messages including the messages from external integrations. The active number of people using the platform is close to 40 all the time.

On the day Slack was released to the public, as a team, we switched over (from Skype) completely in less than 48 hours. I gain nothing by promoting Slack but I have to say it’s by far the best team communication platform we have ever had our hands on.

Channels, groups and the water coolers

I’m assuming you are aware of the different concepts in Slack. We did not deviate too much from the intended setup:
– Channels as public discussion topics such as #design, #ios, #android, #ruby…
– Private groups are project groups consist of specific people, by invitation only.

What makes the team special is that we adopted the concept of digital water cooler. In our setup, we have several ones such as #general #music #games #dailyphoto. They are essentially public channels with gossiping intentions.

The digital water coolers are an engaging, asynchronous and non-distracting way to keep everyone connected in an informal context. When often about half of us are not in the same physical space, it has became invaluable. It also keeps the fun and work in the same interface.

Getting all the tools in one place

Similar to a typical development team, we have a handful of tools for different purposes. Normally, we would need to setup email notification for each of the tools. It has always been difficult to get notified about smaller, trivial events such as when someone pushes code commit or when a comment is made to the task-card. Imagine multiply those by factor of 10+, things get out of control pretty quickly. Most of these bits are insignificant as we see them, but occasionally could be a tell-tale sign to a potential disaster.

So when the team switched to Slack, we wrote our own custom integration code, consolidating all possible events happening around a project into its specific channel. It is a major shift in how the team members work together. Individually, we no longer need to check for tasks assigned or new comments on Trello, or check for bug report on another system. We’ll know about them as they happen and we keep a history to refer back to.

Personally for me, I now have much better visibility into any project, It was simply not achievable before. I could see when a specific bug has been fixed, new version deployed, or I could choose to ignore them. It’s up to me.

Turning off distractions, partially

This is the secret of how I stay available and informed all the time yet I don’t have to really be online. It is probably the most useful and most important feature that Slack offers.

slack_notifications

What you see above is the non-default notification settings that I keep for most channels and groups that I’m in. By keeping the option this way instead of the default option, it reduces the distractions on my desktop and my phone.

I don’t receive the annoying pop-up message all the time when I’m working on something. I will read the backlog either on my phone or my Mac when I have some time in-between meetings. Usually it takes me only a couple of minutes to catch up.

Some rules I followed to keep it to a very manageable level:
– Water coolers: all notifications off.
– Private groups: partial notifications.
– Other public channels: only notify on desktop, no mobile.

If you are not aware about this setting now, try it today and maybe gain back your ‘peace’.

Staying alert of only what’s important

I turn on All Notifications for certain threads, they fall within the following categories, these usually require my immediate attention:
– Management group
– Finance/HR group
– Direct messages
– Project groups that are in delivery phase.

Another subtle yet brilliant feature Slack platform has is the delayed notification. If I don’t read the message on my desktop soon enough, after a short while, probably a minute, it will push the messages to my phone. And since I practically keep my phone next to me all day long, I would not miss out.

Notifications were PITA for Skype. All messages are pushed to the mobile app. It quickly became overwhelming and the non-critical messages bury the critical ones. There was simply no way to work around this annoying issue.

Catch the critical events

By default, if you @mention anyone in Slack, they will get a red badge next to the channel name on desktop or they’ll receive a push notification to the phone within a minute if unread. This has been extremely useful for team members to request for attention from other team members, whether they are online or not.

The underlying mechanism in Slack watches for your own username as one of the important Highlight Words. So to stay updated and be notified of all relevant conversations and events, I added a few more specific and generic keywords into the list: crash, structure, test failed, NoMethodError, different spelling of my names.

This way, I could stay informed about most of the critical events and decisions. I could also catch it when the team is discussing about architecture design and then drop in to give my opinions even when I’m not being mentioned.

Clearing the messages, quickly

I receive an enormous amount of messages at any time during the day. At first it was overwhelming, but gradually, I developed a systematic and efficient way to read and response to all communications.

Since I’m on the move very often, I would only try to read threads with a red badge on my phone follow a certain order of importance:
– Direct messages
– Private management groups
– Private project groups
– Other channels or groups

When I got back to my Mac, I’d use the hotkey combination: Alt + Shift + Up/Down to jump quickly to the next unread thread. On top of that, I use Esc key to mark the water cooler channels as read without scrolling through them. I would go back to read them when I’m done catching up.

Staying sane

This arrangement allows me to work through the daily communication effortlessly. I don’t need to actively spend time chasing people for updates and reports and yet I know when the code failed, why apps crashed and how the team would solve the issues.

With Skype and other platforms we’ve tried before, it was simply not possible. The model was still pretty much a pull model, that is I need to “poll” for updates. Since Slack came along, the game has changed. Now the updates are being “pushed” to me in smaller chunks, my job is to digest those on my own terms.

Not only it that, whenever I feel overloaded, I allow myself to drift for a short while. Simply turning on Do not disturb on my iPhone and let it be. Having an absolute peace of mind knowing that when I’m back, things will be waiting for me in the right priority.

TLDR;

I keep an eye on no less than 10 projects efficiently at any one time with the help of Slack platform. By default it has some brilliant features and smart notification but you’ll need to tweak it depends on your context. Once you formed your prioritisation rules and setup the channels, staying updated is no longer a time-consuming task.


  • Birowsky

    Cool story. You made me feel the zen. But how do you go about separating the channels based on each of your projects. I see that slack has a shallow hierarchy of channels/topics, which is why I wonder.

    I would have expected that a team is responsible for multiple projects, and then in each projects, all the relevant topics/channels.

  • Leo Walker

    Good tips, I also find Slack useful. I also like this video on how to manage multiple projects