I've been working remotely for the past 6 years now. I can't believe it has been so long already.
Quick explanation. I've started to work remotely for good reasons : I
have a 7 years old kid that lives with his mother in Dijon, France.
Since I am not with her anymore, I need to stick around Dijon in order
to see my boy as often as possible. Until he's old enough to visit me
elsewhere by himself ;)
6 years earlier, working remotely was not really possible in France. Companies were reluctant to do it because they thought they were unable to control their employees if they were not physically present.
But in the software industry, a well-organized company has no reasons to be reluctant to remote workers. As long as the proper tools and the proper processes are set, a remote developer (and under some circumstances a manager) is more efficient if he works from home. And it makes the company save some money in most cases (less office space to rent, etc.)
Some XP/Lean methodologies are organized around the fact that the whole team is physically present but it's quite simple to adapt the rules to integrate remote people. Skype and other tools are working fine these days.
Of course, I don't think a 100% remote work is doable: you have to meet people physically on a regular basis. That's important because a meeting in person is better in specific phases in software projects. (launch and design phases)
Anyways, here's a condensed list of tips if you have never worked remotely and might do it.
I hope you will find them useful. And if you are a remote worker and have other tips, please comment this blog post.
Tip #1 - Everything you do, should be done in a VCS and an issue
For all aspects of a software project, it's important to use a Version Control System (I use Mercurial) even for your design notes or documentation. Trust me, that's the only efficient way for other people that need to work on the same parts you are working on to stay informed. Listing the history of a file in a (D)VCS gives the reader a good understanding of what's going on.
The only problem with this approach is that everyone in the team needs to know how to use a VCS. Marketers and other people that are not used to developers tools might be reluctant with this, but there are GUI tools now on the top of every good VCS system (like Tortoise).
Like the VCS, using a good issue tracker to track every task that is done is very important. And issues should be linked to VCS changesets and vice-versa.
I use for instance Bitbucket with Mercurial, and they have a nice plugin that will add a comment to an issue with a link to a changeset, if you use the proper tag in the changeset comment when you push your change. All issues trackers do this these days: Trac, Jira, etc.
Tip #2 - A daily over-the-phone quick meeting is a good idea
The best way to follow what other people are doing in the project is to have quick meetings every day. I don't think it's a good idea to have the meeting in the morning, because people don't start their work at the same time and it's better to discuss what's hot (==what you have done during the day.). So I like evening meetings better.
A short meeting on Skype or over the phone, that doesn't last more than ten minutes, is perfect. It will "force" you to briefly summarize what you have done during the day before the meeting starts. Doing these brief summaries is a great exercise for yourself too: it helps you understand where you spend your time.
And don't do these meetings over IRC or chat: a voice meeting is faster, and is a good opportunity to "humanize" your work day a little bit. Spending a whole day at home working alone can be depressing sometimes, so hearing your colleague voices feels good.
Tip #3 - Your new office open-space is an IRC room
The best way to communicate instantly with your colleagues is a room in the Internet Relay Chat or any other IM system that allows several people to talk. I've also discovered lately Etherpad, which is the perfect IRC companion : a real-time collaborative text editor.
Tip #4 - Separate your private life from your work
Some people think that working at home means you work less, but that's a myth. Most of the time, you work more because it's so easy to finish something you have started, when you are at home. It's not fun to work alone in the evening in a big open space once other people have left .
But working late at home is a very dangerous habit for your private life. Your wife and kids will start to hate your work. So be sure to have office hours and to separate physically your office from the rest of the house.