I started working remotely just more than 6 years ago, the same day I started working in an agile environment. Over this period I’ve been an Agile manager of several software development teams.
I have heard and seen almost every challenge of remote work play out; none of which can’t be overcome. Being able to create a work-home balance that supports my family and my career is of utmost importance to me, which is why I love the flexibility of remote work. I’m much more productive and focused in a quiet environment, away from the open plan office noise, and therefore choose remote work over working from an office any day.
Successful software development in a remote work environment could be quite challenging though, and requires tools, skills and guidelines to ensure that the team stay connected and on track. Here are my 8 tips for software development in a remote work environment.
1. Decide on your communication channels before you start software development
It is best to have a primary channel where communication happens, that everyone is on the same page, a single source of truth where a user could also search the history. For Polymorph, that channel is Slack. We configured it in such a way that we have private groups for the various projects, and also some open channels for general discussions that are focussed on a specific areas of software development, e.g. Android development, iOS development where we share links/learnings that will benefit the team.
2. Agree on how to communicate unavailabilities to the software development team
Teams get frustrated when they try to communicate with a remote member, and all they get is silence. We indicate leave days and sick days on our shared calendars, but also communicate it to our project teams. When someone will be AFK (away from keyboard) for more than half an hour in typical work hours, we mention it in our project channels or even daily standup.
3. The right tools
We favour tools that enable remote collaboration. Jira, Taiga and Trello get used by different teams to do issue tracking rather than physical boards with stickies. Most teams will co-locate for major ceremonies like sprint planning and reviews, and do stand-ups online. Being so far away that’s not possible on my projects, so we’ve adapted some google drawing docs to be able to participate remotely in retrospectives. Planning poker can be used to do remote estimations. We use Zoom for longer meetings, it allows recording. Hangouts meet is also handy.
4. Meeting etiquette
We’ve had several occasions where either nobody would speak, or everyone at the same time. What helped is if someone facilitates the meeting, and that everyone else is muted initially. That way, when someone wants to say something, them unmuting is a visual cue to the rest of the team to let them first finish before the next person speaks. In most instances the conversation will flow naturally with people following the cues. If not, the facilitator can indicate who’s up next. Be punctual when attending a remote meeting that the session can start on time. It might help to give the team a heads-up that the meeting will be starting in a few minutes if they still need to go to a quiet spot or meeting room. When bandwidth allows, we do video too. It helps when one can see body language, and also feels more like a real conversation and keep people engaged.
5. Set boundaries
Separate work from home – if you cannot have a separate room, have a separate workspace. It helps one to focus on work. Don’t sync your work mail to your phone if you can help it. It tends to keep one working after hours, especially when some team members are working flexi time.
6. Connect as a team
Working remotely could leave one feeling isolated. At Polymorph, we have regular team days, lunch club, family days, makerdays, etc. where we get an opportunity to spend time with the rest of the team. I don’t go down to Cape Town for every event, only once every few months, but when I’m there I enjoy spending time with and getting to know my colleagues. Remote communication should not be underestimated though, I’ve been working with some colleagues for years before I’ve met them, and by the time I finally met them we chatted like old friends – just because we had lots of 1on1 slack conversations. A general question about someone’s weekend or interests can often shed light on something we have in common. When you get to know your team, you’d also start picking up when they sound unhappy/frustrated/down and can follow up on a 1on1 if there is something you could help with.
7. Stay connected
When working remotely, our internet connection is our lifeline to the rest of the company. Regardless of which means of communication you use, it will suffer if you don’t have connectivity. It’s therefore crucial to have some sort of a back-up, or plan B if due to unforeseen circumstances you can’t connect. I have a 3G router that I use when there is an issue with my internet. Alternatively, I’d go work from a family member’s house. Similarly, having some sort of power outage can leave someone unproductive if they don’t have a UPS, generator or somewhere else to work.
8. Over-communicate
Most importantly, communicate. Rather over-communicate if you have to, a lot of the physical cues and tone of voice goes missing in communicating via text. We have daily standups on most projects, as well as the sprint planning, retros and review ceremonies of a typical agile project. I also have a once a week sync with one of the managers, and a management meeting every second week to ensure that we are aligned, on track, and manage any risks. In addition, we have company stand-ups every second week where we get to see what the other teams in the company are up to. Ad hoc comms in project channels help solve and clarify as questions arise, or new info become available. And then there is still 1on1s, or a phone call if needed.
That’s enough from me and my remote agile journey, I’d love to hear what you’ve learned from your experience. Did you face some of the same challenges? Is there any tips you’d like to share? I’m always keen on learning how to improve on working remotely.
Also, did you come across other challenges that I might not have mentioned above?