Enabling remote work
At Hosted Graphite, we rely on remote work - our CEO works full-time from the US and the rest of the team work from Ireland. We have a flexible policy on working from home (essentially, Nike-style: just do it). As long as work gets done, we don't sweat the details of when or where it happens. Some work from home regularly, and some rarely.
The key to effective remote teamwork is communication. Every interaction with a colleague is always easier in person and that means when we're remote we need to put in a bit more effort, but we need to know exactly when we need to put that effort in.
If you're a remote worker or a team that works with remote employees or freelancers, then we hope these tips will make your life a little easier.
It's crucial that your team knows when you're working and when you're unavailable. If you just drift in and out all day, your colleagues won't be able to rely on you for a discussion or a decision because they never know when you're going to be responsive.
When your day starts, declare it to the team. Nothing complicated, just "Morning! Working from home today." will do. When you're done for the day, make sure you say it: "I'm outta here, talk to yis tomorrow." If you're on a call, in a meeting or out for lunch then make your remote team aware of it, ("Lunch, back in 30") especially if timezones are involved.
Related to "Declaring" but different is being present. The team should feel that they can call on you when you're around, just as they would in the office. This means checking your communication tools regularly, or keeping notifications turned on. Basically, don't hide and isolate yourself, be available for your colleagues because they can't tap you on the shoulder as they would in the office. If you do need to go quiet for a while to focus on a task, declare it so people know what to expect your availability to be.
Discussions and decisions
With some people in the office and some remote, it quickly becomes apparent to anyone remote that when decisions happen in the office in person, they don't get discussed online. If this happens frequently enough you feel completely disconnected with the decision-making process, which quickly leads to dissatisfaction and demotivation.
Often it's easier to just turn to each other in the office for a discussion and that's fine, but if you know one of the remote folks might like to comment you should (1) make them aware that there is a discussion, and (2) give them a chance to either take part or say they're happy to go with what the in-office folks decide on that issue. Often just leaving a little note like "X and Y discussed this in person and decided it's OK" on a pull request, or saying "We're discussing this in the office - Z, do you have an opinion on this one?" is a big step forward.
Being clear about when and how decisions are made and discussions are had will go a long way toward dealing with the feeling of disconnection that remote workers can feel.
Usually, some of the teams within the company will have a daily standup where they talk through what they're doing and any blocking points they have before deciding on what they'll do next, and discussing the reasoning behind any changes in direction. Once an in-person standup is done, the team will summarise it on Slack to allow remote folks to participate, and also to create a record for answering the "Where /did/ the week go?" question. A bot pings everyone to update their standup notes at the same time every day.
Usually this is a quick three-liner:
Done: (What I've done so far, how long it took)
Doing: (What I'm doing now, how long I've spent on it)
Next: (What task I'm switching to soon)
From this, anyone can see at a glance what the whole team are working on and how long it'll take for us to push a feature, fix, or new integration. We can make sure any marketing efforts are keeping pace with the development team, and any new automation needed is in place. If anyone's getting stuck it becomes pretty clear and we can figure it out.
Not everyone does the dev-oriented daily standup notes. We also keep a git repo of what we call 'snippets', somewhat modelled on Google's snippets. This is a daily summary of the stuff that people work on. It's an optional way of describing the building blocks of the day - particularly useful for developers that are usually remote and anyone working on softer, non-dev work. My day usually looks something like this:
June XXth 2016
- Call with Charlie
- Sales call with Customer X
- Talking with our Lawyer about Y
- Support followup with Customer Z
- One-to-one call with <team member>
- Talking with partner company A
- Reviewing our marketing conversion rates
This has the added benefit of highlighting regular tasks that might be better off automated. If you're doing something that a computer can do on a semi-regular basis, you probably just need to leave it to a script. If someone's regularly working on low-value tasks we can direct that attention somewhere more valuable. There have been some great articles on the difference between 'action' vs 'work' - work drives your business forward, action smells like work but has no outcome (e.g. any task that starts with "investigating" is usually a giveaway).
It's also a good way of noticing where you're spending time that you shouldn't be. For example, if you're supposed to be doing product and development management but you have lots of actual development tasks in your snippets, that's evidence that maybe you don't have the balance right.
Snippets can also be a helpful tool for giving the team a chance to see what the non-technical management types do all day - how much is support, sales, hiring, dealing with the accountant, etc
Planning and task management
We keep a set of Trello boards which we separate into a few different themes:
- Product - Adding features to Hosted Graphite, or improving existing ones.
- Growth - Efforts to get new users into and through our sales funnel, improve conversion, or promote referrals.
- Bugs - Anything that's creating a less than amazing experience for our customers (or operations team!) and needs to be fixed, or technical debt that needs to be paid off.
- The Salt Mines - Current issues/projects, what we're working on in the next week or two.
We then divide these boards into Short, Medium, and Long-term sections. As co-founders and managers of the product Charlie and I have a call a few times a week to wrangle these tasks between queues as necessary, or break them into smaller tasks. Once the tasks are on the Salt Mines board developers are free to pull items from the 'Next' queue and drop them into 'Doing', then 'Done', Kanban-style.
Keeping a partially remote team on the same page is tricky, and possibly even harder than a fully remote team because there are more edge cases. We hope this insight into how we run a partially remote team is helpful, and that you'll find some of these tips useful for your own team.