Being in the same room as the people you are working with is not a luxury we all have. Sometimes we are remote from the people we're developing for and that we develop with.
For the Managed Software Services team, that's basically the rule rather than the exception. We often work from home and hardly ever physically see our clients.
When people come onto my team, the shift to working remote can be a jarring one. You can't just lean over and ask a question or get help at the drop of a hat. There's that physical distance between the team members and the product managers. Then there's the time-zone difference that can happen when people are working together from across the world.
It can certainly be isolating if you're the only person in a particular city or the only person doing anything for a majority of the day.... It can seem like you're alone and everything's quiet.
But that's only the case if there aren't strong communication systems in place. If we were in the same room, we'd be communicating all the time by merit of sharing the physical space. It can be a boon, but it can also weaken your active communication skills. It's simple and easy.
You read that right: Face-to-face communication is, in a sense, the easiest way to communicate.
Face-to-face has the least amount of obstacles and rigor needed for it to be effective. Instead of having to write out via Slack or email, schedule calls, and keep various individuals in the loop, you can just talk and that's it. It's so easy it allows us to get away with bad habits.
When you're remote, you can't take it for granted that someone got the memo or was aware of what happened. You have to touch base more frequently and accept that the response isn't going to be instantaneous. If you don't, it's easy for things to get chaotic. There isn't the clear and present civilization of an office to keep things in line. We just have our computers, our software, and the guidelines we put in place for ourselves.
Then the question comes: what do we use to keep everything from falling into chaos? A few pieces of software, and some guidelines for communication.
Slack
Slack! Slack! Slack!
We have Slack reminders at reasonable times to remind people to do things. Such as logging their timesheets and what not.
We have Slack calls frequently (daily, weekly, etc) for our projects and the team at large. We also use it for pairing remotely and screen-sharing.
We use Slack all the time during the day to communicate with each other. Sharing code snippets, getting help, and so on. It's the primary communication nexus for us.
Trello
We use Trello for project management and have it hooked up into our Slack channels. Conversations related to particular cards are kept within the card and are then posted automatically into the Slack channels so the information is disseminated.
Letting people know your schedule
When we start our work day, we post a message saying on
on Slack to let people know that we've officially begun work for the day. We don't all keep to the same schedule or the same time zone, so having some awareness of when we're actually awake and active is helpful. The Slack indicators can also be used for this.
We also let each other know when we're in transit or at an appointment. This gives each other an idea of our lack of availability. We also put this on our calendars for full transparency.
Talk to an empty channel
Having problems or questions? Drop the thoughts in the channel without hesitation. Even if someone doesn't respond immediately, you're also rubber-duckying the issue. And you're creating a log of thought and reasoning for other people to reference in the future.
Push up often
At the end of your day, push up the code in your branch. This has two primary benefits: it allows people to review it whenever they get in the next day, and, if someone else needs to pick up your work, it's already there. Pushing up often makes your work always accessible for whoever needs to access it and opens it up to frequent review.
Summary
Remote doesn't have to be hard. You just need to communicate in an orderly and thorough fashion–that's all you really need to do to be successful.