Working remotely as part of a development team

A few people have asked about how I cope working with a team in not only another country but the polar opposite timezone. If you’re working from outside the office, with a team in another office, or from abroad, here are some quick tips. This is from a list I put together for other Softwirists. If you have any other advice on how to make this situation work, let me know!

Things to do before leaving the office, or the country

  • Make sure you have a good (fast, portable) laptop
  • If you don’t already have a good headset and webcam, grab them, or if you’re travelling light get them on arrival
  • Try to foresee any large (>1GB) downloads that aren’t generally on the web: VM images if your project has a sandboxed dev environment; professional versions of IDEs like Visual Studio; big test DBs etc.

Working

There are two problems really: working remotely, and working in a different timezone, although they are related and the symptoms are similar.

Working remotely

Working remotely is the easier of the two to solve, and well covered on the internet and at Softwire. So here are some tips:

  • Firstly, get your team to put everything in the cloud as much as possible: standups on hangouts, story progress in jira or pivotal tracker (or tool of your choice) not on a whiteboard, use hipchat for team comms, have an online calendar if necessary, all documentation on a wiki, docs on gdocs, etc etc etc.
  • If you do use HipChat (or similar) for team comms, make sure that as much conversation as possible does happen in HipChat. It’s very easy for all the people in one office to have a face-to-face conversation which never gets recorded in HipChat, leaving the one remote-working team member completely clueless. Ideally use HipChat to have the conversation, but if that’s impossible then at least record the consequences somewhere and draw the rest of the team’s attention to it.
  • Google Hangouts is great for team conversations, and seems a bit more robust and reliable over long distances than skype
  • Skype is also great for video calls or international phone calls
  • Microsoft Lync doesn’t seem to work very well in my experience once you’re outside the office.
  • Join.me is pretty good for presentations or sharing a desktop
  • Screenhero is pretty good for sharing a desktop but also for pairing or pair-debugging remotely
  • If you use lots of apps that use the webcam (e.g. using hangouts and sqwiggle at the same time) install “manycam” which controls your webcam and can then send the same image to multiple apps. It also has fun effects like moustaches etc. This is mainly if you use sqwiggle, which works best if left on all day in the background.
  • Hipchat is great as a persistent team chatroom or rooms
  • Sqwiggle is worth a look if you have a distributed team. It’s weird, but I think once you’re used to it then it’s good for fostering a team feeling rather than a cut-off feeling.

Working across timezones

Working with a team in a significantly different time zone is harder! Some tips

  • (All of the above especially hipchat can help)
  • A daily standup with the whole team is really really useful if you can schedule one. It will also turn into your slot for asking the PM or tech lead all your stored up questions on things you got stuck on! (Obviously ask after the standup unless is relevant to the whole team.) This works fine, but make sure they (and you) are prepared for a potential chat of 10-30 minutes after standup each day.
  • Keep using retros (or standups) to ask how it’s going from the team’s point of view (or find another way to keep checking) as you might not get feedback otherwise. “is everyone happy with the later standup time slot” “is everyone usually aware of what I’m working on” “is my progress visible” etc.
  • Throughout the day you’ll get stuck or blocked – much more stuck than you would in an office with people around to go pester for what you need. So it’s important to have a broad backlog of things you can work on. This might mean having 2 or 3 stories lined up, or having a backlog of non-urgent technical debt type tasks you can pick up if you get stuck, which are low enough priority to leave indefinitely if you don’t. And it’s important to make the most of whatever overlap you have with the team each day!
  • On the plus side, if there are urgent tasks then with a careful handover each morning/night, you can work on them while the other dev assigned to it is in bed. So you can add resource even to a one-man task, if you see what I mean. I think this only works in certain circumstances though!
  • If you finish your day before the team start theirs, then a quick summary email of where you got up to and a heads up of what your blockers/questions will be at standup is very useful for them.

Location requirements

Finally this is really obvious but you’ll need a good computer and a good internet connection wherever you are.

  • If you’re moving in to new accommodation, make sure you have a backup plan in case the internet company screw around for ages before connecting you: local libraries or coffee shops are good places to try for free wifi!
  • Consider using a mobile phone network who give you free access to wifi hotspots (I think O2 does this in the UK, or Telecom in NZ), or one with cheap data bolt-ons that can take you up to at least a few GB a month, at least until you have a stable internet connection. Then you can connect your laptop to the hotspots, or tether it to your phone when you’re desperate.