I’ve been asked a few times recently how I find remote working and how well it works so I thought I’d write up a bit about the tools we’ve found fit our team well.
I work in what is now a mostly remote team for Parrish Blake (Who are hiring by the way). I’ve been fully remote for about 2 years now and over that time we’ve found different tools/approaches that have made remote working easier.
Must Haves
Broadband A good reliable broadband connection is essential. This really needs a high or unlimited bandwidth cap. It’s not uncommon to leave Skype video calls going for a whole day if you’re pairing through problems, you really don’t want to have to be thinking about going over your limit.
Webcam Adding video to a call makes the team feel much less isolated, it also gives a much better idea who is in the call rather than just hearing lots of voices.
Quiet Place to Work A home office is essential for this to work. Working with a laptop on a sofa really doesn’t cut it and also blurs the home/work divide.
Software
Video Conferencing - Skype We use Skype for our morning stand-ups and any other video communication during the day. Everyone on the team has a modern webcam as we find video essential, in my opinion this helps me feel a lot less isolated. Every morning at 9:00 the whole team is online for the morning stand-up skype call. After that other calls take place as needed for discussions or often pair programming. Skype is also often used for its screen share capabilities, it’s far from the best tool for this but if you’re already in a call it’s quick and easy to bring up a screen share.
Instant Messaging - Slack We used to use Skype for instant messages but moved to Slack at the beginning of the year and this has quickly become a must have. Typically IM will always be used before a Video Call or to ask someone for a Video call as IM is a lot less interrupting. Some of the key features that Slack had over skype….
- Full searchable message history
- Hosted attachments
- Code Snippets
- Channels
- Message syncing across devices (Skype does attempt this but does a really bad job of it)
We use 2 core channels along with a few direct message groups for discussing anything not relevant to the rest of the team.
- General - Anything you want the whole team to see that is work related
- Random - Anything un-work related, most people turn off notifications for this channel and glance at it every so often to see cats on skateboards or whatever the day’s craze is.
Collaboration - Google Docs We’ve tried various whiteboard replacement tools and none completely cut it. The closest we’ve gotten is a shared Google Doc. This works pretty well when complemented with Skype for brainstorming, problem solving and working through ideas.
Screen Share - TightVNC As I mentioned we sometimes use Skype for screen sharing but the quality is very hit and miss. For long pair programming sessions we’ve tried various tools and so far none come close to the quality or responsiveness of VNC. This takes a little bit more work to setup as you have to connect directly to the other person’s machine but once working it really is hard to see the quality difference between a local screen and a remote VNC screen. In my opinion this makes remote pair programming better remote than being in the same physical office, by screen sharing multiple developers can see the same screen at a good angle without leaning over a desk. It’s then easy to push to a branch and have the other person pull so they can drive. You can also take control of the other persons screen remotely but from experience this is a bit laggy.
Project Management - JIRA with JIRA Agile This became even more useful when we moved to a more Agile and Scurm environment. The sprint planning and Scrum board features have made it a lot easier to coordinate and see what is being actively worked on at any one time.
Source Control - Stash (Git) I find Distributed Source Control a must have these days and any of the offerings will most likely do the job. We use Git with Stash which has the added benefit of offering pull requests.
Anything Else?
There are plenty of other tools that do the same or similar to above which are probably equally as good this is just a list of what we’ve found works for us. If there’s any life changing tools you think are missing let me know as I’m always interested in anything that could make life easier.
How I’ve Found It
In short I love it. It’s probably not for everyone and does require discipline. After 2 years of being remote I really can’t imagine commuting in to an office again now.