There was a great discussion today on Hacker News, about experiences with remote working. I thought I'd re-post our experiences here, as my comments on the original question seem to have been well received. I've edited this a little for clarity.
Testled has seven people, all working remotely. That breaks down into three developers, one front-end developer, one designer, one salesperson, one administrator. I'm a director, but I've counted myself among the developers as that's what I spend around 60% of my day doing.
Our experience with remote working has been largely very positive.
- It keeps our overheads very low. I think that when we remove our staff wage bill, our operating expenses are about £200 a month, which is mainly service subscriptions. If we accommodated everyone in an office, we'd be looking at spending at least £3000/month on rent alone. This cash being available has meant that we can expand the company quickly, pay developers well, and still afford to take the team out to conferences and the occasional get-together and night out.
- Remote working means that your processes and working practices need to extremely well defined from the outset. All our interactions are online, so clear, unambiguous communication and good project organisation and management are essential. Of course, there is an overhead in this level of communication that might not be necessary if we were co-located, but I think that overall it benefits us.
- We are also able to expand our hiring pool. We've recently taken on a freelancer in Poland part-time (we knew him from when he lived in the UK), and we're not making adjustments to suit him; we're already well adapted.
- The tools which exist make up for a great deal of the shortcomings of remote working (we use Skype, Trello and HipChat mainly, with the occasional VNC/Skype screenshare session). This is a huge contrast to even a couple of years ago,
The disadvantages are almost entirely human factors:
- I think it's easy to 'hide' from the team if a developer is having a problem (either with their code, or their motivation). It's easy to coast through an unproductive day and there is often a delay in the other team members realising that a project is falling behind schedule. This is a problem which we're mainly trying to solve with visibility. We are considering adding a feature to our HipChat bot (which shares commit messages, Jenkins feedback etc), to just post "What are you working on" into the group chatroom once an hour. Like most problems, I think it can be solved with a bit of self-reflection and better communication.
- Sometimes working remotely can feel isolating. A few of our developers who live near to each other sometimes meet up at one location and work for a day, and I get feedback that everyone feels refreshed after. We have quarterly 'get together days', where we talk mainly about strategy and review our processes and performance, but I think we need to start having 'work together days', just to keep the morale and motivation high.